Excel VBA について少しサポートが必要です。Excel と別のアプリケーションを切り替えてコピーし、別のアプリケーションから Excel に貼り付けています。私はすでにそのプロセスを停止していますが、現在アクティブなセルに貼り付ける方法についてアドバイスが必要ですD
。実際、Excel アプリケーション内で実行する必要がある正確なプロセスのリストを次に示します。
- [数値形式] 現在アクティブなセルに貼り付けます (常に
D:D
列に配置されます) - セルを 1 つ右にタブで移動
- [日付形式: "d-mmm"] 今日の日付
- タブ右
- [テキスト] 貼り付け
- タブ右
- 【会計】貼り付け
- タブ右
- その列に文字「X」を入力します
- 列から始めて、1 行下に入力し
D
ます。
これらのすべてのステップの間に、他のアプリケーションとやり取りするコードの大部分を把握しました。しかし、それに関しても 1 つの質問があります。そのアプリケーションでは、次のステートメントを実行しています。
With ATC.ActiveSession
(ATC は、アプリケーションのタイプ ライブラリを参照して、他のアプリケーションと対話するだけです)
With
アプリケーションがコピーと貼り付けを行ったり来たりするたびにステートメントを終了するのではなく、 with
Excel のライブラリを使用するステートメントとして何を使用する必要がありますか?
私が起こりたくないことの例:
Sub New_ATS()
Set ATC = GetObject(, "ATWin32.AccuTerm")
AppActivate "AccuTerm 2K2"
With ATC.ActiveSession
.InputMode = 1
.SetSelection 6, 15, 12, 15
.Copy
.InputMode = 0
End With
AppActivate "Microsoft Excel"
Selection.Paste '(not complete, part of question)
Selection.Offset 1, 0 'again, part of the question
AppActivate "AccuTerm 2K2"
With ATC.ActiveSession
.InputMode = 1
.SetSelection 14, 3, 20, 3
.Copy
.InputMode = 0
End With
AppActivate "Microsoft Excel"
' .... end of partial code (continues on)
End Sub
しかし、代わりにWith
ステートメントを「チェーン」したいのですが、ExcelのVBAを指すためにどのステートメントを使用するかわかりません。これは私が望むものです:
Sub New_ATS()
Set ATC = GetObject(, "ATWin32.AccuTerm")
AppActivate "AccuTerm 2K2"
With ATC.ActiveSession
.InputMode = 1
.SetSelection 6, 15, 12, 15
.Copy
.InputMode = 0
With Excels_Statement '?????
AppActivate "Microsoft Excel"
Selection.Paste '(not complete, part of question)
Selection.Offset 1, 0 'again, part of the question
AppActivate "AccuTerm 2K2"
With ATC.ActiveSession
.InputMode = 1
.SetSelection 14, 3, 20, 3
.Copy
.InputMode = 0
With Excels_Statement '????
AppActivate "Microsoft Excel"
End With
End With
End With
End With
' .... end of partial code (continues on)
End Sub