忍者ブログ

クリップボードの内容をテキストファイルに保存する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
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字