
こんな作業を自動化・高速化できないでしょうか。
ある入力フォームについて、Excelデータから転記する作業をしています。その入力フォームには縦横に入力用テキストボックスが並んでいるわけですが、横方向の入力をする場合
ExcelファイルのA1セルをコピー(Ctrl+C) → 入力フォームをアクティブに(Alt+Tab) → 貼付け(Ctrl+V) → Excelをアクティブに(Alt+Tab) → ExcelのB1セルへ移動(Tab)してコピー(Ctrl+C) → 入力フォームをアクティブに(Alt+Tab) → 次のテキストボックスへ移動(Tab)して貼付け(Ctrl+V)
・・・というのを繰り返してやっています。非常に単純な機械的繰り返し作業なので、なんとか自動化できないでしょうか。
ちなみにA1セル~B1セルを一度にコピーしてテキストボックスに貼付けても、2つのテキストボックスに一度に貼付けられたりはせず、1つのテキストボックスにしか貼付きません。また、データの自動取込み機能などは、その入力フォームにはありません。
No.7ベストアンサー
- 回答日時:
それではマクロの部分だけ少し変更
---------------
Sub KDMacro2()
Dim v As Range
AppActivate ("無題 - メモ帳")
For Each v In Range(Range("A1"), Range("A1").End(xlDown).End(xlToRight))
SendKeys v.Value
SendKeys "{TAB}"
Call Sleep(1000)
Next
end sub
---------------
("無題 - メモ帳")←この部分を目的のウィンドーの名前に変更
添付画像参照
※名前が付いていないウインドーの場合はウインドウハンドルを取得する必要がありますが
面倒臭いのでその時はまたその時で
Call Sleep(1000)←この数値を小さくすると書き込みの速度が早くなります
※ただあまり早くし過ぎると、対象のアプリの反応に拠っては正しく動作しないので注意
注意
目的のウィンドーは最小化しないで下さい

No.6
- 回答日時:
No2です
難しいとは書いたけど簡単な例を一つ
-----------------
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub KDMacro()
Dim v As Range
AppActivate Shell("Notepad.exe", vbNormalFocus)
For Each v In Range(Range("A1"), Range("A1").End(xlDown).End(xlToRight))
SendKeys v.Value
SendKeys "{TAB}"
Call Sleep(1000)
Next
end sub
-----------------
↑
これを標準モジュールに貼り付けて
A1セルを起点になにか適当なデータを入力して実行してみてください
添付された図のようにデータを順にメモ帳に書き出します
1セルのデータを書き出してTABで間隔開けてとしていますので、質問内容の動作に近いと思いますよ

