Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


23371 / 76738 ←次へ | 前へ→

【58734】Re:CSV出力について
お礼  お困りです  - 08/11/6(木) 10:35 -

引用なし
パスワード
   ▼kanabun さん:
>▼お困りです さん:
>
>>ここでエラーが出たのですが、”パス名が無効です”
>>構文は→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, ",");
>
>としてください。

すいません遅くなりました。
ご指導ありがとうございます。
少しやってみますので、もしうまくいかないようでしたらまた質問いたしますので
よろしくお願いします。

0 hits

【58669】CSV出力について お困りです 08/11/4(火) 14:05 質問
【58671】Re:CSV出力について kanabun 08/11/4(火) 14:29 発言
【58672】Re:CSV出力について お困りです 08/11/4(火) 15:02 質問
【58675】Re:CSV出力について kanabun 08/11/4(火) 15:20 発言
【58684】Re:CSV出力について お困りです 08/11/4(火) 16:57 質問
【58685】Re:CSV出力について アルファ 08/11/4(火) 17:12 発言
【58686】Re:CSV出力について kanabun 08/11/4(火) 17:37 発言
【58689】Re:CSV出力について お困りです 08/11/4(火) 19:40 質問
【58690】Re:CSV出力について kanabun 08/11/4(火) 20:37 発言
【58734】Re:CSV出力について お困りです 08/11/6(木) 10:35 お礼
【58747】Re:CSV出力について お困りです 08/11/6(木) 14:30 お礼

23371 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free