プロが教える店舗&オフィスのセキュリティ対策術

現在開いているシートの特定の範囲の表を、別ブックのシートに貼り付けるマクロがあります。

具体例だと、
------------
「入力用」フォルダの中に、
A氏.xlsm
B氏.xlsm
C氏.xlsm


というブック達があり、各ブック内には「取込用」シートがあります。

また、「集計用」フォルダの中にある
取込用.xlsx には、「A氏」「B氏」「C氏」・・・というシートがあります。
------------
A氏.xlsm でマクロを実行すると、特定の範囲をコピーして
取込用.xlsx を開いて「A氏」シートに貼り付けるようになっています。
B氏、C氏も同様です。
これで全員のデータが取込用.xlsx に集約されるようになっています。
(別のブックから、Powerクエリと接続する予定です。)

ここで問題なのは、
取込用.xlsx を開いているときに、誰かがマクロを実行すると、書き込み先のファイルが開かれているためエラーになってしまう事です。

何らかの原因で書き込み先のファイルが開けなかった場合は、
無視するか、
「取込用.xlsx が既に開かれているため書き込みできませんでした。」
というMsgboxを表示させることは出来ないでしょうか?
VBAのエラー画面が出るとユーザがビックリしてしまうので避けたいです。
よろしくお願いいたします。

A 回答 (3件)

No.1の者です。



myError:の前に、Exit Subが必要でした。
処理を終わらせる必要がありました。


Sub Sample()
処理
On Error GoTo myError
ブックの保存処理
On Error GoTo 0

Exit Sub
myError:
MsgBox "エラーが発生しました" '表示されます
 RESUME NEXT ’エラー発生の次の行から続ける。(保存処理の次の行へ)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまく行きました。
まだ理解不足な点があるのですが別途質問させて頂こうかと思います。

お礼日時:2021/11/08 23:21

http://hanatyan.sakura.ne.jp/vbhlp/excel03.htm
の最後の方になりますが、指定のファイルが使用中かどうかを調べる (015)。
んで、誰が使用中なのかについては
Openfiles コマンドとか。
https://wa3.i-3-i.info/word14353.html
https://docs.microsoft.com/ja-jp/windows-server/ …

ご参考まで。
    • good
    • 0

こんばんは。



ON ERROR GOTO ~ が良いかと思います。
ブックを保存する直前で、上記命令を書いて、ブック保存処理を行う。
その後、下記で、通常の状態に戻す。
ON ERROR GOTO 0

http://officetanaka.net/excel/vba/statement/OnEr …

エラー発生後、下記で、エラー発生行の次から続ける。 RESUME NEXT
https://excel-ubara.com/excelvba1/EXCELVBA362.html


例えば、下記の様な感じでしょうか?

Sub Sample()
処理
On Error GoTo myError
ブックの保存処理
On Error GoTo 0

myError:
MsgBox "エラーが発生しました" '表示されます
 RESUME NEXT ’エラー発生の次の行から続ける。(保存処理の次の行へ)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
Smpleファイルで試してみたところ、
シートが存在しなければ「エラーが発生しました」と表示され、
その後、シートを新規作成する処理を付けてみましたが、
最後に
「エラーが発生していないときに resume を実行することはできません。」
と出てしまいました。
素人ですみません。
調査中です。

お礼日時:2021/11/04 23:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A