なるほど確かにできました。贅沢を言うようなのですが、AppActivate Shell("Notepad.exe", vbNormalFocus)と、アプリケーション名を具体的に指定し宣言しておくことは必須なのでしょうか。その入力フォームのアプリケーション名をこのように指定できる自信がなく、できれば「Alt+Tab」で切り替えながらやる方法を取れないかなと思っているのですが・・・。
No.5
- 回答日時:
>SendKeysとかもやってみましたが、Excelどうしのやり取りならともかく、別アプリケーションとのコピペやり取りといったときに、上手く行かない気がするのですが、気のせいですかね。
他のアプリケーションを使用する場合でも、すべての操作をショートカットで実行できるならSendkeysを使うことでコピーペーストが可能です。
具体的にはマクロを実行するときにExcelと入力フォームの2つのアプリケーションを立ち上げておいて、ExcelでCtrl+Cでコピー、Alt+タブでアプリケーションを切り替えて、Tabキーによるテキストボックスの選択とCtrl+Vのショートカット操作での貼り付け作業を繰り返せばよいことになります。
このときExcelでマクロ実行時のスタートセル(たとえばA1セル)を決めておき、2つ目のデータのB1セルの選択はAlt+Tabでエクセルに戻ってきたときに→キーのショートカット操作だけでB1セルを選択することが(すべてのマクロ操作を実行)できます。
たとえばExcelとメモ帳のみを立ち上げておいて、以下のコードを実行しても、メモ帳にデータが1回貼り付けばいい方で、上手く行きません。動作が短時間に連続しすぎるといけないのかと思ってSleepも入れたのですが、駄目です。Excel2010でやってみたのですが、なぜ上手くいかないのか。
Option Explicit
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub test()
Dim i As Integer
Do Until i = 5
ActiveCell.Copy
ActiveCell.Offset(1, 0).Activate
Call Sleep(1000)
Application.SendKeys "%{TAB}", True
Application.SendKeys "^v", True
Call Sleep(1000)
Application.SendKeys "%{TAB}", True
i = i + 1
Loop
End Sub
No.4
- 回答日時:
ショートカットキー操作をマクロで実行する場合はSendkeysのコマンドを利用します。
使用法は以下のページを参考にしてください。
http://msdn.microsoft.com/ja-jp/library/office/f …
しかし、質問内容だけを見ると、入力用のフォームのテキストボックスにわざわざコピー貼り付けするのではなく、直接元データをデータベースシート(?)に貼り付けるようなマクロにするほうが合理的なような気がします。
>質問内容だけを見ると、入力用のフォームのテキストボックスにわざわざコピー貼り付けするのではなく、直接元データをデータベースシート(?)に貼り付けるようなマクロにするほうが合理的なような気がします。
この意味は良く分かりませんが、そもそも入力フォームに入力するために下書きとして、Excelファイルを作るような感じなんですよね。最終目的が、入力フォームに入力・送信することなので・・・。SendKeysとかもやってみましたが、Excelどうしのやり取りならともかく、別アプリケーションとのコピペやり取りといったときに、上手く行かない気がするのですが、気のせいですかね。
No.2
- 回答日時:
簡単じゃないけど出来ますよ
キーボードでの入力内容をそのまま再現するだけなら
http://3rd.geocities.jp/kaito_extra/Source/Keybo …
↑
こんな方法で
Excelから入力フォームを操作するなら
http://www.moug.net/tech/exvba/0150106.html
http://www.excel-vba.net/excel-function-018.html
http://www.excel-vba.net/excel-application-006.h …
↑
こんな感じで
今回の場合はエクセル内のデータを転記するようなので、Excelのマクロでクリップボードを使い貼付けするような処理が適しているとおもいます
No.1
- 回答日時:
エクセルのことは詳しくありませんが…、
プレイヤーの操作を覚えて繰り返し再生するようなフリーソフトが沢山あります。
『キーボードマクロ』『マウスマクロ』などで検索してみてください。
キーボードマクロのソフトでは「FreeMacro!」がシンプルで使いやすかったのですが、
残念ながら64bitのWindows7では動作しませんでした…(--;。
ありがとうございました。書き忘れていましたが、入力フォームについて。横10マス×縦50マスというように、横のテキストボックス数は一定で縦方向は無限に続く、単純な形式です。「HiMacroEx」というのも使ってみましたが、なんかExcelでやると「クリップボードを空にできませんでした」とかいうエラーが出ちゃうんですよね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel内での検索結果をシート...
-
EXCELで特定のセルに表示...
-
エクセルVBA
-
エクセルでの検索ボックスの作...
-
Excelで、図形内の文字をセルに...
-
太字に設定されているセルの個...
-
シート保護とグループ化機能を...
-
Excelでセルをクリックす...
-
セルがクリックされた回数をカ...
-
マクロで入力済の最初のセルを...
-
エクセル マクロ チェックボックス
-
エクセル 数字をすべて○などの...
-
コピペして元のセルに戻るVBAに...
-
Excel ハイパーリンクのURLを別...
-
エクセルVBA セルに表示された...
-
エクセル 未入力セルがあると...
-
アポストロフィーの一括挿入 ...
-
Excel 行の連続データを列に参...
-
エクセルの画面で十字マークが...
-
Excel2010の指マークと白十字マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
Excel内での検索結果をシート...
-
エクセル 数字をすべて○などの...
-
Excelで、図形内の文字をセルに...
-
Excel ハイパーリンクのURLを別...
-
Excel2007 色のカウント (VBA)
-
クリックすると文章が表示され...
-
マクロを実行すると画像がズレ...
-
太字に設定されているセルの個...
-
Excelでセルをクリックす...
-
エクセルでPDFリンクを大量...
-
アポストロフィーの一括挿入 ...
-
エクセル 未入力セルがあると...
-
エクセルでページ数をあるセル...
-
シート保護とグループ化機能を...
-
ページ内ハイパーリンクの表示...
-
フォントの色を指定して削除出...
-
空白セルを空セルに置き換える...
-
Excel:セルの値(文字列)を数...
-
現在のセルの位置を返す関数は...
おすすめ情報