クリップボードの内容をテキストファイルに保存するVBScript②
2020年04月27日
前回、クリップボードの文字列を取得して、
日時+ファイル名指定でメモ帳に保存するVBscriptを作った。
動作確認したところ、環境依存文字が含まれるとうまくいかない。
WEBページの文字列って環境依存系多いのよね。
ブラウザ履歴を取得するマクロを作ったときも苦労したな。。。
で、調べたらいいページ発見。
https://blog.systemjp.net/entry/2013/04/10/191821
CreateTextFileの指定を変えるとUnicodeになるようだ。
修正前:fso.CreateTextFile(fName, true)
修正後:fso.CreateTextFile(fName, true,true)
CreateTextFileメソッドについては、ここがわかりやすい。
https://vbabeginner.net/filesystemobject%E3%81%AEcreatetextfile%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89/
ただし、VBscript自体の文字コードもUnicodeで保存する必要あり!
その他、InputBoxを表示中にコピー操作もあるので、処理順を変更。
以下、ソース。
'ファイル名を生成
dim iText
iText = inputbox("ファイル名を指定")
dim ClipText
ClipText=GetClipboardText()
dim date,fName
date=Replace(now, "/", "")
date=Replace( date , ":" , "" )
date=Replace( date , " " , "_" )
date=left(date , 13)
if iText ="" then
fName ="ClipText_" & date & ".txt"
else
fName ="ClipText_" & date & "(" & iText & ").txt"
end if
'テキストファイルを作って書き込み https://win.just4fun.biz/
dim fso,tso
Set fso = CreateObject("Scripting.FileSystemObject")
Set tso = fso.CreateTextFile(fName, true,true) ' unicode
tso.Write(ClipText)
tso.Close
'クリップボードを取得 'http://osanai.org/47/
Function GetClipboardText()
Dim objHTML
Set objHTML = CreateObject("htmlfile")
GetClipboardText = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
End Function
PR
Comment