• ベストアンサー

SHELL関数のSENDKEYについて

エクセルマクロで、下記命令を実行すると 【命令】  文章="0:00~12:00(今日)"  Shell "notepad.exe", vbNormalFocus SendKeys 文章 【出力】 0:00 12:00今日 メモ帳が開き↑と表示されます 本当は↓と表示したいです。 0:00~12:00(今日) どうやら『~』は改行 『(』『)』は空白として認識されているようです。 理由、解決方法等ご存知の方がいらっしゃいましたら、ご回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

一部訂正 ss = Mid(文章,1 )は ss = Mid(文章, n, 1 ) です if文も if InStr("~()",ss )> 0 then といった具合にした方が良いかも ・・・

fukujiro
質問者

お礼

解決いたいました。 コーディング例まで出していただいてありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

一度に全部指定するのではなく 文字ごとに送ってみましょう dim n as integer, s as string for n = 1 to Len(文章)   s = mid(文章,1)   ' 特殊文字のコーティング   if s = "(" or s = ")" or s = "~" or s = "%" or s = "+" _     or s = "^" or s = "%" or s= "{" or s = "}" then     s = "{" & s & "}"   end if   SendKeys s, true next といった具合です ・・・ # 当方の Excel2003ですと『日』が送れませんでした # SendKeysの次の行で Debug.Print s; を実行すれば送れましたが

fukujiro
質問者

お礼

早速の回答ありがとうございます。 本日帰宅後に試させていただきます。 {}で囲むと言うことは、記号もコントロールキー等と同等の特殊キー扱いなのですね 全角文字なので単純に他の文字と同じ扱いだと思っていました。 ありがとうございます。

関連するQ&A