環境:WinXP Office2010β
インターネットのサーバ上に保存されているExcel(xlsxでマクロ埋め込み不可)をURLリンクで開くときに
ファイル名に任意文字列が含まれているかどうかで分岐したいと考えており、PERSONAL.XLSBに
Sub Auto_Open()
Dim URLBOOK As String
URLBOOK = ActiveWorkbook.Name
If InStr(1, URLBOOK, "任意文字") > 0 Then
MsgBox "任意文字を含むブックを開きました"
End if
End Sub
としたのですが、当然のことながらExcelを新規で起動したときにしかチェックしません。
すでに別のブックが起動している状態でもURLリンクのブックを開いたときに
上記分岐が出来る方法をご存じでしたらご教示いただきたくお願い致します。
アプリケーションレベルのイベントを定義しないと難しいようです。
次のページを参考に実装してみました。
http://devlibrary.businessobjects.com/businessobjectsxir2/ja/ja/...
Excel2010ではテストしていませんが、Excel2007では次の方法でできました。
1 PERSONAL.xlsにクラスモジュールを追加して、プロパティウィンドウで名前をAppRefClassとします。
2 次のコードをそのクラスモジュールにコピペ。
Public WithEvents boapp As Application Private Sub boapp_WorkbookOpen(ByVal Wb As Workbook) Dim URLBOOK As String URLBOOK = Wb.Name If InStr(1, URLBOOK, "任意文字") > 0 Then MsgBox "任意文字を含むブックを開きました" End If End Sub
3 PERSONAL.xlsに標準モジュールを追加
4 その標準モジュールに次のコードをコピペ。
Dim AppRef As New AppRefClass Sub Auto_Open() Set AppRef.boapp = Application End Sub
すげー。クラスモジュールなんて初めてつかいました。
2010βでも希望通り動作しました。
いつもありがとうございます。(_ _)