
お世話になっています。
マクロでワークブックを開いてシートを挿入したり
セルの値をコピーしたりしております。
その際、相手側のワークブックが閉じていると処理出来ないため
Workbooks.Open で一旦、開いて処理しています。
その時に相手側のワークブックが既に開かれていた場合に
Workbooks.Open でエラーが出て止まってしまうマクロと、
相手側のワークブックが開いているにも関わらず
Workbooks.Open でエラーが出ずにシートを挿入するなどの処理を
問題なく実行してしまうマクロがあります。
既に相手側のワークブックが開いている場合はエラーが出ないように
対策をしてもいいのですが、開いていてもWorkbooks.Open で
エラーが出ない場合と、開いていたらエラーが出てしまう場合の
違いがわかっているとマクロを作成する時にいろいろ便利です。
もし何か区別があるのでしたら教えて下さい。
すいませんが、詳しい方、説明の上手な方、よろしくお願いします。
No.4ベストアンサー
- 回答日時:
私の経験則なので、あまりあてにならないのですが・・・。
例えば、Aというブックを開いている状態で、再度、Aを開く場合、先に開いていたAに変更が加えらてているケースではエラーが発生します。何の変更も加えられていない場合は、エラーなしで開きます。
ちなみに、Aブック内のシートに、=NOW()関数などを設定している場合は、それだけでも変更扱いになるので、変更していないつもりでもエラーになってしまいます。
ご解答ありがとうございます。
>例えば、Aというブックを開いている状態で、再度、Aを開く場合、先に開いていたAに変更が加えらてているケースではエラーが発生します。何の変更も加えられていない場合は、エラーなしで開きます。
↓
初めて知りました。
で、、、よく似たことを確認してみると、、、。
確かにエラーの出るワークブックだけ保存の設定が違います。
他のワークブックは変更しないで閉じるときには「変更を保存しますか?」と聞いてきません。
ですが、このワークブックだけは全く変更していない場合でも「変更を保存しますか?」と聞いてきます。
ファイル、オプション、保存の設定で
「このブックの自動回復を行わない」以外、チェックを外してみたのですが、
閉じるときに「変更を保存しますか?」と聞いてきます。
具体的な原因はわかりませんが、多分、ママチャリさんのおっしゃるとおり、
何か自動で更新しているんだと思います。
※=NOW()関数などは設定していませんが。
「区別して利用する」というレベルまで至りませんが、
ママチャリさんのご解答のおかげで、
1つ疑問が解けました。
いつもご解答頂きありがとうございます。
機会がありましたらまたお願いします。
※他の方の意見も聞いてみたいので、質問はしばらく開けておきます。

