Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Excel 2010)
田ソフトを制御する
投稿日時: 18/05/20 00:44:20
投稿者: shimoichimabu

或るソフトに患者名、使用薬剤を入力し、これに基づく伝票を作成しています。
今回、このソフトに入力されたデータをエクセルに吐き出し、加工しようと思っています。
このソフトで期間設定し、該当患者名はExcelA列にすでに手動で書き込んでいます。
この患者名をソフトの検索画面に入力し、検索実行ボタンを押し、表示されたデータを
コピーし、ExcelB列にペーストします。期間設定の全患者に対して、この操作を
行いたいです。患者は大体200名近くの人数です。
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.SendKeys "^c"  セルA1をコピー
End Sub
 
セルA1をクリックすると、確かにセルA1にはコピーした時に出るセルの周りが破線で囲まれています。
しかし、以下のコードでは
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
    Application.SendKeys "^c"  セルA1をコピー
     
    AppActivate "FUKU", True ソフトの検索画面表示(この画面はあらかじめ手動で表示させておいた)
         
End Sub
 
セルA1はコピーされたというセルが破線で囲まれていなく、コピーコマンドが
キャンセルされています。なぜでしようか?
このあと色々なSendkeyで処理を行いたいですが、
前途多難です。AppActivate "FUKU", TrueのTrueは必要ですか?

回答
投稿日時: 18/05/20 08:00:38
投稿者: simple

こんにちは。
 
>前途多難です。AppActivate "FUKU", TrueのTrueは必要ですか?
Trueの有無云々よりも、SendKeysを使って他のアプリケーションを
操作すること自体が実り少ないと思います。
とりわけ、他のアプリケーションからデータを取得する際に、
適切な場所を指定することはまずもって不可能ではないでしょうか。
 
そのアプリケーションにはインポート・エクスポート機能が付属していませんか?
そういった方面からアプローチしたほうが良いと思います。

投稿日時: 18/05/20 23:55:30
投稿者: shimoichimabu

simpleさん回答ありがとうございます。
 
sendkeyは動作が不安定と聞いてはいましたが、やはりむづかしそうですね。
 
ご指摘の通り、別の方法を考えてみます。