こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2016-03-09 17:36:16

QNo.9140512

困ってます

質問者が選んだベストアンサー

こんにちは

Sub a()
  Dim mPSet As Long
  Dim o   As Object
  Dim b   As Workbook
  
  Set o = CreateObject("Excel.Application")
  o.Visible = True
  Set b = o.Workbooks.Open(freesoft)


こんな感じですけど、試して下さい。

投稿日時 - 2016-03-11 10:14:00

お礼

ありがとうございました。
ご教示頂いたように修正しましたところ、動作しました。
当方の不勉強から、カレントドライブ、フォルダが変更できないなど、いろいろ別の問題もおこりましたが、なんとか、修正できました。

投稿日時 - 2016-03-18 16:41:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは
試せないので分かりませんが、別インスタンスでExcelアプリを起動して
そちらで、フリーソフトを開いて制御するのはダメでしょうか?
試してみてはどうですか?

投稿日時 - 2016-03-10 07:52:10

お礼

回答ありがとうございました。
「別インスタンス」勉強して、トライしてみます。
もし、可能であれば、別インスタンスをどの様に、適用すれば良いか、ご教示願えませんでしょうか。

投稿日時 - 2016-03-11 09:43:36

あなたにオススメの質問