QNo.3774822 「EXCELのマクロでBook1立ち上げ時に自動で別のBookを起動するには」(http://oshiete1.goo.ne.jp/qa3774822.html)でお世話になった者です。その節は多くの方にご回答いただき有難うございました。
前質問ではANo.6にて必要な回答が得られたため締め切り手続きを行ったのですが、この間にANo.7の回答をいただきました。この内容は私にとって大変興味深いもので早速試してみたのですが、私には高度な内容でうまく動作させられませんでした。既に締めていたため新たな質問もできず、こちらに質問させていただく次第です。
次のコードを正しく実行するための記述の仕方をアドバイスいただければ幸いです。
以下ANo.7のご回答者様の回答の抜粋です。
'=============================================
以下は、ほんのお遊びにしか過ぎませんが、こんなことが可能です。
なお、Book1... のような名称というのは、仮の名称であって、特に、それ自体が存在しているとはいえません。
Book1... のSheet1 のA1 に、hirakegoma と入ったときにだけ、別のファイルが開きますが、以下の「待ち時間」の4秒後を過ぎると、何も起こりません。4秒後に入れたものには何も起こりません。開いたと同時では、場合によってはマクロの検索は利かないはずです。
以下のマクロは、カプセル化もしておりませんし、本格的な内容ではありませんが、このようなことが可能です。また、別のソフトのインスタンス生成自体では、Excelのアプリケーションがどのような反応をするかは分かりません。
個人の場合は、"PERSONAL.XLS" ですが、他人に配布する場合は、アドインになると思います。
また、Excelが起動したときに、ブックの中身やブックの名称を全部調べるという方法も可能だと思います。
ループで、
For Each wb In Workbooks
If wb.Name Like "Book#*" Then
Workbooks.Open "Abc.xls"
End If
Next
'-------------------------------------
'Class1
'-------------------------------------
Public WithEvents App As Application
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
'待ち時間
Const TIMELAG As Integer = 4
Set NewWb = Wb
Application.OnTime Now + TimeValue("00:00:" & CStr(TIMELAG)), "OpenSesame"
End Sub
'--------------------------------------
'標準モジュール
'--------------------------------------
Public myClass As New Class1
Public NewWb As Workbook
Public Sub OpenSesame()
'添付用のブック
Const MYBOOK As String = "Test1.xls"
With NewWb.Worksheets(1)
If StrComp(.Range("A1").Value, "HirakeGoma", 1) = 0 Then
If Dir(MYBOOK) <> "" Then
Workbooks.Open "Test1.xls"
Else
MsgBox MYBOOK & "のワークブックが見当たりません。", 48
End If
End If
End With
Set NewWb = Nothing
End Sub
'--------------------------------------
'ThisWorkbookモジュール
'--------------------------------------
Private Sub Workbook_Open()
Set myClass.App = Application
End Sub
'標準モジュールのAuto_Openの場合は、オートメーションでは、そこを通らない可能性があるから、ThisWorkbook モジュールに入れたほうがよいです。Auto_Open は、あくまで、Excelを単独に開いたときだけです。
No.1
- 回答日時:
こんばんは。
前回の回答者です。
そのコード自体は、元は一般のブックのみで試されたものです。
うまく行かなかったとなると、一度、それを検査してみないと分からないのです。
せっかく、私宛にご質問をいただいたので、もう一度、きちんとお尋ねいたします。
たぶん、今は、私はイベントの種類を間違えのような気がしています。Open イベントではありませんが。
一つ質問なのは、
・その「別のアプリ」からExcel用のBook1 が現れたときには、それまでは、Excelは、立ち上がっていないのでしょうか?自動的にExcelが立ち上がるというものでしょうか?
つまり、Excelを持っていない人には使えない、というものでしょうか?
Excelが立ち上がったときに、そのデータが入れられたブックのみがあるという感じですか?
実は、私の考えの中の解決方法には、いくつか種類があるのですが、かといって、クラス-インタンスという形にひきづられてしまい、今回のお話は、厳密には確認していないのです。データの入り方には、大きく大別すると、2種類あるのですが、今回は今の形の延長の場合で良いような気がします。
本来は、どのようにデータが出てくるか、見れば分かるはずですが、どのようにしたらよいか、もう一度、検討してみます。今の予想では、あまり、複雑なことにはならないはずです。
早速ご回答いただき有難うございます。前回は大変お世話になりました。引き続き宜しくお願い申し上げます。
>その「別のアプリ」からExcel用のBook1 が現れたときには、それまでは、Excelは、立ち上がっていないのでしょうか?
>自動的にExcelが立ち上がるというものでしょうか?
>つまり、Excelを持っていない人には使えない、というものでしょうか?
>Excelが立ち上がったときに、そのデータが入れられたブックのみがあるという感じですか?
全てそのとおりです。使用するPCは1台のみで複数のスタッフが交代で使用します。
ところで、先ほど現物のソフトで色々試していたところ、吐き出した際に立ち上がるEXCELには個人用マクロブック(PERSONAL.XLS)が存在しないようです。プログラムがEXCELを立ち上げているからでしょうか。
EXCELは奥が深いですね。どうぞ宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんばんは。
>吐き出した際に立ち上がるEXCELには個人用マクロブック(PERSONAL.XLS)が存在しないようです。
>プログラムがEXCELを立ち上げているからでしょうか。
期待をさせて大変にすみません。ご指摘の通りでした。その立ち上がりが、オートメーションといって、
Set objExcel = CreateObject("Excel.Application")
こういうスタイルで、呼び出されているのではないか、ということに気がつきました。
Shell で呼び出しされているのなら可能ですが、その可能性は薄いです。理由は、データの吐きだしが利かないからです。
そうすると、例えば、アドインなども呼び出されてはいないはずです。本来、そのオートメーション側がある程度書き換えることが可能なら、この先の展開も可能なのですが、この場合は、自動起動するマクロ自体が、そのオートメーション側から呼び出さない限りは、使えないのです。
ただし、PESONAL.XLS 等に登録した、コマンドボタンの呼び出しだけには応じるようです。
だから、アドインでコマンドボタン自体を取り付けることは可能(XL2003以下)ですが、そのまま、自動起動というわけにはいかないようです。思うようにいかなくて、すみません。
この回答への補足
おはようございます。
とても丁寧な解説をいただき有難うございます。
やはり特殊な方法で呼び出されていたのですね。
この場合でも個人用マクロブックをボタンから呼び出せることが
わかっただけでも大きな収穫です。
面倒くさい質問に最後までお付き合いいただき有難うございました。
お陰さまでまた一歩前進することができました。
(お礼を補足につけてしまい失礼いたしました。)
おはようございます。
とても丁寧な解説をいただき有難うございます。
やはり特殊な方法で呼び出されていたのですね。
この場合でも個人用マクロブックをボタンから呼び出せることが
わかっただけでも大きな収穫です。
面倒くさい質問に最後までお付き合いいただき有難うございました。
お陰さまでまた一歩前進することができました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
excelで直前に参照していたブッ...
-
マクロの保存先、開いてるすべ...
-
【Excel VBA】マクロでExcel自...
-
名前の変わるブックをアクティ...
-
エクセルVBAで作成した別ブック...
-
エクセルで未保存に対するメッ...
-
エクセル;相対パスを絶対パスへ...
-
複数のExcelファイルの印刷設定...
-
【Excel】マクロの保存先について
-
EXcelのマクロで相対パスでファ...
-
エクセルのマクロについて教え...
-
エクセルVBA 個人用マクロブッ...
-
エクセルのvbaにて thisworkboo...
-
個人用マクロブックが消えました
-
エクセルを開いて文字を打つ際...
-
ファイル名変更後も、マクロを...
-
ブックを開いたとき自動的にバ...
-
EXCELマクロで、開いてはいるが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
エクセル;相対パスを絶対パスへ...
-
マクロの保存先、開いてるすべ...
-
【Excel】マクロの保存先について
-
excelで直前に参照していたブッ...
-
EXcelのマクロで相対パスでファ...
-
エクセルVBAで作成した別ブック...
-
複数のExcelファイルの印刷設定...
-
エクセルのvbaにて thisworkboo...
-
EXCELのボタンによるマクロの登...
-
エクセルVBA 個人用マクロブッ...
-
EXCELマクロで、開いてはいるが...
-
EXCELブックが勝手に開いて困っ...
-
エクセルで未保存に対するメッ...
-
[フィルターオプションの設定]...
-
【Excel】特定セルの内容をテキ...
-
ファイル名変更後も、マクロを...
-
名前の変わるブックをアクティ...
おすすめ情報