Excel VBA代码,用于在文件夹中查找始终按相同顺序排列的文件组,并将特定单元格粘贴到主文件中
我有一个excel vba的问题,我正在试图解决,在浏览互联网和许多论坛后,我一直没有成功 问题1:如果a2中的单元格显示Brian Johnson(甚至BrianJohnson),是否可以打开文件BrianJohnson.xlsx?将有大约30个文件,我想像这样打开,以便主文件可以在其他表格中使用单元格引用,事情不会变得混乱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
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给我带来麻烦,说需要一个常量表达式。奇怪,我尝试了第四次,效果很好,谢谢你的帮助,蒂姆!