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