2016-10-24 9 views
0

Excelファイル1のセル(1,1)をExcelファイル2のセル(1,1)にコピーしようとしています。 しかし、私がセル(2,20)で開きたいファイルと、変数j =セル(2,20)を割り当てて、ファイルをコピーする際にコード内で使用したいとします。私はそれに問題があるようです。ここでコピー時に変数を代入するとExcelファイルに変換されます

は私のコードです:

Sub Copy_Workbook() 

j = Cells(2, 20) 

Workbooks.Open ("C:\Users\GNPOWER\Desktop\TRADERS\Jonel\practice\data fetching\" & j & ".xlsx") 

Workbooks("Practice_Copy_From.xlsm").Worksheets("Sheet1").Cells(1, 1) = _ 
Workbooks(" & j & "&.xlsx").Worksheets("Sheet1").Cells(1, 1).Value 

End Sub 

私が宣言または何のような何かが足りないのですか?

プログラムを実行しているときに範囲9の添え字を取得しています。

+0

を開く必要はありません。これにより、すべての変数を宣言する必要があります。これは長期的にはデータ型を考えるのに役立ちます。 – nbayly

答えて

0

ワークブック名​​の宣言に明示的な引用符を追加する必要はありません。また、私が削除した拡張子「& .xlsx」の前にアンパサンドがありました。コードは次のようになります。

Sub Copy_Workbook() 

Dim j As String, wb As Workbook 
j = Cells(2, 20).Value2 
Set wb = Workbooks.Open("C:\Users\GNPOWER\Desktop\TRADERS\Jonel\practice\data fetching\" & j & ".xlsx") 
ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Value2 = wb.Worksheets("Sheet1").Cells(1, 1).Value2 

End Sub 
0

あなたも、あなたのモジュールの先頭で `オプションExplicit`を置くべきベストプラクティスとして「ソース」ファイル

Option Explicit 

Sub Copy_Workbook()   
    Dim pathName As String, fileName As String 

    fileName = Cells(2, 20).Value '<--| retrieve the file name from the currently active worksheet cell "A1" 
    pathName = "C:\Users\GNPOWER\Desktop\TRADERS\Jonel\practice\data fetching\" '<--| set the folder path where "source" workbooks resides 

    With Workbooks("Practice_Copy_From.xlsm").Worksheets("Sheet1").Cells(1, 1) '<--| reference your "target" cell 
     .Value = "='" & pathName & "[" & fileName & "]Sheet1'!$A$1" '<--| write a formula that references the proper cell in the proper worksheet of the proper workbook 
     .Value = .Value '<--| get rid of formula and leave value only 
    End With 
End Sub 
関連する問題