[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームのボタンから、別ブックにあるユーザーフォームを開きたい』(花子)
ユーザーフォームのボタンを押すと、別ブックにあるユーザーフォームを開くことは可能でしょうか?
いろいろ調べたのですが、別ブックが開くところまで動くのですが、ユーザーフォームが表示されず上手くいきません。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
Sub test() Dim wkBook As Workbook
Set wkBook = Workbooks.Open("Book1.xlsm") Application.Run wkBook.Name & "!Sheet1.CommandButton1_Click" End Sub
ボタンになっておらず、Sheet1シートのシートモジュールにプロシジャ(例えば testというプロシジャ)が書いてあるような場合なら、以下。
Application.Run wkBook.Name & "!Sheet1.test" (???) 2018/11/07(水) 11:15
>Set wkBook = Workbooks.Open("abc.xlsm")
実行時エラー1004が起きて、別ブックが開かずに止まってしまいます。
どこか間違っているのでしょうか?↓
Sub btn1_Click()
Dim wkBook As Workbook
Set wkBook = Workbooks.Open("abc.xlsm")
Application.Run wkBook.Name & "!xyz.CommandButton1_Click"
End Sub
(花子) 2018/11/07(水) 13:45
"abc.xlsm" の部分はフルパス入れてみてください。 (ろっくん) 2018/11/07(水) 13:52
>Application.Run wkBook.Name & "!xyz.CommandButton1_Click"
次の行で同じくエラー1004が起きます。
(花子) 2018/11/07(水) 14:08
見た通り、これはボタンを押す(押したときに動作するプロシジャを実行する)ためのコードであって、直接ユーザーフォームを開くものではありませんよ?(どこにもフォーム名を書いていませんよね)
他ブックのフォームを開くのはあくまでも他ブックのプロシジャであって、教えたのは他ブックのプロシジャを実行する方法です。
(???) 2018/11/07(水) 14:35
? Workbooks("abc.xlsm").Sheets("xyz").CommandButton1.Name
エラーになる場合、シート名を正確に教えてください。 全角文字は他の全角、数字は他の数字等に置き換えて構いませんが、"○○/XXシート" を "xyz" のようには単純化しないようにお願いします。(または、本当にシート名が「xyz」というシートをコピー作成して試してみるとか)
(???) 2018/11/07(水) 15:33
Workbooks("abc.xlsm").sheets("xyz").OLEObjects("CommandButton1").Object.Value = True
>フルパスをいれてみたらabc.xlsmが開くところまで動きましたが
って、開いてないの? 上は、開いてないとだめです。
ついでに言っておくと、開いたブックがマクロ無効状態だとだめ。 (BJ) 2018/11/07(水) 21:30
? Workbooks("abc.xlsm").Sheets("xyz").CommandButton1.Name
を実行したらすぐ下にCommandButton1と表示されました。
ちなみに正確な名前は、
abc.xlsmは 顧客管理.xlsm、
sheets("xyz")は sheets("顧客マスタ")です。
>BJさん
有難うございます。
ブックが開いた状態で実行しても同じエラー1004が出ます。
Application.Run wkBook.Name & "!顧客マスタ.CommandButtom1_Click"
↑デバックではここが原因のようです。
表示がうまく更新されていないとか、何か他に問題があるのでしょうか?
(花子) 2018/11/08(木) 08:41
なので、ボタン名は正しく得られていたので、やり方を変えて、以下を試してみてください。
Sub test() Dim wkBook As Workbook
Set wkBook = Workbooks.Open("顧客管理.xlsm") Call wkBook.Sheets("顧客マスタ").CommandButton1_Click End Sub (???) 2018/11/08(木) 10:38
とりあえず、顧客管理.xlsmと、新規ブックだけが開いた状態で、新規ブックに下のコードを張り付けて試してください。 動きそうにない、余計なコードは一切なし。 当然、顧客管理.xlsmの方はマクロ有効になっていること。
sub ajajja() Workbooks("顧客管理.xlsm").sheets("顧客マスタ").OLEObjects("CommandButton1").Object.Value = True end sub (BJ) 2018/11/08(木) 13:52
>BJさん
???さんのやり方で解決できたので、このやり方で進めようと思います。
有難うございました。
(花子) 2018/11/08(木) 14:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.