Hatena::ブログ(Diary)

みぞろぐ このページをアンテナに追加 RSSフィード Twitter

デル株式会社

2011-07-19

Excel VBAで特定のシートをCSV出力する方法

エクセルでデータ作ってCSV保存→システムで取り込みってよくあるパターンかと思うのですが、ユーザに保存するときにCSVで保存してくださいって毎回言うのめんどくさいなーと思うのは自分だけじゃないはず。

という事で今回は、今開いているファイルの特定のシートを同一ディレクトリCSVで保存する簡単なロジックをメモ
結構汎用的な作りにしてるからいろいろ便利なはず。
当初はExcel形式で保存する作りだったのでCSVでは必要なロジックも含まれてますが、まぁご愛嬌で

Public Function ExportCSV()
    On Error GoTo func_Err
    
    Application.ScreenUpdating = False  'レンダリングを止める
    Application.DisplayAlerts = False   'メッセージを出さない
    
    Dim strNewBookName As String
    strNewBookName = "新しいファイル名"
    
    'このファイルと同一ディレクトリに[変数:strNewBookName]の名前でCSV形式で保存(FileFormat:= の部分を変えると違う形式で保存できる。)
    Workbooks.Add.SaveAs Filename:=ThisWorkbook.Path & "\" & strNewBookName, FileFormat:=xlCSV
    
    'このファイルの[シート:strNewBookName]をコピーし上記で新しく作ったファイルの[シート:Sheet1]にペースト→保存→閉じる
    SheetCSV.Cells.Copy
    With Workbooks(strNewBookName & ".csv")                    'ファイル名の指定(別形式で保存する際はちゃんと拡張子あわせる)
        .Worksheets(strNewBookName).Range("A1").PasteSpecial Paste:=xlPasteAll    'すべて貼り付ける
        .Worksheets(strNewBookName).Range("A1").Select                            'シート全選択状態から[セル:A1]のみ選択状態に
        .Save
        .Close
    End With
    
    Call MsgBox("出力完了", vbInformation)
    
    GoTo func_End
func_Err:
    Call MsgBox("出力失敗", vbCritical)
func_End:
    Application.CutCopyMode = False     'コピーモードをオフ(コピー時に出る点線を消す)
    Application.DisplayAlerts = True    'メッセージを出す
    Application.ScreenUpdating = True   'レンダリング再開
End Function

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mizolog/20110719/1311039576