TypeLib.Guid で取得するのですが、取得した文字列の最後に NULL が現れるので Left 関数で文字列のみを取得しなおしています。 1) 最も多様なテクニックを使用して取得 クリップボードへのアクセスは clip.exe ( コマンドプロンプトでリダイレクトが必要です )
01.
' GUID 取得用
02.
Set
TypeLib = CreateObject(
"Scriptlet.TypeLib"
)
03.
04.
' 外部実行・環境変数取得用
05.
Set
WshShell = WScript.CreateObject(
"WScript.Shell"
)
06.
07.
' テキストファイル出力用
08.
Set
Fs = CreateObject(
"Scripting.FileSystemObject"
)
09.
10.
' テンポラリフォルダの取得
11.
TempFolder = WshShell.ExpandEnvironmentStrings(
"%TEMP%"
)
12.
13.
' テキストファイルを出力用に開く
14.
Set
OutObj = Fs.OpenTextFile( TempFolder &
"\_guid_text.txt"
, 2,
True
)
15.
16.
' GUID を出力
17.
guid = Left( TypeLib.Guid &
""
, 38 )
18.
OutObj.Write guid
19.
20.
' clip.exe を使用してクリップボードにコピー
21.
' ※ 同期処理でコマンドプロンプトを表示しません
22.
Call
WshShell.Run(
"cmd.exe /c clip.exe < "
""
& TempFolder &
"\_guid_text.txt"
""
,0,
True
)
23.
24.
' メッセージ
25.
MsgBox( guid &
" をクリップボードにコピーしました"
)
2) clip.exe を使用したセオリー的な取得 クリップボードへのアクセスは clip.exe ( コマンドプロンプトでリダイレクトが必要です )
01.
' GUID 取得用
02.
Set
TypeLib = CreateObject(
"Scriptlet.TypeLib"
)
03.
04.
' 外部実行
05.
Set
WshShell = WScript.CreateObject(
"WScript.Shell"
)
06.
07.
' GUID を取得
08.
guid = Left( TypeLib.Guid &
""
, 38 )
09.
10.
' clip.exe を使用してクリップボードにコピー
11.
' ※ 同期処理でコマンドプロンプトを表示して一旦停止します
12.
' 1) テキストの内容をクリップボードにコピー]
13.
' 2) メッセージ
14.
' 3) pause で停止
15.
Call
WshShell.Run(
"cmd.exe /c echo "
& guid &
" | clip.exe & echo "
& guid &
" をクリップボードにコピーしました"
&
" & pause"
, ,
True
)
3) InternetExplorer.Application でクリップボードへコピーする
01.
' GUID 取得用
02.
Set
TypeLib = CreateObject(
"Scriptlet.TypeLib"
)
03.
04.
' クリップボード用
05.
' ※ HTA 等では直接 window.clipboardData より実行
06.
' ※ するように書き換える必要があります
07.
Set
objIE = CreateObject(
"InternetExplorer.Application"
)
08.
objIE.Navigate(
"about:blank"
)
09.
Do
While
objIE.Busy
10.
' 100 ミリ秒
11.
Wscript.Sleep 100
12.
Loop
13.
14.
Call
objIE.document.parentWindow.clipboardData.SetData(
"Text"
, TypeLib.Guid &
""
)
15.
objIE.Quit
16.
17.
WScript.Echo
"クリップボードにコピーしました"
& vbCrLf & vbCrLf & TypeLib.Guid
4) 自分でクリップボードへコピーする
1.
' GUID 取得用
2.
Set
TypeLib = CreateObject(
"Scriptlet.TypeLib"
)
3.
4.
Call
InputBox(
"コピーして使用して下さい"
,
"新しい GUID を取得しました"
,TypeLib.Guid)