『意味を教えてください』(シエンタ)
>「参照設定」を使う方法で、「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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.