現在、ワークブックと同じフォルダ内のワークブックをループし、特定のセルのデータをマスターワークブックにコピーします。コードがセルをコピーする場所からセルに変更したい場合は、コード内でこの値を変更する必要があります。VBA:現在のワークブックのセル値に基づいて別のブックからデータをコピー
しかし、他のワークブックからデータを収集するために、このシートを使用する必要がある同僚もいます。 - 私はこれをフレンドリーにする必要があります。 私がしたいことは、コードがマスターワークブックのセル値を読み取らせ、このセル値をコピー元のセルとして使用することです。
例:私はmasterworkbookセルA1に「B3」と入力し、マクロを実行した場合
、マクロがmasterworkbookの最初のセルに、originsheetのB3からデータをコピーします。誰かがこれを達成するためにどのような理想を持っていますか?
か何かのように:場合には、イム不明確
Sub Consolidate()
Dim wkbkorigin As Workbook
Dim originsheet As Worksheet
Dim destsheet As Worksheet
Dim ResultRow As Long
Dim Fname As String
Dim RngDest As Range
Set destsheet = ThisWorkbook.Worksheets("Sheet1")
Set RngDest = destsheet.Cells(Rows.Count, 1).End(xlUp) _
.Offset(1, 0).EntireRow
Fname = Dir(ThisWorkbook.Path & "/*.xlsx")
'loop through each file in folder (excluding this one)
Do While Fname <> "" And Fname <> ThisWorkbook.Name
If Fname <> ThisWorkbook.Name Then
Set wkbkorigin = Workbooks.Open(ThisWorkbook.Path & "/" & Fname)
Set originsheet = wkbkorigin.Worksheets(1)
With RngDest
.Cells(1).Value = originsheet.Range(Range("A1").Value).Value
.Cells(2).Value = originsheet.Range(Range("A2").Value).Value
.Cells(3).Value = originsheet.Range(Range("A3").Value).Value
.Cells(4).Value = originsheet.Range(Range("A4").Value).Value
.Cells(5).Value = originsheet.Range(Range("A5").Value).Value
End With
wkbkorigin.Close SaveChanges:=False 'close current file
Set RngDest = RngDest.Offset(1, 0)
End If
Fname = Dir() 'get next file
Loop
End Sub
と私は何を意味するかの写真:ここ
.Cells(1).Value = originsheet.Range(Range("CellValue from destinationsheet A1").Value).Value
は、私が使用するコードです enter image description here
コードが機能しない、または予期しないことが起こりますか? – SJR
FYI 'Range'オブジェクトの*すべての使用*の前にワークシートを追加する必要があります。 IE: 'RngDest = destsheet.Cells(destsheet.Rows.Count、1).End(xlUp)'と '.Cells(1).Value = originsheet.Range(originsheet.Range(" A1 ").Value).Value ' – BruceWayne
これは厳密に必要かどうか覚えていませんが、'& "/"& 'を'& "\"& 'に変更する可能性があります。 Excelはインターネットパスを開くことができ、 ''/''と '' \ "'はパス内で互換性があるように見えるので、 '/'として機能するかもしれません。私は絶対に確信していません。 – Jeeped