[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『意味を教えてください』(シエンタ)
>「参照設定」を使う方法で、「Dictionary」を使っていると、
>ブックを共有する際に不便です。
>reateObject」を使ってDictionaryを使うと、
>ブックを共有する際に便利です。
というのを見かけました。
何が便利で何が不便なのか理解できません。
作ったエクセルファイルを他の人に渡して使うためには
他の人のパソコンでも参照設定をしなければ使えないから
不便だということでしょうか?
でも、実際には他の人に渡して使ってもらっても
動かなかったのですがこれはたまたま
渡した人のパソコンで設定されていただけですか?
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>というのを見かけました。 それ、どこで見たのか表示頂かないと議論にならんでしょうよ。
↓ここですかね?
【VBA】Dictionaryの参照設定をする【CreateObjectが便利です】
https://daitaideit.com/vba-dictionary-reference/
(白茶) 2024/04/26(金) 11:42:20
参照設定の情報はブックに保持されているので、 使用するPCに対象のライブラリー(*)があれば、 それが自動的に読み込まれて問題なく使えると思います。 もしなければ、[参照設定]ダイアログボックスに「参照不可」と表示されます。 (この例ではMicrosoft Scripting Runtimeですかね。これはどのPCにもあるはずです) (xyz) 2024/04/26(金) 13:43:50
(シエンタ) 2024/04/26(金) 16:32:02
そういうことは無いと思います。
ちなみに、 > どのPCにもあるはずです というのは言い過ぎでした。LinuxやMacOS?で動作するマシンにはないでしょうしねえ。
なお、既にあったコメントにきちんと応対してくださいね。
# 余談です。(コメント不要です) # インテリセンスや、速度のことを考えたら参照設定が優れています。 # ただし、こうした質問掲示板では、「参照設定ってなんですか」という質問を誘発するので、 # 回答者は避けがちです。
(xyz) 2024/04/26(金) 16:40:22
誤解されている向きもあるかと思いますので、参考までに書いておきます。 参照設定するかCreateObjectを使うかという対立構図で記事は書かれていますが、 少し違うと思います。
1. こうした(外部?)オブジェクト変数の宣言方法には、 ・事前バインディングと ・遅延バインディング(実行時バインディング)のふたつがあります。 インテリセンスの利用可否は、こちらが関係する話です。 速度も事前バインディングのほうが速いと言われています。
Dim dic As Dictionary とするのが事前バインディング(Early Binding) Dim dic As Object とするのが遅延(または実行時)バインディング( Late Binding ) です。 https://excel-ubara.com/excelvba4/EXCEL227.html などを参照してください。
2. 事前バインディングの場合に、オブジェクトの生成は Set dic = New Dictionary としなければならないわけではなく、 Set dic = CreateObject("Scripting.Dictionary") としても問題はありません。
実際、CreateObject関数のヘルプにはそのような例も載っています。 (New Excel.Application ではなく、CreateObject関数を使ってExcel.Application を生成する例)
(xyz) 2024/04/26(金) 23:14:45
【VBA】Dictionaryの参照設定をする【CreateObjectが便利です】 https://daitaideit.com/vba-dictionary-reference/ 多分そうだと思います。
「参照設定」をする方法だと、ブックを共有して使う場合に、 相手の方でも「参照設定」する必要があるので少し不便です。
と書かれていたので、作成したエクセルファイルを誰かに渡したときに
渡した先のパソコンでも同じように、Microsoft Visualbasic for Applications を起動して
ツールから参照設定で設定しなければ動作しない場合があるのかと
思って質問させていただきました。
(シエンタ) 2024/05/09(木) 15:50:16
Microsoft Scripting Runtime のチェックを外した状態で
Microsoft Scripting Runtime のチェックを入れた状態で保存したブック開いてみれば
解るのでは?
エクセルのバージョンで挙動が違うかも?
(試す) 2024/05/09(木) 19:57:19
【補足】 Excel VBAプロジェクトに参照設定されているライブラリ情報は、Workbookファイル自体に保存されます。 従って、Workbookを他の人に渡したときも、「原則として」参照設定された状態が維持されます。 ただし、これは必ず保証されるものではないと思います。 1. 参照先のライブラリが存在すること(*) 参照設定されたライブラリが、他のユーザーのシステムにも存在する必要があります。 もし、そのライブラリが他のユーザーのシステムにない場合、VBAコードはエラーを発生させる可能性があります。 2. 参照先のバージョンの違いに注意(同じライブラリーでもバージョンが違うと互換性が失われることがある) 3. ファイルパスの違いに注意 ライブラリが特定のパスに保存されている場合、他のユーザーの環境ではそのパスが存在しないことがあります。 特に、共有ネットワーク上のパスなどは、環境によって異なるため注意が必要です。 これらのことを参考にしてください。
(*) dictionaryについていえば、scrrun.dllというライブラリーです。 C:\Windows\SysWOW64\scrrun.dll にあると思われます。
(xyz) 2024/05/09(木) 23:04:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.