ブックBのシート(*)に関数 sub aaaを定義します。
(*)シートオブジェクト名を任意のものに変更します。(→eee)
この時、ブックAのVBAからブックBを開き、その参照を得て(workbook型の
wbという名前の変数に格納します。)、「Call wb.eee.aaa」と
呼び出すことができると思っていましたが、"オブジェクトは
そのメソッド/プロパティを持っていません"という旨のエラーが
出て、呼び出すことができませんでした。
どのようにしたら呼び出すことができるようになりますか。
aaaはpublicで定義しています。
No.2ベストアンサー
- 回答日時:
> aaaはpublicで定義しています。
Workbook型の変数では、ユーザーが独自に定義したメソッドを呼び出せなくなります。
(Workbookオブジェクトに定義された(=組み込み済みの)メソッドしか呼び出せない)
そのオブジェクトを受ける変数の型をObject型にすれば、独自に定義したaaaメソッドを
呼び出すことができるかと思います。
(「Dim wb As Object」と宣言すればOk、と)
なお、VBEのメニューから「ツール(T)→参照設定(R)」で『参照設定』ダイアログを開き、
『参照(B)』ボタンを押して、ブックBへの参照設定を行うと、
Dim wb As VBAProject.eee
といった宣言も可能になり、eeeシートに定義したPublicなプロパティ/メソッドに対して
インテリセンスによる入力支援を有効にすることもできますので、併せて参考まで。
(上記での「VBAProject」には、VBEのメニューで「ツール(T)→○○のプロパティ(E)」
で開く『プロジェクトプロパティ』ダイアログの『全般』タブにある『プロジェクト名(N)』を
指定します)
但し、ブックAを開くと同時に毎回ブックBが開かれることになりますので、運用できる
場面は限られるかと思いますが(汗)
以下な感じで他ブックのシートに定義されている関数を呼び出すことが
できました。sshがworkbookだと関数がうまく呼び出せなかったので、
参考にさせていただき助かりました。ご回答ありがとうございました。
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim path
Dim ssh As Object
path = Application.GetOpenFilename("Microsoft Excelブック,*.*")
Set wb = Workbooks.Open(path)
Call get_ob(wb, ssh, "eee")'コードネームからシートオブジェクト取得
Call ssh.aaa
wb.Close (False)
Set wb = Nothing
End Sub
'コードネームからシートオブジェクト取得
Sub get_ob(wb, ssh, name)
Dim sh As Object
For Each sh In wb.Worksheets
If sh.CodeName = name Then
Set ssh = sh
Exit For
End If
Next
End Sub
No.1
- 回答日時:
こんなかんじでできました
Call Application.Workbooks("Book1").Sheets("Sheet1").test
Call Application.Workbooks(ファイル名).Sheets(シート名).プロシージャ名
シート名は、対象の Worksheet の Name プロパティを指定します。
オブジェクト名はプロジェクト単位で通用するグローバルなシンボルのようです。
プロジェクト単位(ブック)を超えてプロシージャを参照するには、Application オブジェクト経由でワークブックの名前とオブジェクトの名前(Name プロパティ)で対象のオブジェクトを解決する必要があるようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
エクセルのVBAの標準モジュール...
-
「Columns("A:C")」の列文字を...
-
VBAで既に開いている別アプリケ...
-
実行時エラー 3265「要求された...
-
Excel VBAでWordの複数ファイル...
-
Excelでフィルタをかけると警告...
-
findメソッドの変数について
-
オブジェクト名が同じ図形の変更
-
EXCEL VBA オートシェイプナン...
-
ExcelでAccessのテーブルにADO...
-
(初心者です)VBAについて。「実...
-
VBAで Set wb = Sheets(1).Cop...
-
VBA (Row とRowsの違いについて)
-
vbsのFolderExistsで部分一致を...
-
テキストボックス中の文字列の...
-
VBScriptでASPのオブジェクトを...
-
VBAについてです。 初心者です...
-
CreateObjectとGetObjectの違い
-
オブジェクトが見つかりません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
Excelでフィルタをかけると警告...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
VBAからPDFファイルにパスワー...
-
PowerPointVBAでスライドマスタ...
-
EXCEL VBA オートシェイプナン...
-
オブジェクトが見つかりません
-
テキストボックス中の文字列の...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
ExcelVBAでのNZ関数について
-
上下の位置揃えについて
-
UserForm1.Showでエラーになり...
-
AccessVBAで「dim dbs as datab...
-
findメソッドの変数について
-
VBScriptでファイルの日時順(降...
-
Excel VBAでWordの複数ファイル...
おすすめ情報