0
我有一個特定的文件名下面的代碼:在通過各種文件循環時在VBA中編寫公式?
BD.Sheets("Sheet1").Cells(Rows.Count, 6).End(xlUp).Offset(1, 0).Formula = "=SUMIF('P:\Actuary\Cash Flow Forecast\Annual and Quarterly Budget Data\[ECMQA 2012Q1.xls]Sheet1'!$D$13:$D$234,D2,OFFSET('P:\Actuary\Cash Flow Forecast\Annual and Quarterly Budget Data\[ECMQA 2012Q1.xls]Sheet1'!$D$13:$D$234,0,MATCH(E2,'P:\Actuary\Cash Flow Forecast\Annual and Quarterly Budget Data\[ECMQA 2012Q1.xls]Sheet1'!$D$12:$R$12,0)-1))"
不過,我運行一個循環進入一個文件夾,在其中選擇所有文件(以上文件是該文件夾中,我在測試我的代碼了,看看它是否工作了一個文件):
Dim wb As Workbook, sFile As String, sPath As String
Dim itm As Variant
Dim strFileNames As String
sPath = "C:\Actuary\Cash Flow Forecast\Annual and Quarterly Budget Data\"
''Retrieve the current files in directory
sFile = Dir(sPath)
Do While sFile <> ""
strFileNames = strFileNames & "," & sFile
sFile = Dir()
Loop
''Open each file found
For Each itm In Split(strFileNames, ",")
If itm <> "" Then
Set wb = Workbooks.Open(sPath & itm)
''LOTS OF CALCULATIONS, INCLUDING ABOVE CODE
End If
Next itm
我怎麼會寫的第一個代碼,如果我不知道文件名(因爲它是通過循環所有的)?
任何幫助將不勝感激!
首先,非常感謝你的幫助!然而,如果我只想在打開時顯示'[MyBook.xls]'或者在C:\ Path \ [MyBook中顯示'[MyBook.xls]',代碼中的Range(「A1:A10」)' .xls]'何時關閉?我正在修復工作表和單元格,因爲它們對於每個文件總是相同的。 – Kristina
這個問題也不是我所有的文件都有.xls擴展名,它們是.xls或.xlsx,所以我使用其他代碼... – Kristina
這就是它現在所做的 - 擴展打開時的路徑,合同關閉時。使用範圍對象的Address屬性允許Excel構建字符串。但是,如果你願意,你可以建立字符串。像'.Formula =「= SUMIF(''&sPATH&」[「&sFile&」]「&」Sheet1'!$ D $ 13:$ D $ 234,D2,OFFSET('「&sPath&」[「&sFile &「] Sheet1'!$ D $ 13:$ D $ 234,0,MATCH(E2,'」&sPATH&「[」&sFile&「] Sheet1'!$ D $ 12:$ R $ 12,0)-1)) 「」即使你這樣做,我也會得到Excel合同並擴展它。 –