
マクロを含むBook1のシート1上にボタンを配置。それぞれ下記のTestA,TestBを起動するようにしています。
やりたいことは、マクロを含むブックとは別のエクセルアプリケーションを立ち上げて、
Book1.xlsx・・・を開き、 後で、マクロを含むブックからBook1.xlsx・・・を呼び戻すことです。
TestAのマクロは、問題なく(多分)動きますが、TestBのマクロでは、Book1.xlsx が前面に表示されません。
別のエクセルの世界のブックを如何に掴み、且つ、制御する方法について、教えていただきたいのです。よろしくお願い致します。
Sub TestA()
Dim objExcel2
Set objExcel2 = CreateObject("Excel.Application")
objExcel2.Workbooks.Open "C:\Users\User1\ents\Book1.xlsx"
objExcel2.Visible = True
Set objExcel2 = Nothing
Dim objExcel3
Set objExcel3 = CreateObject("Excel.Application")
objExcel3.Workbooks.Open "C:\Users\User1\Documents\Book2.xlsx"
objExcel3.Visible = True
Set objExcel3 = Nothing
Dim objExcel4
Set objExcel4 = CreateObject("Excel.Application")
objExcel4.Workbooks.Open "C:\Users\User1\Documents\Book3.xlsx"
objExcel4.Visible = True
Set objExcel4 = Nothing
End Sub
Sub TestB()
Dim Myxl As Object
Set Myxl = GetObject("C:\Users\User1\Documents\Book1.xlsx", "Excel.Sheet")
Myxl.Activate 'エラーとはならないが、画面には、出てこない
Myxl.Application.Visible = True 'エラーとはならないが、画面には、出てこない
End Sub
尚、別のエクセルアプリケーションを立ち上げた理由は、ベースのエクセルシート(マクロを含むBook) を開いた状態で、小さなWindowで"book1.xlsx"・・・を表示させたかったからです。
No.1ベストアンサー
- 回答日時:
こんばんは。
お久しぶりです。
>別のエクセルアプリケーションを立ち上げた理由は、ベースのエクセルシート(マクロを含むBook) を開いた状態で、小さなWindowで"book1.xlsx"・・・を表示させたかったからです。
何か、難しいことをされているようですが、再現性が得られません。もしかしたら、こういうことをおっしゃっているのでしょうか。ちゃんと理解しているわけではありませんが、この場合は、Aで非表示でも、Bのマクロは、前面にTest1.xlsxが出てきます。単独で、Bでも可能です。むしろ、Aのマクロは意味がありません。使わなくてもよいです。
しかし、オートメーション・オブジェクトを4つも作ったら、たぶん、いろんな所で支障がでるかもしれません。
'//
Sub TestA()
Dim objExcel2 As Excel.Application
Dim wb2 As Workbook
Dim fn As String
fn = "C:\Users\User1\My Documents\Test1.xlsx"
Set objExcel2 = CreateObject("Excel.Application")
'objExcel2.Visible = True
Set wb2 = objExcel2.Workbooks.Open(fn)
Set objExcel2 = Nothing
End Sub
Sub TestB()
Dim wb2 As Excel.Workbook
Dim objExcel2 As Excel.Application
Dim fn As String
fn = "C:\Users\User1\My Documents\Test1.xlsx"
On Error Resume Next
Set wb2 = GetObject(fn)
Set objExcel2 = wb2.Application
objExcel2.Visible = True
If Err() <> 0 Then
Set objExcel2 = CreateObject("Excel.Application")
objExcel2.Visible = True
Set wb2 = objExcel2.Workbooks.Open(fn)
End If
On Error GoTo 0
With objExcel2
.Width = 330
.Height = 390
End With
Set wb2 = Nothing
Set objExcel2 = Nothing
End Sub
'///
WindFallerさん
遅くなりました。ありがとうございます。
結論から言って、複雑にすることは止めることにしました。
苦労する割には、安定性に不安が残る感じがします。
ユーザーインターフェースの観点から、ボタンを押せば
参照エクセルブックが小さなウィンドウで現れ、
元に戻る時も、簡単なのかな・・・
でも、参照エクセルファイルにアクセスする時は、
画面下のアイコンを押せ・・・と定義すれば良いだけの話。
多数のオートメーション・オブジェクトを作ると云々、
便利ではあるが、それに寄り掛かりすぎるのもよろしくない、
という考えで、やっていきたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、「いいね」のよう...
-
Excel マクロの編集がグレーに...
-
Excelのマクロでボタンを押すと...
-
WPSOffice_マクロの有効化について
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
エクセル マクロ名にブック名...
-
(Excel VBA)シートコピー時マ...
-
マクロ実行ボタンを自動削除したい
-
エクセルの表を複数枚印刷した...
-
Ctrl+Zが使えない
-
エクセルの、記録を終了したマ...
-
Excelマクロで、稼働中のマクロ...
-
エクセルでマクロ(Excel 4.0)...
-
別シートのマクロボタンをマク...
-
EXCELのマクロが他のパソコンで...
-
エクセルで明日の日付を表示す...
-
Excelマクロをバックグラウンド...
-
Excel2003 100行ずつ改ページ...
-
LDPlayerのマクロの編集方法を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセルで、「いいね」のよう...
-
エクセル マクロ名にブック名...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルの、記録を終了したマ...
-
LDPlayerのマクロの編集方法を...
-
(Excel VBA)シートコピー時マ...
-
Excelマクロで、稼働中のマクロ...
-
エクセルの表を複数枚印刷した...
-
エクセルで明日の日付を表示す...
-
Excelのマクロ名の並び順の法則...
-
別シートのマクロボタンをマク...
-
Excelマクロをバックグラウンド...
-
エクセルマクロで、別のブック...
-
他のBOOKにマクロを反映させな...
-
EXCELのマクロが他のパソコンで...
おすすめ情報