No.6
- 回答日時:
コードを見ないと何とも言えませんが、原因の90%は指定シートが無い場合。
openした後、Worksheetで指定しているシート名がopenしたブックに無い時に発生します。
ご解答ありがとうございます。
コードを記載しても良いのですが、、、。
その前にアドバイスして頂いたことに対して
確認させて頂きますね。
原因の90%は指定シートが無い場合。
openした後、Worksheetで指定しているシート名がopenしたブックに無い時に発生します。
↓
ここでいう「Worksheetで指定しているシート名」というのは
beforの時に(特定のワークシートの前に挿入する)や
after(特定のワークシートの後に挿入する)の時に使う
ワークシート名のことですよね?
このシートはちゃんと存在します。
それが証拠にワークブックが閉じている時は普通に実行できますよ。
No.5さんへのお礼にも書いたとおり、
No.3さんからのご解答と、そのお礼を読んで頂けると
詳細を理解して頂けると思います。
No.4さんからのご解答とお礼でだいたい解決しておりますが、
何かありましたら、またお願いします。今回はご解答ありがとうございます。
No.5
- 回答日時:
> その際、相手側のワークブックが閉じていると処理出来ないため
> Workbooks.Open で一旦、開いて処理しています。
> その時に相手側のワークブックが既に開かれていた場合に
> Workbooks.Open でエラーが出て止まってしまうマクロと、
「相手側のワークブックが既に開かれていた」というのは自身のExcelによって既に開かれていた、という意味ですよね? その前提ですすめますが
私も他のブックにアクセスするマクロを書いていますが
こういった場合、相手のワークブックが開いているか(WorkBooks内に存在するか)を確認して
開いていなかったら、Workbooks.Open とするのではないでしょうか?
そうすれば仰るような問題は発生しないと思うのですが。。。
ご解答ありがとうございます。
>私も他のブックにアクセスするマクロを書いていますが
こういった場合、相手のワークブックが開いているか(WorkBooks内に存在するか)を確認して
開いていなかったら、Workbooks.Open とするのではないでしょうか?
↓
おっしゃるとおりです。
通常はご指摘の通りワークシートを開いているかの確認をしてから
ワークシートを開きにいっています。
ですが、、、後日、最初にテストとして作成したマクロ
(先にワークブックが開かれていた時のエラー対策なし)の動作を
再確認したところ、No3.ママチャリさんへのお礼に記載したとおり、
なぜか4個あるうちの3個ワークブックが開いているにも関わらず
Workbooks.Open を無視してその後の処理を実行します。
なので不思議に思い、ワークシートが開いていた場合でも
Workbooks.Open のエラーを無視してその後の処理を行えるような
条件があるのではと思い、今回こちらで質問させて頂きました。
お手数でなければ、No.3さんの質問へのお礼も読んで頂ければ
詳細がわかると思います。
こんな感じです。何かお心当たりがありましたら
再度ご解答頂けるとうれしいです。
今回はご解答ありがとうございます。機会がありましたらまたお願いします。
追記
>「相手側のワークブックが既に開かれていた」というのは自身のExcelによって既に開かれていた、という意味ですよね? その前提ですすめますが
↓
そのとおりです。
ご解答ありがとうございます
エラーメッセージは以下の通りです。
※補足に画像も貼り付けておきます。
「ファイル名」は既に開いています。2重に開くと、これまでの変更内容は破棄されます。
「ファイル名」を開きますか?
↓
いいえ
実行エラー'1004'
'Open'メソッドは失敗しました:'Workbooks'オブジェクト
詳細
マクロの機能ですが Workbooks.Open を利用して
4つのワークブックを開いてシートをコピー(挿入)するというマクロです。
この際、3個のワークブックに関しては
ワークブックが開いていようが、閉じていようが関係ありません。
ワークシートを挿入して処理を完了します。
(ワークシートの挿入、セーブ、相手側のワークブックを閉じる)
ところが、どういうわけか1つのワークブックだけが前述の
症状で止まります。
※止まる方が正常だと思うのですが、、、。
再三触れているとおり、ワークブックが開いていた時のエラー対策を
施してもいいのですが、可能なら他の3個のワークブックのように
開いていても書き込みが出来れば便利だと思っています。
という感じです。
いつもご解答ありがとうございます。
続きがありましたら、よろしくお願いします。

