Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA代码,用于在文件夹中查找始终按相同顺序排列的文件组,并将特定单元格粘贴到主文件中_Excel_Vba - Fatal编程技术网

Excel VBA代码,用于在文件夹中查找始终按相同顺序排列的文件组,并将特定单元格粘贴到主文件中

Excel VBA代码,用于在文件夹中查找始终按相同顺序排列的文件组,并将特定单元格粘贴到主文件中,excel,vba,Excel,Vba,我有一个excel vba的问题,我正在试图解决,在浏览互联网和许多论坛后,我一直没有成功 问题1:如果a2中的单元格显示Brian Johnson(甚至BrianJohnson),是否可以打开文件BrianJohnson.xlsx?将有大约30个文件,我想像这样打开,以便主文件可以在其他表格中使用单元格引用,事情不会变得混乱 Sub aaron_gather() ' ' aaron_gather Macro Dim bestandopen Application.ScreenU

我有一个excel vba的问题,我正在试图解决,在浏览互联网和许多论坛后,我一直没有成功

问题1:如果a2中的单元格显示Brian Johnson(甚至BrianJohnson),是否可以打开文件BrianJohnson.xlsx?将有大约30个文件,我想像这样打开,以便主文件可以在其他表格中使用单元格引用,事情不会变得混乱

        Sub aaron_gather()
'
' aaron_gather Macro
Dim bestandopen
Application.ScreenUpdating = False
On Error Resume Next 'if there are no 12 sheets
 bestandopen = Dir("H:\Americorps\*")
    Do Until bestandopen = ""
      If bestandopen = "" Then Exit Do
       If Not bestandopen = "Americorps Master Sheet 1.xlsm" Then
        Workbooks.Open "H:\Americorps\" & bestandopen
    ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1) = ActiveWorkbook.Name
         For i = 1 To 12
          ThisWorkbook.Sheets("Total Hours").Cells(Rows.Count, 1).End(xlUp).Offset(, i) = ActiveWorkbook.Sheets(i).Range("E43")
         Next i
       ThisWorkbook.Sheets("Total Hours").Columns.AutoFit
    Workbooks(bestandopen).Close
 End If
      bestandopen = Dir
    Loop
End Sub

已编译但未测试

Sub Test()

Const FLDR_PATH As String = "H:\Americorps\"
Dim c As Range, wbSource As Workbook
Dim shtTH As Worksheet, i As Integer
Dim cellTH As Range, filepath As String

    Set shtTH = ThisWorkbook.Sheets("Total Hours")

    For Each c In shtTH.Range("A2:A10") 'are names on total hours sheet?

        filepath = FLDR_PATH & Replace(c.Value, " ", "") & ".xlsx"

        If Len(Dir(filepath, vbNormal)) > 0 Then
            c.Font.ColorIndex = xlAutomatic
            Set wbSource = Workbooks.Open(filepath, , True) 'readonly

            For i = 1 To 12
                'copy values to same row as filename source
                c.Offset(0, i).Value = _
                    wbSource.Sheets(i).Range("E43").Value
            Next i

            wbSource.Close False
        Else
            c.Font.Color = vbRed 'file not found
        End If

    Next c

End Sub

看起来你的代码中有所有内容来回答问题1。现在还不清楚你是否还有其他问题……嘿,蒂姆,我想我的问题写得不对,当我的母版纸上写着布赖恩·约翰逊时,我该如何打开文件brianjohnson.xlsx,并将我收集的所有数据放在母版纸的第11行。此宏根据文件在文件夹中的顺序复制和粘贴文件。我希望顺序始终相同。filepath=FLDR_PATH&Replace(c.Value,“,”)&“.xlsx”在FLDR_PATH给我带来麻烦,说需要一个常量表达式。奇怪,我尝试了第四次,效果很好,谢谢你的帮助,蒂姆!