忍者ブログ

クリップボードの内容をテキストファイルに保存するVBScript①

2020年04月26日
LiveMailを使ってて、印刷や保存をするとき、
印刷プレビューを表示して、印刷ボタンを押す。

だけど、Edgeの印刷はUIがいけてないし、LiveMailの印刷プレビューとかモサモサ。
PDF保存に至っては、PDFプリンタ選択してファイル名指定ってもうイヤ。

じゃあもうテキストファイルでいいじゃん!という話。


テキストファイル扱うんだったら,VBscriptでできるんじゃね?と思いつくってみた。
いずれもググってすぐ欲しいソースが出てきた。めっちゃ簡単やん。

処理の流れ


まずは、クリップボードのテキストを取得。
http://osanai.org/47/

次に、テキストの内容をファイルに出力。
https://win.just4fun.biz/?WSH/ファイルを新規に作成しテキストを書き込むサンプルコード#h38cd307

これで十分そうだけど、保存するファイル名変えたいよね。
now関数で現在時刻を文字列で取れるので、Replaceで置換してファイル名に放り込み。

ファイル名を指定するだけで、スクリプトファイルと同じディレクトリに
クリップボードの内容が日付入りのファイル名で保存される。

いい感じだ!!!

以下、ソース。
の前に、やっぱりファイル名とか自由に変えられたほうがいいよね。

InputBoxで文字を入れたら、それがファイル名に使われる仕様も入れてみた。

今度こそソース。

dim ClipText 
ClipText=GetClipboardText()
'テキスト取得
dim iText
iText = inputbox("ファイル名を指定")

'ファイル名を生成
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)
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
« 前のページ | HOME |