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

こんな作業を自動化・高速化できないでしょうか。
ある入力フォームについて、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つのテキストボックスにしか貼付きません。また、データの自動取込み機能などは、その入力フォームにはありません。

A 回答 (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)←この数値を小さくすると書き込みの速度が早くなります
※ただあまり早くし過ぎると、対象のアプリの反応に拠っては正しく動作しないので注意

注意
目的のウィンドーは最小化しないで下さい
「転記作業を自動化できないか」の回答画像7
    • good
    • 0
この回答へのお礼

ありがとうございました。今はちょっとテストできないですが、また試してみます

お礼日時:2014/12/22 00:11

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で間隔開けてとしていますので、質問内容の動作に近いと思いますよ
「転記作業を自動化できないか」の回答画像6
    • good
    • 0
この回答へのお礼

なるほど確かにできました。贅沢を言うようなのですが、AppActivate Shell("Notepad.exe", vbNormalFocus)と、アプリケーション名を具体的に指定し宣言しておくことは必須なのでしょうか。その入力フォームのアプリケーション名をこのように指定できる自信がなく、できれば「Alt+Tab」で切り替えながらやる方法を取れないかなと思っているのですが・・・。

お礼日時:2014/12/21 22:34

>SendKeysとかもやってみましたが、Excelどうしのやり取りならともかく、別アプリケーションとのコピペやり取りといったときに、上手く行かない気がするのですが、気のせいですかね。



他のアプリケーションを使用する場合でも、すべての操作をショートカットで実行できるならSendkeysを使うことでコピーペーストが可能です。

具体的にはマクロを実行するときにExcelと入力フォームの2つのアプリケーションを立ち上げておいて、ExcelでCtrl+Cでコピー、Alt+タブでアプリケーションを切り替えて、Tabキーによるテキストボックスの選択とCtrl+Vのショートカット操作での貼り付け作業を繰り返せばよいことになります。

このときExcelでマクロ実行時のスタートセル(たとえばA1セル)を決めておき、2つ目のデータのB1セルの選択はAlt+Tabでエクセルに戻ってきたときに→キーのショートカット操作だけでB1セルを選択することが(すべてのマクロ操作を実行)できます。
    • good
    • 0
この回答へのお礼

たとえば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

お礼日時:2014/12/21 22:27

ショートカットキー操作をマクロで実行する場合はSendkeysのコマンドを利用します。


使用法は以下のページを参考にしてください。

http://msdn.microsoft.com/ja-jp/library/office/f …

しかし、質問内容だけを見ると、入力用のフォームのテキストボックスにわざわざコピー貼り付けするのではなく、直接元データをデータベースシート(?)に貼り付けるようなマクロにするほうが合理的なような気がします。
    • good
    • 0
この回答へのお礼

>質問内容だけを見ると、入力用のフォームのテキストボックスにわざわざコピー貼り付けするのではなく、直接元データをデータベースシート(?)に貼り付けるようなマクロにするほうが合理的なような気がします。

この意味は良く分かりませんが、そもそも入力フォームに入力するために下書きとして、Excelファイルを作るような感じなんですよね。最終目的が、入力フォームに入力・送信することなので・・・。SendKeysとかもやってみましたが、Excelどうしのやり取りならともかく、別アプリケーションとのコピペやり取りといったときに、上手く行かない気がするのですが、気のせいですかね。

お礼日時:2014/12/21 20:09

やりたい事の詳細を書いてここで質問すれば、誰かしら回答してくれるでしょう。


例えばシート○○のセルA1をシート××のセルA2にコピー
キッチリ書けばキッチリ回答が付くと思います。

転記などの単調作業は、エクセルの関数やマクロの得意分野です。
    • good
    • 0
この回答へのお礼

詳細ならちゃんと書いていると思うのですが?少なくともあなたの言うような、Excelのシートどうしのコピー貼付けではないですけどね。

お礼日時:2014/12/21 20:04

簡単じゃないけど出来ますよ



キーボードでの入力内容をそのまま再現するだけなら
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のマクロでクリップボードを使い貼付けするような処理が適しているとおもいます
    • good
    • 0
この回答へのお礼

JScriptとかも、いろいろ勉強してみると良さそうですね

お礼日時:2014/12/21 20:06

エクセルのことは詳しくありませんが…、


プレイヤーの操作を覚えて繰り返し再生するようなフリーソフトが沢山あります。
『キーボードマクロ』『マウスマクロ』などで検索してみてください。

キーボードマクロのソフトでは「FreeMacro!」がシンプルで使いやすかったのですが、
残念ながら64bitのWindows7では動作しませんでした…(--;。
    • good
    • 0
この回答へのお礼

ありがとうございました。書き忘れていましたが、入力フォームについて。横10マス×縦50マスというように、横のテキストボックス数は一定で縦方向は無限に続く、単純な形式です。「HiMacroEx」というのも使ってみましたが、なんかExcelでやると「クリップボードを空にできませんでした」とかいうエラーが出ちゃうんですよね。

お礼日時:2014/12/21 13:48

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