• ベストアンサー

VBAでファイルを閉じる時の応用を教えて下さい。

mar00の回答

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

単純に主ファイルを閉じるときに副ファイルを閉じるだけであれば Sub auto_close() On Error Resume Next Workbooks("****.xls").Close End Sub のようにすれば 副ファイルが開いていなくてもエラーを回避できると思います。

Hiro_World
質問者

お礼

mor00さんありがとうございました。 ご回答頂きましたが 現状が正しく説明出来なくてすみません。 下記の様に主ファイルには記述していますが、 副ファイルすなわち「"項目.xlsx"」が先に終了した後に 主ファイルがエラーを起こしてしまう事を回避したいのです。 以上、よろしくお願いします。 -------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("項目.xlsx").Activate ActiveWorkbook.Close End Sub

関連するQ&A

  • エクセルファイルを開いた時にVBAを自動実行させるには??

    こんにちは。いつもお世話になっています。 エクセルで作ったファイルを開いた時に、VBAを自動実行させたいのですが、どうすれば良いのでしょうか? 自分なりに調べたのですが、メッセージボックスを出す方法しかわかりません・・・。 別にVBA名を入れてもさっぱりダメです。 どうぞよろしくお願いします。

  • VBAにおいて、ファイルの移動にMoveFileを使っていますが、

    VBAにおいて、ファイルの移動にMoveFileを使っていますが、 移動先に移動元と同じ名前が存在する時、エラーが発生してしま います。これを回避して、移動することはできないのでしょうか。 (移動先に移動元と同じ名前が存在しても、上書きで移動。) また、MoveFile以外の方法はないのでしょうか。 教えて下さい。

  • ファイル名を指定しないVBAは?

    既に開いているエクセルファイル(元ファイル)があり、 そこに、別のエクセルファイル(後ファイル)を開いてその情報を 「元ファイル」に取り込んだら、自動で「後ファイル」が閉じるように VBAマクロを組みました。 が、「後ファイル」は常に同じなので、ファイル名を指定して 開閉するようにしていますが、 「元ファイル」は、名前が常に違います。 ファイル名を指定せず、先に開いているファイルをActiveにするには どうしたらいいですか? 今は、新しいファイルを作成して、エラーが起こったら Windows("○○○.xls").Activate ○○○の部分に新しいファイル名を入れています。 よろしくお願いします。

  • エクセルVBAを保存時に消したい

    はじめて質問させて頂きます。 エクセルのVBAを覚え始めたばかりの物ですが、 見積書式を作成し、見積番号をVBAでファイルOPEN時に自動挿入し 名前を付けて保存する時はその見積番号が保存する時にファイル名に なるようにVBAを作成しました。 見積番号の呼び出し方法は 指定フォルダにある(.xls)ファイルの数+1としています。 ここで質問なのですが現状だと保存したファイルにはVBAが存在するので そのファイルの修正をする時マクロの実行の有無を聞いてきます。 実行しないを選べば見積番号は変わらないのですが 間違えて実行してしまうとそのファイルの見積番号が変わってしまいます。。 回避方法として知り合いからアドインファイルにすれば?と言われて 保存形式をxlaにしたのですがエラーが出てしまいました>< Const FPath = "C:\指示書" Sub Auto_Open() 'xlsファイル検索 With Application.FileSearch .NewSearch .Filename = "*.xls" .FileType = msoFileTypeAllFiles .LookIn = FPath .SearchSubFolders = False .Execute Cells(1, 21).Value = .FoundFiles.Count + 1 Cells(1, 21).NumberFormat = "0000" End With End Sub したから4行目のCells(1, 21).Value = .FoundFiles.Count + 1 でエラーが出てしまうようで。。原因がわかりません。 何が原因なのでしょうか?><

  • Word 2016 VBA で保存できない

    仕事で月次報告をするのですが、報告書が Word のファイルであり、ファイル名のパターンが決まっているため、VBA でファイル名を生成し、VBA のコードで指定したパスにファイル保存させたいと考えています。 そこで、いろいろと調べて以下のコードを作ってみたのですが、保存する際に [実行時エラー 5152: ファイル名が正しくありません] と表示されます。 試しに以下のコードのうち、ファイルの保存先のパスと保存するファイル名を & でつなぎ Msgbox で表示したところ、ファイルの保存先とファイル名は意図したとおりに生成されています。 SaveAs メソッドに問題があるのではないかと考えていますが、ちょっとこれ以上は私では対処することができませんでした。 恐縮ですが、エラーを回避し、意図したパスに自動的にファイル名を生成して保存できるようにするためのコードを教えていただきたく思っています。よろしくお願いします。 以下は私が作成したサンプルです。 ------------------------------------------------- Sub 保存() 'レポート対象月の取得 dtDate = Format(Date, "yyyymm") '保存先フォルダーの指定 dtSaveFolder = "C:\Users\UserName\Documents\" & Year(Date) & "\" 'ファイル名の指定 dtSaveFileName = "XXXX" & dtDate & "YYYY.docx" '保存の実行 ThisDocument.SaveAs FileName:=dtSaveFolder & dtSaveFineName, FileFormat:=wdFormatDocument End Sub -------------------------------------------------

  • VBAの更なる応用編

    度々すみません。 VBAで教えて下さい。 主ファイルYYYY.xlsmに下記の記述をしました。 副ファイルXXXX.xlsmがあります。 ------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("XXXX.xlsm").Close End Sub Private Sub Workbook_Open() Workbooks.Open Filename:= _ "XXXX.xlsm" Worksheets("Sheet1").Activate End Sub ------------------------------------------------- 以上で、YYYY.xlsmとXXXX.xlsmの場合、主、副の共に保存せずに 終了するにはどのようなコメントを追記したら良いですか。 ネットで調べた下記の内容は場所が悪いのか動作しませんでした。 Sub CloseWorkbook() Workbooks("XXXX").Close SaveChanges:= False End Sub

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

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

  • サーバー上のブックを開けない時(エクセルVBA)

    以前、同じ質問をしたことがあります。(QNo.3615620) 「ネットワーク障害などでサーバー上のエクセルブックが開けない時、かなり待たされてから次のメッセージが出ます。 実行時エラー'1004' 'Open'メソッドは失敗しました。'Workbooks'オブジェクト しかもその間、Ctrl-Breakも受け付けてくれません。 正確に待ち時間は計ったわけではありませんが、10分くらいでしょうか。 なんとかこれを回避して、早い時間にエラーメッセージを出してコントロールを戻すことはできないでしょうか? 以下のVBAでオープンしています。 Workbooks.Open Filename:=myFileName, Readonly:=True よろしくお願い申し上げます。 」 この時はネットワークに原因があるものと思い込んでおり、いただいた回答もVBAによるpingの発信及び受取りでした。 ところが、この症状が発生している状況で、Pingを行ってもほとんど瞬時に戻ってきました。 またDir関数で該当エクセルファイルを指定しても、直ちにコントロールが戻ります。 どうやら誰かが該当ファイルを排他制御で開いているのが原因の様です。 これを回避し、使えない場合直ちにメッセージを表示しコントロールを戻すことはできないでしょうか。 該当ファイルは使えなくて構いません。 エクセルが砂時計のままで何も受け付けない状態を回避したいのです。 よろしくお願い申し上げます。

  • VBAでファイルの保存を自動化する

    1. ID・パスワードを入れてログイン 2. カテゴリーリスト(20項目程)から1カテゴリーをクリック 3. カテゴリー内部にある csv○○.zip をダウンロード 以降2.3を全項目分繰り返す 自社サイトにログインし毎日行っている上記の作業を VBAにて自動化しようと悪戦苦闘しているものです。 1.2は問題無く組めたのですが3で躓いています。 色々試してみた結果としましては… まず、普通にVBAでcsvへのリンクをクリックさせてみましたが、 『ファイルの保存』ダイアログの状態から先へ進めず、 sendkeyでOKボタンを押す処理も試してみたが上手く動作せずに、挫折。 次に、URLDownloadToFileというAPIが使えそうだったので手を出してみました。 しかし、上記手順3の段階でのファイルのリンク先が、 どのメニューから入っても【~/csv.do?linkToQA=1】と共通のリンク先名になっており、 (※リンク名は同じだがダウンロードすれば違うファイルが落ちてくる) ダウンロード先のファイル名が分からない現状では、結局不可能なようでした。 あまりプログラミングに明るくないので詳細は分からないのですが、 リンク先は共通だが、手順2で入ったメニュー項目によって 自動的にダウンロードするCSVへのリンク先アドレスを振り分ける処理?を行っているようです。 ディレクトリ内部からcsv.zipを探し出せば直アドレスが分かるはず!と思い、 内部へ潜ってみたりもしたのですが分からず…。 この状況で、zip形式のcsvダウンロードの自動化するには一体どうすればいいのでしょうか? 何か良い手などがありましたら、ぜひご教示ください。

  • ACCESS(VBA)でエクセルファイルを開く時

    VBAでエクセルファイルを開いて処理していますが 一つのエクセルファイルを開いている時に(これは手操作) VBAからエクセルファイルを開くと 一瞬、開いたような反応を示すのですが すご、閉じてしまい 用を足しません こんな時、VBAで今開こうとするエクセルファイルを 優先的に開けたら、と思いますが むりでしょうか? よろしくお願いします