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)