回答編集履歴

2

追記の日時を正しいものに修正

2019/08/23 13:59

投稿

TanakaHiroaki
TanakaHiroaki

スコア1063

test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
  ```
72
72
 
73
- ---#8/19# 追記
73
+ **---追記:2019/08/23 22:59**
74
74
 
75
75
  VBAのSendKeysは安定しないので、WshShellオブジェクトのSendKeysを試してみてください。
76
76
 

1

WshShellオブジェクトのSendKeysを追記

2019/08/23 13:59

投稿

TanakaHiroaki
TanakaHiroaki

スコア1063

test CHANGED
@@ -69,3 +69,103 @@
69
69
  End Sub
70
70
 
71
71
  ```
72
+
73
+ ---#8/19# 追記
74
+
75
+ VBAのSendKeysは安定しないので、WshShellオブジェクトのSendKeysを試してみてください。
76
+
77
+ メモ帳を起動して文字を送る事例を紹介しますので、参考にしてください。
78
+
79
+ ```VBA
80
+
81
+ '参考サイト:Windows管理者のためのWindows Script Host入門
82
+
83
+ '第5回 WshShellオブジェクトの詳細(1)(4 / 4)
84
+
85
+ 'http://www.atmarkit.co.jp/ait/articles/0407/08/news101_4.html
86
+
87
+
88
+
89
+ '②WshShellオブジェクトのSendKeysで記録
90
+
91
+ Sub memo_txt2()
92
+
93
+ Dim rc As Long
94
+
95
+ rc = Shell("notepad.exe", vbNormalFocus)
96
+
97
+ DoEvents
98
+
99
+ Debug.Print rc
100
+
101
+ If rc = 0& Then
102
+
103
+ MsgBox "メモ帳の起動に失敗しました。"
104
+
105
+ Exit Sub
106
+
107
+ End If
108
+
109
+
110
+
111
+ With CreateObject("Wscript.Shell")
112
+
113
+ Do Until .AppActivate("無題 - メモ帳")
114
+
115
+ DoEvents
116
+
117
+ Loop
118
+
119
+
120
+
121
+ Dim sMessage As String
122
+
123
+ sMessage = "WshShellオブジェクトのSendKeysで記録されました。"
124
+
125
+ If Len(sMessage) <> LenB(StrConv(sMessage, vbFromUnicode)) Then
126
+
127
+ '日本語の場合、クリップボードへ入れてCTRL+v
128
+
129
+ Call CopyToClipboad2(sMessage)
130
+
131
+ .SendKeys "^v" '小文字にすべし
132
+
133
+ Else
134
+
135
+ .SendKeys sMessage
136
+
137
+ End If
138
+
139
+ End With
140
+
141
+ End Sub
142
+
143
+ ```
144
+
145
+ ```VBA
146
+
147
+ 'クリップボードへ文字列を格納する関数(改良版)
148
+
149
+ 'https://www.excel-chunchun.com/entry/AutoFilterPlus#クリップボード関連
150
+
151
+
152
+
153
+ Private Sub CopyToClipboad2(ByVal strInput As String)
154
+
155
+ With CreateObject("Forms.TextBox.1")
156
+
157
+ .MultiLine = True
158
+
159
+ .Text = strInput
160
+
161
+ .SelStart = 0
162
+
163
+ .SelLength = .TextLength
164
+
165
+ .Copy
166
+
167
+ End With
168
+
169
+ End Sub
170
+
171
+ ```