アプリ版:「スタンプのみでお礼する」機能のリリースについて

皆様にはいつもお世話になっております。
 今回は BookAのマクロから BookBをアクティベイトできない現象で悩んでいます。
 下記のマクロのように BookBが開いているか否かを判断して既に開いていればアクティブ化し、そうでなければ開くようにしたいと思っています。
 ブックを開くケースでは下から2行目のアクティブ化は不要なのですが、ブックが開いている場合は 8行目のアクティブ化が効きません(エラーメッセージも出ません)。
 大分アチコチのサイトを覗いたのですが殆どが一般的な説明で参考になりませんでした。
 ご存じの方、教えて頂ければ幸いです。
 因みに、使用しているOSは Windows7+Excel2010 及び Windows10+Excel16なのですが、いずれの場合も同じ症状となります。
 宜しくお願いします。
 
Dim targetBook As String
targetBook = "U:\BookB.xlsm"
' ブックを開く時に読み取り専用になっているか否かでその開閉を判断
On Error Resume Next
Open targetBook For Append As #1
Close #1
If Err.Number > 0 Then    '■ブックが開いている
Workbooks(targetBook).Activate '指定ブックに移動
Else             '■ブックが開いていない
Workbooks.Open targetBook 'ブックを開く
Workbooks(targetBook).Activate
End If

A 回答 (1件)

検証してませんけど、パスとブック名を分けてみては如何でしょうか?



Dim targetBook As String , tagetPath As string
targetPath = "U:\"
targetBook = "BookB.xlsm"
' ブックを開く時に読み取り専用になっているか否かでその開閉を判断
On Error Resume Next
Open targetPath & targetBook For Append As #1
Close #1
If Err.Number > 0 Then    '■ブックが開いている
Workbooks(targetBook).Activate '指定ブックに移動
Else             '■ブックが開いていない
Workbooks.Open targetPath & targetBook 'ブックを開く
'Workbooks(targetBook).Activate ■不要かもですね。
End If

たしか既に開いているワークブックの名前にはパスは表示されなかったと思いますし、使用するにも指定はしなかったと思うので。
違っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

めぐみん_ さん、早朝からの回答、感謝致します。
実は以前にも めぐみん_ からは丁寧に指導して頂いた記憶があります。
本当に有り難うございます。
ところで御指摘のように修正したところ、一発で解決しました。
いろいろなサイトを探しても めぐみん_ のような説明は見つかりませんでした。
基本的なことを理解していないので上手く行かなかったのですね。
御多用中のところ、誠に有り難うございました。
今後とも宜しくお願い致します。

お礼日時:2019/08/10 09:26

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

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


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