2017-03-20 94 views
1

當前,我有一個工作簿,它可以在同一個文件夾中循環工作簿,並將特定單元格的數據複製回主工作簿。如果我想更改爲代碼複製單元格的單元格,則必須在代碼中更改此值。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

+0

那麼,你的代碼不工作,或做一些意想不到的事情? – SJR

+1

僅供參考,您需要將'工作表'添加到'Range'對象的*所有用途*之前。 IE:'RngDest = destsheet.Cells(destsheet.Rows.Count,1).End(xlUp)'和'.Cells(1).Value = originsheet.Range(originsheet.Range(「A1」)。Value).Value ' – BruceWayne

+0

我不記得這是否是絕對必要的,但您可能會將'&「/」&'更改爲'&「\」&'。它可能用作'/',因爲Excel可以打開互聯網路徑,'/「'和'」\「'似乎可以在路徑中互換;我不是很確定。 – Jeeped

回答

0

我對不起,但我相信你沒有說清楚。但是,你可能會試圖讓這樣的事情(糾正我,如果我錯了):

destinationsheet.Range("A1") = originsheet.Range(destinationsheet.Range("A1")) 

這將使您的工作簿大師的價值由其他工作表的單元格地址的內容所取代。

+1

謝謝,這工作。我記得之前嘗試過,但是我一定錯誤地輸入了一些內容。 試過後,你的評論又一次,它工作得很好:) – VSC

+0

請給我豎起大拇指爲我的答案!我剛剛簽過堆棧溢出,我需要聲望! ;) –

+0

我已經有了,但是因爲我的分數低於15,所以沒有顯示:( – VSC

相關問題