- ベストアンサー
エクセルファイル(book)のシートの内容をCSVファイルにおとしたい
こんにちは。 VB初心者です。 実はVBではなく、Excel VBAで行なっているのですが。 ここに質問していいかもよく分かってないのですが。 プログラムの処理としては、あるBookのシートの内容を 別のCSVファイルとして生成したいのです。マクロを組んだのですが、一つ問題があって困っています。 問題: 生成したCSVファイルが一度Window上に表示されて (それはいいのですが、あとで閉じますから) 以下の確認メッセージがでてしまいます。 「outFile.csvはExcel97のファイル形式では、ありません。変更を保存しますか?」 要はプログラムがここで、一旦ユーザアクションを要求してしまうのです。 アクションなしに普通に終了させたいのですが。 マクロではなくVBだったらこんなことはならないのでしょうか? 初心なのでよく分かりません。 もしくはもっとほかの簡単なコードできるのでしょうか。 以下にコードを記述します。 Sub OutFile() Dim myWBpath As String myWBpath = ActiveWorkbook.Path Workbooks.Open FileName:=myWBpath & "\testData1.xls" Sheets("sheet1").Select ActiveWorkbook.SaveAs FileName:="C:\outFile.csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Application.DisplayAlertsをFalseにすることでSaveAsでの警告の表示を停止することができます。 Closeでの変更保存のメッセージは、SaveChangesをFalseにすればOKです。 この修正を含めてちょっと手を入れてみました。 Sub OutFile() Dim myWBpath As String Dim objBook As Workbook Err.Clear On Error GoTo OutFile_Err '画面の更新を停止してい処理を高速化 Application.ScreenUpdating = False 'パス名の取得 myWBpath = ActiveWorkbook.Path If Right(myWBpath, 1) <> "\" Then myWBpath = myWBpath & "\" End If 'ワークブックをオープン Set objBook = Workbooks.Open(Filename:=myWBpath & "testData1.xls") '警告の表示を停止 Application.DisplayAlerts = False '開いたワークブックのSheet1をCSVで保存 objBook.Worksheets("sheet1").SaveAs Filename:="C:\outFile.csv", _ FileFormat:=xlCSV, CreateBackup:=False '開いたワークブックを閉じる objBook.Close SaveChanges:=False '変数の開放 Set objBook = Nothing OutFile_Err: 'エラー発生時の処理 If Err.Number <> 0 Then MsgBox Err.Description, vbExclamation, "エラーの報告" End If '警告の表示の再開 Application.DisplayAlerts = True '画面更新の再開 Application.ScreenUpdating = True Exit Sub End Sub
その他の回答 (1)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Saved を使用すると回避できます。。。 Sub OutFile() Dim myWBpath As String Dim xlBook As Excel.Workbook Const outCsvFile As String = "C:\outFile.csv" 'CSVファイルの削除 On Error Resume Next Kill outCsvFile On Error GoTo 0 '画面描画停止 Application.ScreenUpdating = False 'ブックパス取得 myWBpath = ActiveWorkbook.Path 'ブックオープン Workbooks.Open Filename:=myWBpath & "\testData1.xls" Set xlBook = ActiveWorkbook With xlBook 'シート1を出力 .Sheets(1).Select .SaveAs Filename:=outCsvFile, FileFormat:=xlCSV, CreateBackup:=False '擬似的に保存したようにする .Saved = True .Close End With '画面描画再開 Application.ScreenUpdating = True MsgBox "終了" End Sub