Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


26580 / 76738 ←次へ | 前へ→

【55489】Re:テキストファイル(CSV)に変換
回答  kanabun  - 08/5/7(水) 13:48 -

引用なし
パスワード
   ▼KOCCI さん:
>とても勉強になりますが、ごめんなさい、解説をお願いしたく、
>
>> Const CLSID_DataObject = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
>
>これはどういったものでしょうか?

こんにちは。
説明なしで、失礼をばいたしました。
実は以下のような事情を説明するのがめんどかったので、
スキップしてました。

上のサンプルでは、
クリップボードの文字列を取得するために
DataObject というオブジェクトを使っていますが、
これは MSForms ユーザーフォームに付属するもので、
VBE のメニュ−から ツール>参照設定 で
 Microsoft Forms 2.0 Object Library
にチェックを入れると利用可能になります。
ところが、お使いのPCの環境によっては ツール>参照設定 の
リストに Microsoft Forms 2.0 Object Library がないことが
あります。
これまで、そのような場合の対処方法として、
VBE の挿入 メニュ−から ユーザーフォームをプロジェクトに
追加する、という方法が用いられてきました。ユーザーフォームを
挿入すると 配下の DataObject への参照が成立する、というわけです。
このばあい、挿入したUserForm そのものは すぐ解放してもかまわない、
UserForm を解放しても DataObjectへの参照は保持されている、
ということです。

さて、WScriptオブジェクトなどの COMオブジェクトを使うとき、
事前に参照設定する方法と、
プログラム実行時に動的に CreateObject する方法があるのは
ご存知ですよね.
 Set Fso = CreateObject("Scripting.FileSystemObject")
とか、
  Set dic = CreateObject("Scripting.Dictionary")
という構文を見かけられたことがあるかと思いますが、
こういう風に、事前に参照設定せずとも DataObject が
実行時に動的に CreateObject できれば、お使いの環境で
参照設定のウィンドウに
Microsoft Forms 2.0 Object Library がなくても
かまわないわけです。
ところが、 上の例に倣って、
 Set Dto = CreateObject("MSForms.DataObject")
とやっても、DataObject は Createできないのです。

そこで、他の掲示板で shira さんが紹介された方法を
用いると、Set Dto = CreateObject("MSForms.DataObject")
と結果同じことができるようになるってわけです。
以下、その時の shira さんの解説を引用します

> 以前に、参照設定せずに MSForms.DataObject
> のインスタンスを作成したいという旨の質問が
> あった時に、APIで作成する方法を回答しましたが、
> Win2000/XP以降のOSでは、上のサンプルで使って
> いるような、newモニカの機能もありましたね。
>
>   Const CLSID_DataObject = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
>   With GetObject("new:" & CLSID_DataObject)
>     .SetText "Test"
>     .PutInClipboard
>   End With
>
> この方がずいぶんお手軽だと思います。
> Office2000(VBA6)以降では、上記のGetObjectを
> CreateObjectに変えても動くと思います。
> でも個人的には、GetObjectの方が適切と考えます。

6 hits

【55281】テキストファイル(CSV)に変換 KOCCI 08/4/25(金) 15:53 質問
【55283】Re:テキストファイル(CSV)に変換 ハチ 08/4/25(金) 16:12 発言
【55284】Re:テキストファイル(CSV)に変換 neptune 08/4/25(金) 16:18 発言
【55285】Re:テキストファイル(CSV)に変換 テト 08/4/25(金) 16:33 回答
【55289】Re:テキストファイル(CSV)に変換 KOCCI 08/4/25(金) 18:38 発言
【55290】Re:テキストファイル(CSV)に変換 VBWASURETA 08/4/25(金) 19:36 発言
【55288】Re:テキストファイル(CSV)に変換 Yuki 08/4/25(金) 17:06 発言
【55295】Re:テキストファイル(CSV)に変換 Hirofumi 08/4/25(金) 23:16 回答
【55327】Re:テキストファイル(CSV)に変換 KOCCI 08/4/28(月) 9:05 発言
【55473】Re:テキストファイル(CSV)に変換 kanabun 08/5/6(火) 9:33 回答
【55486】Re:テキストファイル(CSV)に変換 KOCCI 08/5/7(水) 12:42 質問
【55488】Re:テキストファイル(CSV)に変換 neptune 08/5/7(水) 13:22 発言
【55489】Re:テキストファイル(CSV)に変換 kanabun 08/5/7(水) 13:48 回答
【55491】Re:テキストファイル(CSV)に変換 kanabun 08/5/7(水) 14:52 発言
【55492】Re:テキストファイル(CSV)に変換 neptune 08/5/7(水) 15:30 発言
【55493】Re:テキストファイル(CSV)に変換 kanabun 08/5/7(水) 16:36 お礼
【55496】Re:テキストファイル(CSV)に変換 neptune 08/5/7(水) 22:09 お礼

26580 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free