OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルファイル(book)のシートの内容をCSVファイルにおとしたい

  • すぐに回答を!
  • 質問No.165828
  • 閲覧数242
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 38% (46/121)

こんにちは。
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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル11

ベストアンサー率 49% (139/279)

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
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 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 ...続きを読む
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のテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