0

特定のファイル名を持つ次のコードがあります。

  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))"

ただし、フォルダーに入り、その中のすべてのファイルを選択するループを実行しています(上のファイルはそのフォルダーにあり、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

ファイル名がわからない場合(すべてのファイルをループしているため)、最初のコードをどのように記述しますか?

どんな助けでも大歓迎です!!

4

1 に答える 1

0
Sub WriteFormulas()

    Dim sFile As String
    Dim sPath As String
    Dim sh As Worksheet
    Dim rNext As Range

    sPath = Environ("USERPROFILE") & "\My Documents\Tester\"

    'Get the first file
    sFile = Dir(sPath & "*.xls")

    Do While Len(sFile) > 0
        'don't process this workbook
        If sFile <> ThisWorkbook.Name Then
            'set a variable to the first sheet in the file
            Set sh = Workbooks.Open(sFile).Worksheets(1)
            'find the next available cell in column A in this workbook
            Set rNext = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Offset(1, 0)
            'create a formula using the address with the external argument
            rNext.Formula = "=SUM(" & sh.Range("A1:A10").Address(True, True, xlA1, True) & ")"
            'close the workbook
            sh.Parent.Close False
        End If
        sFile = Dir
    Loop

End Sub

ブックを閉じると、Excel は完全なパスとファイル名への参照を展開します。だからRange("A1").Address(,,,true)解決するかもしれませんが

[MyBook.xls]Sheet1!A1

MyBook.xls を閉じると、次のように変換されます。

'C:\Path\[MyBook.xls]Sheet1'!A1
于 2012-09-14T16:57:57.563 に答える