dポイントプレゼントキャンペーン実施中!

こんにちは、WSHを業務使おうと考えております。
まだ始めたばかりで、いろいろ調べてはみたのですが、検索方法が悪いのか解消方法が見つかりません。
以下のスクリプトにてメール作成を自動化しようとしておりますが、日本語のファイル名、件名に日本語を使うと文字化け?してしまい、思ったようにうまくいきません。
そもそもSendKeysを使っているのが悪いのでしょうか
ご教授いただけないでしょうか?よろしくお願いいたします。

set WshShell = WScript.CreateObject("WScript.Shell")
'メーラー立ち上げ'
WshShell.Run "MSIMN.EXE"
WScript.Sleep 5000
'新規メール作成'
WshShell.SendKeys "%{F}"
WshShell.SendKeys "N"
WshShell.SendKeys "M"
'ファイル添付'
WshShell.SendKeys "%{I}"
WshShell.SendKeys "A"
WshShell.SendKeys "C:\業務週報.xls"
WshShell.SendKeys "%{A}"
WshShell.SendKeys "ITODPC02@gmail.com"
WshShell.SendKeys "{TAB 2}"
WshShell.SendKeys "業務週報送信"
WshShell.SendKeys "{TAB 2}"
WshShell.SendKeys "今週の業務週報を送信します。"
WshShell.SendKeys "%{F}"
WshShell.SendKeys "{E}"
'メーラー終了'
WshShell.SendKeys "%{F4}"

A 回答 (3件)

WSHではSendKeysは、日本語はおくれませんね。


クリップボード経由でやってみてください。
例)メモ帳に「C:\業務週報.xls」という文字を書き込む

set WshShell=wscript.createObject("Wscript.shell")
WshShell.Run("notepad")
Set oClip=New Clipboard
oClip.Text="C:\業務週報.xls"
WSHShell.SendKeys "^V~",true
Set oClip=Nothing

Class Clipboard
Private oIE, bSuccess
Private Sub Class_Initialize()
Set oIE=CreateObject("InternetExplorer.Application")
oIE.Navigate "about:blank"
Do While oIE.Busy Or oIE.Document.ReadyState <> "complete"
'WScript.Sleep 10
oIE.Sleep 10
Loop
End Sub
Private Sub Class_Terminate()
oIE.Quit
Set oIE=Nothing
End Sub
Public Default Property Get Text ' 既定プロパティ Text
Text=oIE.Document.ParentWindow.clipboardData.getData("Text")
End Property
Public Property Let Text(sData)
bSuccess=oIE.Document.ParentWindow.clipboardData.setData("Text", sData)
End Property
End Class
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
SendKeysでは日本語は送れないのですね。
回答いただきましたスクリプトはまだまだ理解不足ですので、すぐには分からないのですが、クリップボード経由でやってみます。
ありがとうございました。

お礼日時:2008/06/06 14:31

こんにちは。



同様の問題領域 (Windows 自動化) に対して適用可能なソフトウェアとして UWSC Pro がありますのでご紹介します。

QNo.4021626『VBSでファイルの自動保存』

こちらで UWSC Pro のスクリプト例を掲載しています。SENDSTR 組み込み手続きを用いて日本語ファイル名も設定可。(QNo.4021626 で言えば、SENDSTR(wid2, "test.txt") の "test.txt" を "あいう.txt" としても動作する、という意)

ご参考まで。

参考URL:http://okwave.jp/qa4021626.html, http://www.uwsc.info/
    • good
    • 0
この回答へのお礼

ありがとうございます。
なんとか解決することができました。
ソフトウェアにつきましては、参考にさせていただきます。
ありがとうございました。

お礼日時:2008/06/10 15:18

#1の方の書いた方法は、IEのインターネットゾーンのセキュリティーを強めていると使えません。


その場合はWindowsの標準機能だとどうしても駄目です。
もしOfficeがインストールされていれば以下の方法でクリップボードを使うことが出来ます。

Set uf=CreateObject("Forms.Form.1")
Set tb=uf.Controls.Add("Forms.TextBox.1").Object
tb.Text="ペーストしたい文字列"
tb.SelStart=0
tb.SelLength=tb.TextLength
tb.Copy
Set tb=Nothing
Set uf=Nothing

で、クリップボードに文字列が入るので、そのあと、^V をSendKeysすればいいです。

SendKeysは「文字」を送るのじゃなくてあくまで「キー」を送るので日本語は駄目ですね。もし「IMEオン」の「キー」がサポートされていれば、かなくらいは可能でしょうけど、漢字は何回「変換キー」を送らないといけないかわからないのでいずれにせよ無理。
    • good
    • 1
この回答へのお礼

分かりやすい回答ありがとうございます。
SendKeysはあくまでキーを送るのですね。
ご教授いただきました構文でおぼろげですが、理解できました。
改めて作成してみます。

ありがとうございました。

お礼日時:2008/06/09 09:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!