No.2
- 回答日時:
参照先が外部ワークブックの場合に起こる。
そのエクセルが立ち上がっていたらエラーにならず、立ち上がっていないならエラー。
ご解答ありがとうございます。
こちらの知識不足で申し訳ないですが、
ご解答の意味がよくわかりませんでした。
順番にいきますね。
1)
>参照先が外部ワークブックの場合に起こる。
↓
外部ワークブックというのは、
No1さんのいうネットワーク上のワークブックと
ローカルPCの中のワークブックということでしょうか?
2)
そのエクセルが立ち上がっていたらエラーにならず、立ち上がっていないならエラー。
↓
ということですが立ち上がっていたらエラーにならないのでしょうか?
Workbooks.Open はワークブックを開くための操作なので、
立ち上がっていたらエラーで、立ち上がっていない場合は
通常はエラーが起こらないです。
今回の質問のケースはマクロによってはどっちでもいい
(立ち上がっていても、立ち上がっていなくてもエラーがでない)
というものがあり、何か区別があるのか?ということです。
実際、立ち上がっていた時のエラー対策をほどこせば
問題ないのですが、最初の質問のとおり区別があるのでしたら
マクロを作成する時に便利なので活用しようと思いました。
という感じです。今回はご解答ありがとうございます。
こんな感じですが、何かご存じでしたら、引き続き
ご解答頂けると嬉しいです。
※続きがない場合はスルーでOKです。
No.1
- 回答日時:
>相手側のワークブック
これが自分のPCだけのファイルならこういう記述はしない
だろうという想定で(でもローカルネット上のとか示しておいて
ほしいですが)。
校閲→ブックの共有を設定しているファイルは他の方が開いていても
エラーは出ないと思います。
ご解答ありがとうございます。
順番にいきますね。
1)
>校閲→ブックの共有を設定しているファイルは他の方が開いていても
エラーは出ないと思います。
↓
校閲、ブックの共有、編集タグ、
複数のユーザーによる同時編集と、ブックの結合を許可する
のことだと思いますが、複数ユーザーの設定のチェックは外してます。
※相手側のワークブックにもマクロが入っております。
この機能はマクロのあるワークブックでは機能しませんので。
※エクセルのバージョンはEXCEL2010です
※補足のところに画像をアップしておきます。
2)
>これが自分のPCだけのファイルならこういう記述はしない
だろうという想定で(でもローカルネット上のとか示しておいて
ほしいですが)。
↓
おっしゃる通りワークブックは全て
ローカルネットワーク上のNASの中に入っています。
これって関係あるんでしょうか?
という感じです。
続きがあるようですので、ご面倒でなければ続きのご解答を頂ければ嬉しいです。
今回はご解答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて見た映画を教えてください!
初めて見た映画を覚えていますか?
-
【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
【お題】 『寿司』がテーマの本のタイトルを考えてください
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
-
4
VBA、Excelのworkbook.open について質問です これを記載してマクロ実行後、boo
Excel(エクセル)
-
5
ADOのOPENで実行時エラー
Visual Basic(VBA)
-
6
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
7
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
8
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
11
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
12
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
15
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
16
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
17
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
18
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
19
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
20
サーバー上のブックを開けない時(エクセルVBA)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
Excel vbaについての質問
-
お助けください!VBAのファイル...
-
On ErrorでエラーNoが0
-
マクロで"#N/A"のエラー行を削...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
ActiveCell.FormulaR1C1の変数
-
VBA データ(特定値)のある最...
-
Python openpyxlを使用したセル...
-
【VBA】ワークブックを開く時に...
-
mailstorehomeのエクスポートで...
-
Excel実行時エラー[80004005]に...
-
オブジェクト型の変数にフォー...
-
UBoundに配列がありませんとエ...
-
Nullの使い方が不正ですのエラ...
-
VB2008 comboboxを連動させた...
-
Accessのメインレポートとサブ...
-
VBスクリプトでIEの404 not fou...
-
原因不明のエラー発生 C#で困...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
LaTeXのエラーについて(コンパ...
-
Filter関数を用いた結果、何も...
-
ACCESSで値を代入できないとは?
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
ApplicationとWorksheetFunctio...
-
実行時エラー 438 の解決策をお...
-
VBでSQL文のUPDATE構文を使った...
-
pythonのopenpyxlについて
-
【Access】Excelインポート時に...
-
SQLでエラーです。
おすすめ情報
>校閲→ブックの共有を設定しているファイルは他の方が開いていても
エラーは出ないと思います。
↓
これのことですよね。
チェックは外しております
ママチャリさんへ
いつもご解答ありがとうございます。
エラーメッセージの画像です。
いつものようにコードをアップしてもいいですよ。
必要でしたら遠慮なくリクエストしてくださいね。