Quantcast
Channel: OKWAVE 最新質問(Visual Basic/257)【本日】
Viewing all articles
Browse latest Browse all 7264

ファイル入力画面からファイル名を入れて継続して動作

$
0
0
excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい 他のEXCELファイルとして、フリーソフトを利用しています。 そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。) そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保存することを、入力データファイルを変えながら、繰り返し行いたいです。 そこで、処理マクロを作成しています。その手順とVBAを説明します。 1)フリーソフトを開き、 2)そのフリーソフトのシート内のボタンを、VBAで、マウスカーソルを移動させて、マウスのキー操作で、「押す」「離す」を行い、 3)ファイルの初期化の問合せの警告が出るので、キー操作で、「Y」を押し、 4)データファイルの名称をクリップボードにコピーし 5)EXCELのカレントフォルダを、データファイルのあるフォルダに変えて 6)DoEventsとして、フリーソフトのデータファイル入力画面を開いています。 この時、画面のポインタは、データ入力画面のファイル名入力欄にあり、 この後、データファイル名をクリップボードから入力したいので、 キー操作で、「crtl+v」としたいのですが フリーソフトのマクロが起動中で、作成している処理マクロに制御が移らないためと思いますが 入力できません。(人手での入力は可能ですが)、自動化したいので、どの様にすれば良いか教えて下さい。 マクロは長いので、抜粋して記載します。 sub a() (宣言文省略します。) Workbooks.Open freesoft Dim mPSet As Long mPSet = SetCursorPos(b,c) Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) keybd_event VK_Y, 0, fKEYDOWN, 0 keybd_event VK_Y, 0, fKEYUP, 0 Application.CutCopyMode = False Dim d As New DataObject With d .SetText e .PutInClipboard End With ChDrive f ChDir g DoEvents (ここで、止まります。) With d .GetFromClipboard .GetText End With keybd_event VK_RETURN, 0, fKEYDOWN, 0 keybd_event VK_RETURN, 0, fKEYUP, 0 DoEvents Dim mPSet2 As Long mPSet2 = SetCursorPos(h, i) Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) Workbooks(freesoft).SaveAs FileFormat:=xlNormal, Filename:=k Workbooks(k).Close End sub

Viewing all articles
Browse latest Browse all 7264

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>