VBAを使用してエクセルファイルを自動的に上書き保存する方法

このQ&Aのポイント
  • VBAを使用してエクセルファイルを自動的に上書き保存する方法について説明します。
  • 参考書によると、Saveメソッドを使用するとよいと書かれていますが、上書き保存する場合は、一度も保存していないブックに対しては、Save asメソッドを使用する必要があります。
  • 現在、Save asメソッドを使用して保存することは可能ですが、保存する場所をVBAでファイルを開く際に指定したPathに自動的に上書き保存し、作業を行ったエクセルシートのみを閉じる方法については詳しい方のご指導をお願いします。
回答を見る
  • ベストアンサー

VBAを使用して自動的に保存する事について

 VBAでエクセルファイルを開き、そのエクセルファイルを上書き保存してファイルを自動的に閉じたいのですが…  参考書によると、Saveメソッドを使用するとよいと書いていますが、 上書き保存する場合は、一度も保存していないブックに対しては、Save asメソッドを使用するようにあります。  現在Save asメソッドを使用して保存は可能となりましたが、、、 保存する場所をVBAでファイルを開く際に指定した、Pathに指定し、 Msgボックスで保存する場所を表示させず、自動的に指定した場所にデータを上書き保存して、 作業を行ったエクセルシートを閉じたいのですが可能でしょうか??  エクセルシートを閉じる際は、VBAで作業を行うためのエクセルシートは開いたまま、作業のために開いたエクセルシートのみを閉じたいのです。  詳しい方がいらっしゃり、上記の事が可能であればご指導の程お願いします。  

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

  • ベストアンサー
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

たしかこんな感じです ファイル名はまたフルパスで指定してください Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=<ここにファイル名>, FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False Application.DisplayAlerts = True

chi-pan-kun
質問者

お礼

前回に引き続き、丁寧にご指導頂きありがとうございました。 私が目的とする事が、完璧に可能となりました。感動しました。ありがとうございます。

その他の回答 (2)

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.3

#1です おそらく前回のVBAの続きだと思われるので、前回のものに付け足してみました。 ※行頭の字下げ部分は全角空白にしています。 これで、メインのVBAの入っているWorkBookは開きっぱなしで、 作業(Target)のWorkBookは必要毎に開き、終了後に閉じる事になります。 dim i1 As integer dim i2 As integer dim TargetWorkBook As Workbook dim Path As String dim TargetFileName As String Path = "<実行パスを入れます>" Application.DisplayAlerts = False for i1=1 to 6  TargetFileNameTargetFileName = Path & Range("A" & i).Value & ".xls"  Workbooks.Open(TargetFileName)  for i2=1 to 3   '実行させたいサブルーチン(マクロ)を呼ぶ  next  TargetWorkBook.SaveAs Filename:=TargetFileNameTargetFileName _                 , FileFormat:=xlNormal _                 , Password:="" _                 , WriteResPassword:="" _                 , ReadOnlyRecommended:=False _                 , CreateBackup:=False  TargetWorkBook.Close next Application.DisplayAlerts = true

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

先ず、ワークブックをどうやって 作ったかにより話が違います。 Workbooks.Add → 新規 Workbooks.Open → 既存 新規の場合、WorkbookのPath プロパティが空文字列です。 SaveメソッドはWorkbookのPathと Nameで示されるファイル名に出力 するので、Pathが空文字列であると 規定のフォルダにBook1等の名前で 保存されます。通常、規定の場所は マイドキュメントです。以上のような 理由で、新規の場合はSaveAsで 「名前を付けて保存」にしなさい。 ということなのです。 既存のWorkbookではPathは何ら かの内容になっていますからSave メソッドで上書きできるということです。 掲題のご質問では「ファイルを開く」と なっていますので、既存のWorkbook ではないかと思います。 よって、Saveメソッドでよいでしょう。 新規に作る場合があるなら、何処に どんな名前で保存するかは運用上の 規約なので、それに従ってください。

chi-pan-kun
質問者

お礼

貴重なご意見ありがとうございます。参考にさせて頂きます。

