• ベストアンサー

エクセル:シートを1つずつ別ファイルで保存する際に

WindowsXPでExcel2003を使っています。 1つのエクセルファイルの中にSheet1,Sheet2,Sheet3というシートが3個あり、 それらのシートを1枚ずつCSVファイルとして保存したいです(Sheet1.csv、Sheet2.csv、Sheet3.csv)。 現在のコードは以下です。   Path = 保存場所 For Each SheetName In Array("Sheet1", "Sheet2", "Sheet3") Worksheets(SheetName).Copy ActiveSheet.SaveAs Filename:=Path & SheetName, FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close False Next SheetName このコードだと、新しいBookを開いてコピーし、それを閉じる、 という作業を繰り返しているらしく(自分で一から組んだわけではなく、コード完全に理解できてません)、 タスクバーがちらつきます。 ここに挙げたコードでは3シートですが、実際は20シート程あるので、 タスクバーの「開く・閉じる」の繰り返しはちょっと目立ちます。 これ以外の方法で(とりあえずタスクバーがちらつかなければOK)、 各シートを別ファイルとして保存することは不可能でしょうか? 自分だけが使いたいわけではないので、 タスクバーを隠しておくなどWindows側の設定以外で何か方法があれば、よろしくお願いします。

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

  • ベストアンサー
  • Bickyon
  • ベストアンサー率41% (42/101)
回答No.2

