當前,我有一個工作簿,它可以在同一個文件夾中循環工作簿,並將特定單元格的數據複製回主工作簿。如果我想更改爲代碼複製單元格的單元格,則必須在代碼中更改此值。VBA:根據當前工作簿的單元格值複製另一個工作簿中的數據
但是,我有同事誰需要使用此工作表,以及從其他工作簿收集數據。 - 所以我需要使這個使用友好。 我想要做的是讓代碼讀取精簡版中的單元格值,並將該單元格值用作從其複製的單元格。
實施例:
如果鍵入在masterworkbook單元格A1「B3」和運行宏,宏將從originsheet B3複製數據,進masterworkbook的第一個單元。有沒有人有任何想法如何做到這一點?
或者類似的東西:
.Cells(1).Value = originsheet.Range(Range("CellValue from destinationsheet A1").Value).Value
這裏是我使用的代碼:
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
而且我的意思的圖片,如果IM不清楚: enter image description here
那麼,你的代碼不工作,或做一些意想不到的事情? – SJR
僅供參考,您需要將'工作表'添加到'Range'對象的*所有用途*之前。 IE:'RngDest = destsheet.Cells(destsheet.Rows.Count,1).End(xlUp)'和'.Cells(1).Value = originsheet.Range(originsheet.Range(「A1」)。Value).Value ' – BruceWayne
我不記得這是否是絕對必要的,但您可能會將'&「/」&'更改爲'&「\」&'。它可能用作'/',因爲Excel可以打開互聯網路徑,'/「'和'」\「'似乎可以在路徑中互換;我不是很確定。 – Jeeped