teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

this_sheet\.Activateを追加(マトリクス順次入力シート以外がアクティブな場合にエラーとなるため)

2016/08/12 09:00

投稿

minr
minr

スコア37

answer CHANGED
@@ -50,6 +50,7 @@
50
50
  Next
51
51
 
52
52
  '入力領域を範囲選択
53
+ this_sheet.Activate
53
54
  this_sheet.Range(Cells(2 + 1, 6 + 1), Cells(2 + UBound(Files_1), 6 + UBound(Files_2))).Select
54
55
 
55
56
  '自動アクティベート

3

表現を一部修正

2016/08/12 09:00

投稿

minr
minr

スコア37

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  マトリクスを作成した後、**入力領域を範囲選択し**(←ここが大事です)、入力→TAB押下→入力...と操作を繰り返していけば、普通に順番に入力できると思います。
4
4
 
5
5
  **追記:**
6
- **アクティベートを自動で行う処理を追加しました。**
6
+ **不要とは思いましたが、念のためアクティベートを自動で行う処理を追加しました。**
7
7
  **仕組みとしては、マクロの最後で10秒に1回TABキーを押下するPowerShellコマンドを実行しています。**
8
8
  **入力領域が範囲選択されていることが前提となりますので、方向キーなどで範囲選択を解除しないようにご注意下さい。**
9
9
 

2

アクティベートを自動で行う処理を追加しました。

2016/08/12 08:08

投稿

minr
minr

スコア37

answer CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  マトリクスを作成した後、**入力領域を範囲選択し**(←ここが大事です)、入力→TAB押下→入力...と操作を繰り返していけば、普通に順番に入力できると思います。
4
4
 
5
+ **追記:**
6
+ **アクティベートを自動で行う処理を追加しました。**
7
+ **仕組みとしては、マクロの最後で10秒に1回TABキーを押下するPowerShellコマンドを実行しています。**
8
+ **入力領域が範囲選択されていることが前提となりますので、方向キーなどで範囲選択を解除しないようにご注意下さい。**
9
+
5
- 念のため、質問者様のVBAコードを一部修正したものも載せておきます。
10
+ 質問者様のVBAコードを一部修正したものも載せておきます。
6
11
  (修正したのは最後の処理のみで、あとはインデントを付けただけです)
7
12
 
8
13
  ```VBA
@@ -46,5 +51,32 @@
46
51
 
47
52
  '入力領域を範囲選択
48
53
  this_sheet.Range(Cells(2 + 1, 6 + 1), Cells(2 + UBound(Files_1), 6 + UBound(Files_2))).Select
54
+
55
+ '自動アクティベート
56
+ Call 連続キー押下("{TAB}", UBound(Files_1) * UBound(Files_2))
49
57
  End Sub
58
+
59
+ Sub 連続キー押下(ByVal keyString As String, ByVal cnt As Long, Optional ByVal interval As Integer = 10)
60
+ Dim command As String
61
+ command = ""
62
+
63
+ 'PowerShellコマンド生成
64
+ ' 初期処理
65
+ command = command & "[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');"
66
+ command = command & "$keyString='" & keyString & "';"
67
+ command = command & "$cnt=" & cnt & ";"
68
+ command = command & "$interval=" & interval & ";"
69
+
70
+ ' PowerShellウィンドウが表示されフォーカスが移るため、Alt+Tab押下でExcelにフォーカスを戻す
71
+ command = command & "[System.Windows.Forms.SendKeys]::SendWait('%{TAB}');"
72
+
73
+ ' 連続キー押下
74
+ command = command & "for($i=0;$i -lt $cnt;$i++){"
75
+ command = command & " sleep -s $interval;"
76
+ command = command & " [System.Windows.Forms.SendKeys]::SendWait($keyString);"
77
+ command = command & "}"
78
+
79
+ 'PowerShellコマンド実行
80
+ Call CreateObject("Wscript.Shell").Exec("powershell -command """ & command & """")
81
+ End Sub
50
82
  ```

1

修正箇所を明記

2016/08/12 08:07

投稿

minr
minr

スコア37

answer CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  マトリクスを作成した後、**入力領域を範囲選択し**(←ここが大事です)、入力→TAB押下→入力...と操作を繰り返していけば、普通に順番に入力できると思います。
4
4
 
5
- 念のため修正したVBAコードも載せておきます。
5
+ 念のため、質問者様のVBAコードを一部修正したのも載せておきます。
6
+ (修正したのは最後の処理のみで、あとはインデントを付けただけです)
6
7
 
7
8
  ```VBA
8
9
  Sub test_マトリクス順次入力()