>新しいBookが表示されては消えていくという操作が高速で繰り返されることによってちらちらする、 >という状況の改善案についてだったのですが、 単純な方法ですが、メニューバーの「ツール」-[オプション」で、 表示タブの右上にある「ウインドウをタスクバーに表示」のチェックを はずせば、お望みの結果が得られると思います。

rem_1982
質問者

お礼

回答ありがとうございます。 完璧に望んだ結果になりました! ありがとうございます。 色々設定があるものですね~、オフィス系ソフトには。

その他の回答 (1)

  • taka0028
  • ベストアンサー率33% (19/57)
回答No.1

Application.ScreenUpdatingを使うと画面更新しないのでちらちらはなくなりますよ。 Application.ScreenUpdating = False CSV出力ロジック Application.ScreenUpdating = TRUE でどうですか?

rem_1982
質問者

補足

回答ありがとうございます。 Application.ScreenUpdatingを組み込んみたところ、 エクセル画面のシートのちらつきはなくなりました。 何故かエクセル画面上のちらつきは気にしてませんでしたが、このApplication.ScreenUpdatingは使わせてもらおうと思います。 質問したのは画面下のタスクバー内で、 新しいBookが表示されては消えていくという操作が高速で繰り返されることによってちらちらする、 という状況の改善案についてだったのですが、 こちらは物理的(?)に不可能でしょうか? 同じエクセルの枠内に新規Bookを作成しても、 (Excelファイルを開くと「Microsoft Excel」という大きな枠の中にBookが表示されますよね)、 タスクバーには別アイコンとして表示されるから不可能なのかもしれないとも思うのですが。

関連するQ&A

  • 決められたセル範囲のみ別ファイルに保存するマクロ

    Book内のシートSheet1,Sheet2,Sheet3を別個のCSVファイルSheet1.csv/Sheet2.csv/Sheet3.csvとして保存したいです。 過去ログを参考に以下のコードで正常に動作しました。 For Num = 1 To 3 SheetName = "Sheet" & Num Worksheets(SheetName).Copy ActiveSheet.SaveAs Filename:=myPath & SheetName, FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close False Next ここで、 決められたセル範囲A1:D5に書かれたデータのみをCSVファイルとして保存する、 といったことをしたいのですが、記述の仕方を教えてください。 その範囲以外が削除されてしまっても構わないので、 その範囲以外をクリアしてから保存を実行、というコードも組んだのですが、 上書き保存されているシートに対して行うとクリアする前の状態のシートをコピーするようで、失敗しました。 Worksheets(SheetName).Copyの部分を、 Sheets(SheetName).Select Range("A1:D5").Copy と変えてみたのですが、マクロを実行したファイルが閉じてしまい、巧く動きません。 ※myPathには保存先フォルダのパスが入ります。 また、保存の際に「同名のファイルがあるが、上書きするか?」のメッセージを出さずに強制的に上書きにする方法はありますか?

  • ExcelのマクロでCSVファイルを開くと遅いのですが

    ExcelのマクロでCSVファイルを開くと遅いのですが速く開く方法はありますか? 普通にファイル-開くに比べてかなり遅いです。 下記のVBAで記述してあります。 Workbooks.Open Filename:=fname ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close savechanges:=False

  • エクセルVBAでファイルをCSV保存の仕方

    エクセルのシートをCSVファイルに保存するため以下のようなマクロを書きました。 Sub Macro1() Cells.Select Selection.Copy Workbooks.Add ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs FileName:="C:\WINDOWS\デスクトップ\Book1.csv", FileFormat _ :=xlCSV, CreateBackup:=False ActiveWindow.Close ThisWorkbook.Activate End Sub 一応これで保存できるのですが、自動記録でやったためファイルの名前が出てしまいました。 この部分をわたし以外の誰でも任意の名前をつけ、任意のフォルダーに保存できるように書き換えたいのです。 どのように記述すれば良いかお教えください。お願いします。

  • エクセル VBA 保存したCSVファイルについて

    いつもお世話になっています。 早速ですが カンマ区切りのテキストファイルをカンマ区切りで読み込んだあと変更を加え ActiveWorkbook.SaveAs Filename:="Book2.csv", FileFormat :=xlCSV, CreateBackup:=False で保存したものを メモ帳などで開いた時に 不要な箇所にカンマの不要な箇所に沢山カンマが付いてしまいます。 M列まであるのでその分の空白もカンマ区切りで保存されてのだと思うのですが これを、不要な部分の空白を除いた形で保存する方法は無いでしょうか? どうぞよろしくお願いします

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

  • (VBA)書式が変更されてしまいます

    ↓SaveAsで保存すると書式が変更されてしまいます。 ActiveWorkbook.SaveAs FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close False ネットで↓の回避策を見つけたのですがうまくいきません。 **************************************************************** Sub CSV_Save() 'Sheet1をCSV形式で保存します。 With ActiveWorkbook.Sheets(1) 'A1:A10まで日付あるいは通貨設定のデータが入っているとします。 For Each rng In Range("A1:A10") 'テキスト文字列に変更します。 rng.Value = "'" & rng.Text Next rng End With ActiveWorkbook.SaveAs FileName:="C:\test.csv", FileFormat:=xlCSV End Sub **************************************************************** ご指導お願いします。

  • VBAでSaveAs使用し、指定していないのにデスクトップに保存される理由

    VBAで構文中に ActiveWorkbook.SaveAs FileFormat:=xlCSV, _ CreateBackup:=False という記述をしました。すると、保存場所を指定していないのにデスクトップに保存されてしまいます。まず、なぜでしょうか?また、保存場所の指定はどのようにすればよいでしょうか?

  • ExcelVBAでテキスト保存

    ExcelVBAを使って、ワークシートをテキストファイルに保存しようとしています。 CSV形式で保存するときは、   Sheets("test").Activate   ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".csv", _     FileFormat:=xlCSV, CreateBackup:=False でtest.csvに保存できますが、 単純にテキストファイルとして保存したいときに   Sheets("test").Activate   ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".txt", _     FileFormat:=xlText, CreateBackup:=False としても、実行時に下記のエラーになってしまいます。   実行時エラー '1004'   アプリケーション定義またはオブジェクト定義のエラーです。 どうしたらよいのでしょうか? また、CSVで保存した時も開いているファイルがtest.csvに変わってしまいますが、できれば、開いているファイルは元のファイルのままでシートだけを保存するにはSaveAsメソッドではなく、他のメソッドを使うのでしょうか? (hogehoge.xlsのtestシートを保存してもhogehoge.xlsが開いたままにしたい) 以上、宜しくお願いします。

  • EXCELのマクロで保存するときのメッセージ

    CSVファイルを上書き更新後、ファイルを閉じる作業をしたいのですが、EXCEL2000のマクロでその作業を行うと、次のメッセージがでて、次の手作業の要求がきます。 (1)ファイルの上書きするとき  この場所にAAAというファイルが既にあります。置き換えますか・・・はいのクリック (2)ファイルを閉じるとき  AAAへのファイルの変更を保存しますか・・・いいえをクリック この(1)(2)の作業も、マクロに書きたいのですが、どうすればよいのでしょうか 現在のマクロは ActiveWorkbook.SaveAs Filename:= _ "C:\AAA.csv" _ , FileFormat:=xlCSV, CreateBackup:=False ActiveWindow.Close よろしくお願いします

  • エクセル:シートを保存するマクロ

    あるエクセルファイルFile.xls内に、4つのシートSheet1,Sheet2,Sheet3,Sheet4があるとして、 4つのシートを個別にcsvファイルとして保存するようなマクロを作りたいです。 ▼ソースです  (ここまでのコードで、Pathに保存先のディレクトリ名を取得する部分があるとお考えください)  Filename = "Sheet1" '保存するシート名は、Sheet1~4 GoSub Save1 Filename = "Sheet2" GoSub Save1 Filename = "Sheet3" GoSub Save1 Filename = "Sheet4" GoSub Save1 '保存完了後は、File.xls内Sheet1のCells(4, 1)にカーソルを配置。 Sheets("Sheet1").Select Cells(4, 1).Select Exit Sub Save1: Sheets(Filename).Select fname = Path & "\" & Filename & ".csv" ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, CreateBackup:=False Return End Sub 以上のソースで実行すると、 指定したディレクトリにsheet1.csv、sheet2.csv、sheet3.csv、sheet4.csvの4ファイルができます。 ここまでは問題ないのですが、 マクロを実行後、Sheet4.csv(最後に保存したファイル)が開かれた状態になってしまいます。 しかも、ファイル名はSheet4.csvなのに、シートSheet1~4を持っている状態です。 普通にSheet4.csvファイルを開くと、シートはSheet4しかありません。 状態が伝わるでしょうか? File.xlsのマクロを実行しているので、実行完了後もFile.xlsを開いておきたいのですが、 どのような記述を加えればよいでしょうか? マクロ(VBA)は使い始めたばかりなので説明されても理解できないかもしれませんが、 できればよろしくお願いいたします。

専門家に質問してみよう