• ベストアンサー

エクセルファイル(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

質問者が選んだベストアンサー

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.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)
回答No.1

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

関連するQ&A