2014-02-19 283 views
2

我正在運行VBA腳本,以便對選定文件夾中每個文件的行數進行計數,然後將其顯示在活動工作簿中。如何使用VBA中單元格的文件路徑?

Option Explicit 
Sub CountRows() 
    Dim wbSource As Workbook, wbDest As Workbook 
    Dim wsSource As Worksheet, wsDest As Worksheet 
    Dim strFolder As String, strFile As String 
    Dim lngNextRow As Long, lngRowCount As Long 

    Application.ScreenUpdating = False 

    Set wbDest = ActiveWorkbook 
    Set wsDest = wbDest.ActiveSheet 

    strFolder = Dir(Range("C7").Value) 
    strFile = Dir(strFolder & "*.xlsx") 
    lngNextRow = 11 
    Do While Len(strFile) > 0 
     Set wbSource = Workbooks.Open(Filename:=strFolder & strFile) 
     Set wsSource = wbSource.Worksheets(1) 
     lngRowCount = wsSource.UsedRange.Rows.Count 
     wsDest.Cells(lngNextRow, "F").Value = lngRowCount 
     wbSource.Close savechanges:=False 
     lngNextRow = lngNextRow + 1 
     strFile = Dir 
    Loop 

    Application.ScreenUpdating = True 

End Sub 

Chooing一個文件夾,我想用插在一個活動工作簿細胞「C7」,而不是在腳本編寫目錄的目錄。 我試圖取代:

strFolder = "C:\Users\user\Desktop\" 

strFolder = Dir(Range("C7").Value) 

,但它不工作。也許有人有任何想法?謝謝!

+0

嘗試向您的'Range'添加完全限定的名稱,如下所示:'Workbooks(「wbName」)。Worksheets(「shName」)。Range(「C7」)' –

+0

我不知道是否有任何不同之處可能會發生:但是對於我的id做了「按原樣」:我把它放到C7中:C:\ Users \ tstracke \ Desktop \ U-Wert-Rechner \ test 在你的文檔中,我在單元格F11中插入了數字21。 21是指定文件夾中一個文檔中的行數。 –

+0

對不起,我沒有得到它。我的意思是我應該如何定義strFolder? – Ale

回答

1

此行strFolder = Dir(Range("C7").Value)認定firts在(來自C7),然後目錄文件寫入此文件成可變strFolder(比方說,C:\temp\somefile.txt)的路徑。

您的代碼的下一行:strFile = Dir(strFolder & "*.xlsx")採取此路徑並添加*.xlsx。結果你會得到strFile = Dir("C:\temp\somefile.txt*.xlsx"),這是錯誤的。

因此,更改此代碼:

strFolder = Dir(Range("C7").Value) 
strFile = Dir(strFolder & "*.xlsx") 

到下一個:

strFolder = Range("C7").Value 
strFile = Dir(strFolder & "*.xlsx") 

順便說一句,我建議你爲Range("C7")像這樣指定表:wsDest.Range("C7")

+1

謝謝! 'strFolder = Range(「C7」)。Value'it works fine! :) – Ale

1

試試這個

dim strPath as string 
strPath = CurDir + "NameofFile.xls" 
+0

謝謝,我會檢查它! – Ale

相關問題