2017-09-30 17 views
0

ソフトウェアは大きなデータベースを使用して購入しました。出力は単純なExcelワークブックで、どこにも保存されず(パスはありません)、一般的に "Book1"画面。異なるExcelインスタンス間でコピーして貼り付けます

この出力をソフトウェアに依頼するたびに、このブックの内容をコピーして、名前を付けたように別のブック、マザーブックに貼り付けて、すべてのデータを統合する必要があります。

この操作を1日に何十回も繰​​り返さなければならないので、この作業を自動化するためのVBAコードを作成することをお勧めします。

だから... ...私は非常にシンプルなものを作っ:

ActiveWorkbook.ActiveSheet.Range("A1:C32").Copy 
Workbooks("Mother-Workbook.xlsm").Worksheets("Sheet1").Range("B6:D37").PasteSpecial Paste:=xlPasteValues 

問題がある...ソフトウェアは、新しいブックを出力するたびに、それがExcelの新しいインスタンス内に作成されているようです私のマクロには届きません。つまり、私はコードを実行しますが、何も起こりません。私のマザーブックは、保存されていないジェネリックを見つけず、別のExcelインスタンス「Book1」にあります。

出力を開いた後でマザーブックを開くと、同じインスタンスにあるため、コードは機能します。しかし、マザーブックを常に開いたままにしておく必要があるので、私はこれをすることはできません。新しい出力ファイルのそれぞれを保存する必要もありません。それは私に多くの時間がかかります。

私は2016年版のExcelを使用していますが、すでに2010年も試しています。私のOSはWindows 10 Proです。

どのような考えですか?

+0

アクティブワークブックは、book1がフォアグラウンド(最後にアクティブになっている)の場合にのみbook1を認識します。代わりにブック(「book1」)を試してください。両方のファイルがプロジェクトエクスプローラ(Ctrl + F11)で同時にvbeに表示されないので、Excelインスタンスのストーリーが真である場合 –

答えて

1

このコードはそれを行う必要があります。

Dim xlapp As Object 
Set xlapp = GetObject("Book1").Application 

xlapp.ActiveWorkbook.ActiveSheet.Range("A1:C32").Copy 
Workbooks("Mother-Workbook.xlsm").Worksheets("Sheet1").Range("B6:D37").PasteSpecial Paste:=xlPasteValues 

xlapp.DisplayAlerts = False 
xlapp.Quit 

あなたは必ずExcelファイルが作成され、次回は、それはまた、「ブック2」「BOOK1」と呼ばれていないことになることを確認するためにあなたのコードの末尾に「BOOK1」をクローズする必要があります注意してください。 Excelのインスタンスを閉じている間に、Excelのインスタンスを閉じることもできます。 GetObject関数の詳細については

、あなたはthis page

+0

うまく動作します!どうもありがとう!もう1つの質問。 'close'コマンドは、灰色の背景を持つ空のExcelインスタンスを開いたままにします。インスタンスのクローズの方法はありますか? – Buddy

+0

ええ、あなたの質問からは、Book1が唯一のファイルだったので、インスタンスを開いたままにしておくことは何の意味もないと思います。私はそれに応じて私の答えに変更を加えます。 – DecimalTurn

0

どうもありがとう、DecimalTurnとパトリックLepelletierを見てすることができます!

GetObjectが本当に助けてくれました。 「終了」コマンドは次のようにうまく機能しました。

Sub CollectA() 

Dim oApp As Application 
Dim oWb As Workbook  
Set oWb = GetObject("Book1") 
Set oApp = oWb.Parent  
oWb.ActiveSheet.Range("A1:C32").Copy  
Workbooks("Mother-Workbook.xlsm").Worksheets("Sheet1").Range("B6:D37").PasteSpecial Paste:=xlPasteValues 
oWb.Close False 
oApp.Quit 
End Sub 

乾杯!

関連する問題