2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

« ◆自動ログインツール(ソース表示について) | トップページ | @アニメ(2010春アニメOP、ED) »

2010年2月21日 (日)

▲VBScript(文字列をクリップボードへコピー)

 VBScriptネタ初投稿です。
 今、VBScriptでいろいろツールを作成しているのですが、VBScript初心者の私にとってはVBAと同じなようで結構違いがあって戸惑っています。メーラーに文字列をSendKeysで流し込もうとしたのですが全角文字が文字化けしてしまいます。そこでクリップボード経由で貼り付けようとしたのですがVBScriptはクリップボードが不得手のようですね。
 クリップボード使用方法として世間ではIEオブジェクトを利用したりInputBoxを利用したりといったサンプルが花盛りのようです。詳細は紹介サイトを検索していただきたいのですが、IEはセキュリティの問題があったり、InputBoxはVBScript単体で処理できる利点がありますが一瞬画面が表示されるのが残念です。
 万人向けではありませんが、Excelを持っている方(特に会社では有効だと思いますが)向けに以下の方法を考えてみました。どうでしょうか?
 実際はメーラーを想定していますが、このサンプルはエクスプローラを起動してアドレス欄に文字列を貼り付けるものです。毎回Excelオブジェクトを生成しては削除する構造はちょっといかがなものかなと思いますがまぁそこは大目に見てやってくださいね。Sleepタイムは皆様のPCに合わせて調整してみてください。

option explicit

Dim arg,wsh
set wsh = CreateObject("WScript.Shell")

arg="進捗状況" & Mid(Replace(FormatDateTime(Now, 1),"/",""),3)

'クリップボードに文字列コピー
Call RangeCopy( arg )
WScript.sleep 300

'エクスプローラに貼り付け
wsh.run "c:\windows\explorer.exe"
WScript.sleep 800
wsh.sendkeys "{TAB 2}"
WScript.sleep 300
wsh.sendkeys "^v"

set wsh = Nothing
WScript.Quit

'#########################################
'# クリップボードに文字列コピー
'#
'# 引数 arg:対象文字列
'# 戻り値 なし
'#########################################
Public Sub RangeCopy( arg )
Dim oExl,oWb
set oExl = WScript.CreateObject("Excel.Application")
set oWb = oExl.WorkBooks.Add()

With oExl.Sheets(1).Range("A1")
.value = arg
.copy
End With

oExl.DisplayAlerts = False
oWb.close
oExl.Quit
set oWb = Nothing
set oExl = Nothing

End Sub

« ◆自動ログインツール(ソース表示について) | トップページ | @アニメ(2010春アニメOP、ED) »

VBScript」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ◆自動ログインツール(ソース表示について) | トップページ | @アニメ(2010春アニメOP、ED) »