• ベストアンサー

エクセルマクロでファイルを保存するとき

エクセル(2000)のマクロで、csvファイルを集計して、そのファイルをエクセル形式で保存しようとしています。 このとき、「カレンダー用データファイル」という名前で保存するように指定していますが、もし、同名のファイルが開いていたりすると エラーが出てしまいます。 マクロの中で、「カレンダー用データファイル」という名前のファイルが、現在開いていないか調べることが出来るのではと、いろいろ探してみたのですが、どうしても判りません。 どなたか 教えていただけませんか? また、同様のことを何度も繰り返すので上書き保存をしたいのですが、いちいち「同名のファイルがありますが上書きしますか?」というアラートを出さなくて住む方法もありましたら教えていただきたいです。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんにちは。 Application.DisplayAlerts = False でアラート表示が出なくなります。 使い終わったら必ず True に戻します。 例は、新規ブックに貼りつけて、一度保存してから実行します。 このマクロを含むブックと同じパスに、このブックのコピーを「ほげ.xls」という名前で作ります。ほげ.xlsが開いている時はメッセージを表示し、 On Error Resume Next で、万一コピーに失敗しても Application.DisplayAlerts = True を通過するようにしています。 Sub Test() Dim saveName As String, wb As Workbook  saveName = ThisWorkbook.Path & "\ほげ.xls"  For Each wb In Workbooks   If wb.FullName = saveName Then     MsgBox wb.FullName & "を閉じてからね。"     Exit Sub   End If  Next wb  Application.DisplayAlerts = False  On Error Resume Next  ActiveWorkbook.SaveCopyAs saveName  Application.DisplayAlerts = True End Sub

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

読みこんだブックに同名ブックが存在の判別のところだけです。 Module1に挿入して実行。2-3で実効済み。 新規分はBook1.xlsで無く、Book1で聞くこと。 Sub test02() Dim a As Workbook Dim bn as String ' bn = "bb1.xls" ' bn = "abc28.xls" bn = "Book1" For Each a In Application.Workbooks If a.Name = bn Then MsgBox bn & "があります" GoTo p01 Else End If Next MsgBox bn & "がありません" Exit Sub p01: End Sub

  • Fat01ton
  • ベストアンサー率46% (122/264)
回答No.1

アラーとを出さない方法はわかりませんが 現在開いていないかはもっと良い方法があるかとは思いますが こんな感じでも調べることが出来るかと思います。 Sub test() Dim i 'カウンタ For i = 1 To Workbooks.Count '※ ワークブックの数だけ繰り返す If ("カレンダー用データファイル.xls" = Workbooks(i).Name) Then MsgBox "ファイルを開いています" End If Next End Sub

