人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelVBAについての質問です。

環境: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リンクのブックを開いたときに
上記分岐が出来る方法をご存じでしたらご教示いただきたくお願い致します。





●質問者: pocon
●カテゴリ:コンピュータ インターネット
✍キーワード: Office as Excel name String
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●200ポイント ベストアンサー

アプリケーションレベルのイベントを定義しないと難しいようです。

次のページを参考に実装してみました。

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βでも希望通り動作しました。

いつもありがとうございます。(_ _)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