| 
    
     |  | ▼お困りです さん: 
 >ここでエラーが出たのですが、”パス名が無効です”
 >構文は→Open CSVファイルパス For Output As #1のところです。
 >ご迷惑掛けますがご指導お願いします。
 
 あれ、 CSVファイルパス という変数に CSVファイルパスを代入しないと
 ダメですよ〜〜
 
 UserFormに CommandButtonを2つおいて、↓を実験してみてください。
 
 '------------------------------------------- UserForm
 Option Explicit
 
 '範囲を新規BookにCopyして xlCSV形式で保存
 Private Sub CommandButton1_Click()
 Dim Target As Range
 
 Set Target = ActiveSheet.UsedRange.Resize(, 8)
 Target.Select
 If MsgBox("この範囲をCSV保存しますか?", vbOKCancel) _
 = vbCancel Then Exit Sub
 
 Dim SaveFile ' CSVファイルパス
 SaveFile = CreateObject("WScript.Shell"). _
 SpecialFolders("DeskTop") & "\T123.Csv"
 SaveFile = Application.GetSaveAsFilename(SaveFile, "CSV,*.csv")
 If VarType(SaveFile) = vbBoolean Then Exit Sub
 
 '(1)新規Bookをシート枚数1枚で 追加する。
 Dim SaveCount&
 Dim NewBook As Workbook
 With Application
 SaveCount = .SheetsInNewWorkbook
 .SheetsInNewWorkbook = 1
 Set NewBook = Workbooks.Add
 .SheetsInNewWorkbook = SaveCount
 End With
 
 '(2) 元のBookの指定シートのUsedRange.Resize(,8) の範囲を _
 Copyして、新規BookのSheets(1).Range("A1")に貼り付ける。
 Target.Copy NewBook.Sheets(1).Range("A1")
 
 '(3)新規BookをCSV形式で保存する
 With NewBook
 .SaveAs SaveFile, xlCSV, Local:=True
 .Save
 .Close
 End With
 MsgBox "CSV形式で保存しました", , SaveFile
 
 Set Target = Nothing
 Set NewBook = Nothing
 End Sub
 
 
 '範囲をクリップボード経由で CSV出力
 Private Sub CommandButton2_Click()
 Dim Target As Range
 
 Set Target = ActiveSheet.UsedRange.Resize(, 8)
 Target.Select
 If MsgBox("この範囲をCSV保存しますか?", vbOKCancel) _
 = vbCancel Then Exit Sub
 
 Dim CsvFile ' CSVファイルパス
 CsvFile = CreateObject("WScript.Shell"). _
 SpecialFolders("DeskTop") & "\TCB123.Csv"
 CsvFile = Application.GetSaveAsFilename(CsvFile, "CSV,*.csv")
 If VarType(CsvFile) = vbBoolean Then Exit Sub
 
 
 '指定範囲をClipboardにCopyして、 _
 TAB区切りをComma区切りに直して出力
 Dim io As Integer
 io = FreeFile()
 Open CsvFile For Output As io
 Target.Copy
 With New DataObject
 .GetFromClipboard
 Print #io, Replace(.GetText, vbTab, ",");
 End With
 Close io
 Application.CutCopyMode = True
 MsgBox "クリップボード経由で保存しました", , CsvFile
 
 Set Target = Nothing
 
 End Sub
 
 ※前述のとおり、
 CommandButton2 のクリップボード経由の方は、セルの表示形式のまんま
 出力するものですから、セルの値が 数値データで
 #,##0 のような書式設定がしてあると、 カンマ付きで出力されます。
 CSVファイルは データの区切りがカンマなので、読み取り不能なファイル
 になってしまいます。
 カンマ付き表示のセルがあるときは
 
 >    Print #io, Replace(.GetText, vbTab, ",");
 を
 
 Print #io, Replace(Replace(.GetText, ",",""), vbTab, ",");
 
 としてください。
 
 |  |