関連するQ&A

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • エクセルでファイルをcsv形式で保存するマクロについて

    同様の質問が以前にあったのですが、 どうやら私のは少し違うようなので新規質問として投稿させていただきます。 エクセルファイルを保存する際、保存形式を「テキスト(タブ区切り)(*.txt)」にして、 ファイル名の拡張子の部分だけ(.csv)にして保存するマクロを作成したいです。 しかし、エクセルに付いているオートマクロ機能で記録しようとすると、 ・ファイル名がオートマクロを作成した際に付けたファイル名になってしまう。 ・保存場所がオートマクロを作成した際に保存したフォルダになってしまう。 という問題が発生します。 なので、 ・保存する際のファイル名は現在作業しているファイルの名前をそのまま使用する。 ・保存する際のファイル名の拡張子部分は(.csv)に変更する ・保存場所は現在作業しているファイルがあるフォルダにする(もしくはプログラムで予めパスを指定できる)。 ・保存形式は「テキスト(タブ区切り)(.txt)」 の4つの条件を満たすマクロの作成方法をお教えいただけますでしょうか? すみませんが、よろしくおねがいします

  • エクセルでファイル保存が出来ない…

    始めまして。 エクセル2000で作成したファイルを エクセル2002で開きました。 そのまま上書き保存をしたいのですが 数人と共有する為、保存形式を下記のようにしたいと 思っています。 Microsoft Excel 97-2002および5.0/95ブック(*.xls) ところが、2002で開いていると保存の際に 「ファイルが保存できません」と出てしまいます。 名前を変えてみてもダメで、 保存形式を Microsoft Excelブック(*.xls) にしてみてもダメでした。 元々作成した時のPCがエクセル2000だったので 新しい機能があるため保存出来ない…とかでは なさそうなのですが…。 ちなみにファイルの中には 複数のマクロが組まれています。 (データをクリアして新しく計算式を貼り付ける等) マクロを組む事で何か原因があるのでしょうか。 皆様の知恵をお貸し下さい。宜しくお願いします。

  • エクセルのマクロ 保存フォルダ選択

    エクセルのマクロで以下の事を行いたいのですが、上手く行かずに悩んでおります。 どなたかご教示ください>< 前提:範囲指定した部分をcsvで出力 1.csvの保存フォルダを指定したい (\\192.168~などのネットワークドライブ) 2.形式はデフォルトでcsvを選択した状態にしたい 3.ファイル名を「年月日売上表」にしたいので、デフォルトでファイル名部分に「売上表」と入れたい 年月日は都度手動で変更して保存したいので、上記のフォルダ選択→名前を付けるところまでとマクロで行いたい。 どなたかお知恵をお貸し下さい。

  • エクセルでマクロを使ってCSV保存時のファイル名

    初めてエクセルでマクロ(マクロの記録と言うのを使って)をトライしている初心者です。自分なりに色々調べて見ましたが、イマイチ分からないので以下2つ教えて頂けないでしょうか? 他のアプリに取込む為、通常使っているエクセルのデータをCSV形式で保存するまでをマクロで作成しマクロボタンまでを作ることは出来ました。それを使いたいと言う同僚が何人かいて、その人にエクセルを渡す場合についてです。 (1)CSV保存するファイル名を、各人好みの元々のエクセルのファイル名にしたい。 (2)保存する場所を、同僚各自のデスクトップにしたい。または各自に指定して保存させたい。 のですが、私が記録したマクロの保存該当部分は以下と思いますが、自分用なので、自分のPCの名前(以下、XXXX部分)になっていて、かつ自分が指定した毎回同じファイル名(以下、AAAA部分)になっているのが問題で、同僚のPCではマクロが実行できませんでした。 この、XXXXとAAAAやその前後の言葉をマクロの修正(VBAで)で書き換えればいいのでしょうか?その場合どのようにすればいいか教えてください。 ChDir "C:\Users\XXXX\Desktop" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\XXXX\Desktop\AAAA.csv", FileFormat:=xlCSV, _ CreateBackup:=False End Sub 長くなりましたが、どうぞ宜しくお願い致します。

  • Excel マクロのsaveasでファイル保存の方法で教えて下さい

    Excel2003で、USBメモリ上の2つのファイル(マクロを保存したmacro.xls及び作業を行うsagyo.xls)を開き、マクロをかけて、最後にxlsファイル形式で上書き保存したいのですが、 (1)ActiveWorkbook.Save で、上書き保存を行うと、なぜかUSBメモリ上にhtmlファイル保存されてしまいます。このため、xlsファイル形式保存をあえて明示し、saveasの既定値であるxlWorkbookNormalを指定し、 (2)ActiveWorkbook.SaveAs , FileFormat:=xlWorkbookNormal とすると、(カレントフォルダである)マイドキュメントに保存されてしまいます。 Q1.(1)のようになる原因は何でしょうか? Q2.USBメモリは、他のPC環境でも使うので、「saveas "F:\sagyo.xls"」などとドライブ指定せずに使いたいのですが、USBメモリ上に上書き保存するマクロの書き方はないでしょうか?

  • エクセルでCSV形式で保存するマクロを作成したい。

    sheet1,sheet2,sheet3とあります。 そのうちsheet3だけを毎回「data.csv」のcsv形式で保存して画面を閉じ、 元のWorkbookは上書き保存しつつ画面は閉じないようなマクロを作成したいのですが。 よろしくお願いします。

  • 『保存』のマクロを違う名前のファイルでも実行したい

    マクロ初心者です。 CSVファイルの数字の羅列をエクセル上に並べグラフにするマクロを作りました。 今度はそれをエクセルファイルとして保存したい。 見よう見まねで保存のマクロを作ってみましたが、 その際、このマクロを他のCSVファイルで実行しようとすると マクロを作ったファイル名に保存しようとします。 (例)Book1 で作ったマクロはBook2のファイルで同じマクロを実行するとBook1に保存しよう(上書き)とします。 これをその時開いて作業しているファイル名で自動的に保存させるには どうしたらいいのでしょうか? (例)Book1で作業してる時は保存名をBook1に、 Book2で作業しているときは保存名をBook2にしたい。 説明が下手で申し訳ありませんが、この様な事がマクロでできるのでしょうか?また、できるとすればどこをどのようにすればいいのでしょうか? 教えてください。よろしくお願いします。

  • 【Excel】Excelで作ったファイルをCSVで保存するには?

    超初心者な質問ですみません。(>_<) Excelで作成したファイルをCSVで保存したいんです。 (1)Excelファイルを開く。 (2)「名前をつけて保存」を選択し、ファイル名のお尻にYYYYMMDDをつけ(Product_20050901.csv)、「ファイルの種類」を「CSV(カンマ区切り)」にして保存する。 (3)指定フォルダにCSVファイルが作成される。 (4)出来上がったCSVファイルを開こうとすると、「SYLK:ファイル形式が正しくありません」という警告が出てファイルが開かない。 という現象が起きてしまいます。 何がいけなかったんでしょう? どうしたらCSVで保存できますか?教えてください!

  • Excel CSVファイル セル名を名前として保存

    いつもありがとうございます。エクセル2003XPです。 毎回USBメモリーに上書きされてくる、同名のCSVファイルを別エクセルファイルに読み込む作業をしております。 その作業は外部データの読み込みを記憶マクロとして問題ないのですが、エクセルに読み込んだCSVファイルは、かぶらないようにそのつど、Kill を使い削除しております。 ただ完全に削除なので対策として、 読み込んだCSVファイルの1行目のセル名をファイル名として名前を変えて保存、 PCの"C:\Documents and Settings\元データ に毎回CSVもしくは、エクセルファイルに名前を変更して保存する処理をボタンひとつで出来ないか、考えております。 ネットで色々と検索をしておりますが、勉強不足です。 参考でサンプルマクロは見つけましたが、どのように変更すれば良いか分かりません。ご享受いただければ助かります。 CSVファイル名 : log001.csv(毎回、USB) 保存したいファイル名 : CSVファイルを開いた時のA1のセル名(日付です) 保存場所 : PCのマイドキュメントの元データファイル 保存したいファイル形式 : CSVもしくはExcelファイル Sub THSFILE_SAVE() Dim myFname0 As String Dim myFname As String On Error GoTo ERRH '現在のファイル名取得 myFname0 = ThisWorkbook.Name '新しいファイル名をセルA1の値とする myFname = Sheets(1).Range("A1").Value '同じ階層に保存 ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & myFname If myFname0 <> myFname & ".xls" Then '前の名前のファイルを削除する場合は下の一行を有効にしてください 'Kill ThisWorkbook.Path & "\" & myFname0 End If Exit Sub ERRH: End Sub この処理はCSVファイルの読み込み先のエクセルファイルから、行いたいと考えております。 よろしくお願致します。

専門家に質問してみよう