2014-12-31 4 views
8

2つの別々のインスタンスのExcelを実行していて、1つのブックの範囲から別のブックにデータをコピーしようとしています。Excelの2つのインスタンス間のコピー範囲

私はこのコードを持っている:

Sub CopyValues() 
Dim xlApp As Excel.Application 
Set xlApp = GetObject(, "Excel.Application") 
Dim Src As Range 
Dim Dst As Range 
    Set Src = xlApp.ActiveSheet.Range("A1:A9") 
    Set Dst = Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A9") 
    Src.Copy Dst 
End Sub 

はまた

Src.Value = Dst.Value 

はまだ何もしない最後の行のためにこれを試してみました、それはすべてのエラーを返しませんが、それは値をコピーしません。

私のVBAのスキルはあまり良くはありません。ちょうど2週間前にそれを学び始めました。

+2

実際に複数のExcelインスタンスが開いているのですか、複数のファイルが1つのインスタンスで開いていますか? – Degustaf

+0

2つのこと:なぜあなたは 'ActiveSheet'を使っていますか? 'Src'のシートを定義する必要があります。また、 'Src.Copy'と' Dst.PasteSpecial xlPasteValues'を試してみてください。 – Chrismas007

+0

はい私はExcelの複数のインスタンスを実行しており、残念ながらこれを回避する方法はありません。 –

答えて

0

だから私は私のコードが動作して得ることができ、問題は、ハンドルとあった。この変更:

Set xlApp = GetObject("c:\mypath\book1.xlsm").Application 

Set xlApp = GetObject(, "Excel.Application") 

をし、また使用してコピーする方法を変更前回の回答からのご提案

この問題に直面している人のための完全なコードは、

Sub CopyValues() 
Dim xlApp As Excel.Application 
Dim Src As Range 
Dim Dst As Range 
Dim Vals() as Variant 

Set xlApp = GetObject("c:\mypath\book1.xlsm").Application 

Set Src = xlApp.ActiveSheet.Range("A1:A9") 
Set Dst = Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("A1:A9") 

Vals = Src 
Dst.Value = Vals 
End Sub 

ありがとうございました。

1

クリップボードの使用を避け、他のExcelインスタンス(xlApp)へのハンドルが正しいと仮定すると、配列を使用してデータを取得して設定できるはずです。

Sub CopyValues() 
    Dim xlApp As Excel.Application 
    Dim Src As Range 
    Dim Dst As Range 
    Dim Vals() as Variant 

    Set xlApp = GetObject(, "Excel.Application") 

    Set Src = xlApp.ActiveSheet.Range("A1:A9") 
    Set Dst = Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A9") 

    Vals = Src 
    Dst.Value = Vals 
End Sub 
+0

まだ何もしないので、ハンドルが正しくないと仮定します。これが私の主な問題です。xlAppが正しい範囲を指すようにする方法です。また、私はSrc.CopyとDst.PasteSpecial xlPasteValuesを使用してみたところ、空のセルを貼り付けました。 Btwコメントにコードを挿入するには? –

+0

@OvidiuNacov "コメントにコードを挿入するにはどうすればよいですか?"非常に短くないか(約100文字)、または「絶望的」でない限り、試してみてください。 – pnuts

+0

コードの短い部分は@pnuts yeaですが、どうですか?私の以前のコメント "Src.CopyとDst.PasteSpecial xlPasteValues"のように –

関連する問題