関連するQ&A

  • エクセルVBAでの自動ファイル保存

    エクセルVBAを使い入力したシート(ファイル)を、一定のデータが 入力された時点で指定した場所に例えば作成日をファイル名にして自動 的に保存していくようにしたいのですが、プログラムはどのようにすればいいのでしょうか? 実現させたいプログラムは、このような感じにしたいです。 1.VBAで指定シートにデータ入力→2.データ数10個で自動的に日付をファイル名にして自動的に保存→3.更に、データ10個追加された時点で前に作成されたファイルを自動で更新→4.データの入力完了で更に自動で更新 2~4のプログラムをご教授お願いします。

  • Excelマクロでpdfを自動作成したい

    複数のExcelシートからなるブックを、pdfとして出力しています。 現在はJustSystemのJustpdf2ドライバを使っているのですが、これだとマクロで完全自動化できないことが判明しました。 ・PDFのフアイル名と保存場所 ・上書きかどうか をいちいち聞いてきます。 Excelマクロで完全自動化するには、 ・ファイル名、保存場所をマクロで指定できる。もしくはExcelファイルと同じ場所に同じファイル名で作成する ・1シート目は上書き、2シート目からは現存のpdf (前シートのpdf)に続けて保存できるように、マクロで「上書き」か「続けて保存」かを指定できる ことが必要なのですが、JustSystemに問い合わせたところ、Justpdf2では無理とのことでした。 上記のように、複数シートからなるExcelブックを、マクロで完全自動でPDF化できるドライバ、方法がありましたら、お教えください。

  • エクセルVBAについて

    こんばんは。エクセルVBAについてアドバイスをお願いします。 エクセルのシートをNotesにオブジェクトとして貼り付けて使用しています。 エクセルファイルを開いたときに「シートA」を表示させましてその後そのシート上のデータを参照しながら別のシート上で作業したいと思っています。 しかしファイルを開くと 「'Sheets'メソッドは失敗しました'Globalオブジェクト'」というメッセージが表示されてしまいます。 エラーがでた場所は下記の※印の場所です。 =============================================== Dim WORK As Long Dim DATA As Object Set DATA = Worksheets("シートA").Range("A1") ※ WORK = DATA.Value =============================================== 情報が足りない場合は追記お願いします。 アドバイスお願い致します。

  • エクセルでVBAを使用して1分毎にファイルを保存するプログラムを書きた

    エクセルでVBAを使用して1分毎にファイルを保存するプログラムを書きたいのですが、 よくわかりません。 常に上書き保存をするようにしたいと思っています。 どなたか教えてくださいm(__)m

  • 自動で.xlsを閉じて指定フォルダに移動させたい

    開いているエクセルファイルが多数あるのですが、今アクティブになっているファイルだけを、上書き保存→閉じる→指定したフォルダに移動までを自動で行なわせたいです。 ・上書き保存はマクロの記憶でできるのですが、閉じるをしてしまうとマクロを終了できない、指定したフォルダに移動はマクロではできなく、教えて下さいませ。ファイルの移動は、名前を付けて保存ではなく、そのファイル自体を移動させたいです。 移動させたいファイルは決まってなくて、その都度変わります。 Sub Macro1() ActiveWorkbook.Save End Sub ・現時点、開いているファイルの保存場所 C:\Documents and Settings\aaa\デスクトップ\作業用 ・移動させたいフォルダ C:\Documents and Settings\aaa\デスクトップ\作業用\保存用

  • VBA=一定時間エクセルの入力操作がない場合、自動的にそのブックを閉じたい

    共通でエクセルを使用していますが、時々エクセルを開いたまま外出したり、休憩したり する方がおり、別な方がエクセルを開いて作業をしたいと思っても、どこかで開きぱなしのことが時々あります。 そんな時のために、エクセルに何も入力等がない一定時間経過したら、自動で保存して閉じる機能を持たせたいと考えています。例えば入力が5分以上なければ自動的に閉じるように・・・・ 上書き保存は下記のVBAで機能するのは確認済みですが、これに「5分後」等のタイムの設定をしたいのですが可能でしょうか? 可能の場合、どのようなVBAになりますか?? よろしくお願いします。 ⇒ 'ブックの上書き保存 ActiveWorkbook.Save ' 保存確認を避けるため、保存済みにする ThisWorkbook.Saved = True ' 他にブックが開いていなければ、Excelを終了する If Workbooks.Count <= 1 Then Application.Quit ' 本ブックをClose ThisWorkbook.Close False

  • Excel VBA 保存 上書き保存されてしまう

    エクセルデータを閉じる時に元データとは違う場所にバックアップをとるように以下のようなコードを記述しました。(Excel内の一部のデータが何かしらのタイミングで消えてしまう現象が起き、どのタイミングで消えているのかを探るために誰かしらがデータを開いて閉じる時にその閉じた時間をファイル名にして保存させるというのが目的です) Sub Auto_Close() Worksheets("Sheet1").Select 'シート1を開く ThisWorkbook.Save '元データの保存場所に上書き保存 Filename = Format(Now(), "yyyy-mm-dd-hh-mm-ss") ThisWorkbook.SaveAs Filename:="\\●●\●●\●●\●●\●●\" & Filename & ".xlsm" '別の場所に名前をつけて保存 End Sub この別の場所に保存したデータ((1)とします)を開いて中身を確認してから閉じるともちろん再度閉じた時間をファイル名にして保存する((2))ことになるのですが、このとき上書きされるような形になってしまい(1)のデータが残りません。(1)が残るようにするにはどこを修正すればいいのでしょうか?

  • Excel2007 VBA日付を付けて保存したい。

    Excelブックを毎朝8時になると指定のフォルダに年月日を付けて自動保存(上書きではなく新規で)したいのですが、やり方が分かりません。 VBA初心者なのでよく分かりません。分かりにくい説明文で申し訳ないですが、教えて下さい。宜しくお願いします(^_^;)

  • ExcelのVBAで上書き保存を確認したい

    VBAでGetSaveAsFilename メソッドを使うと、[名前を付けて保存]ダイアログボックスがでます。 ここでファイル名を指定するのですが、このとき同フォルダ内に同ファイル名があった場合でも、何のメッセージボックスもださずに上書きされてしまいます。 同フォルダ内に同ファイル名があった場合のみ、「上書き保存しますか?」というメッセージボックスをだしたいのですが、どのようにしたらよいでしょうか。 教えてください。 よろしくお願いします。

  • VBAを使用して、htmlファイルを編集したい

    お世話になっております。 エクセルのマクロを使用して以下の操作を行わせる場合、 どのようなVBAを作成すればよろしいのでしょうか。  Dドライブ直下のAディレクトリに保存されている,B.htmlをメモ帳で開き、  アクティブなエクセルファイルの A1~D10 のセルを B.html に張り付けて、  上書き保存する。 自分でも色々調べながらVBAを作ってみたのですが、 htmlファイルの上書き保存が上手くいきません・・・。

専門家に質問してみよう