我目前为我的团队中的每个人都有一个工作簿,他们有一个名为"Panel"
的工作表,其中包含他们的计划和进度。
我想开发一个统一的电子表格,其中包含所有他们的举措,以便了解整个区域。
在每个"Panel"
工作表中,"U5"
单元格包含所有者的名称。在我的合并文件中,我想将所有者的名称作为相应表单的名称。
我制作了这个宏,从一个单独的文件夹中获取所有"Panel"
张,将它们放在主文件中并重命名以识别所有者。
稍后,我将开发一个包含这些计划的数据库,识别数据字段的开头和结尾,以便以单一方式为仪表板编译它们。
这是我的代码:
Sub GetSheets()
Path = "C:\Users\Admin\Desktop\PMO\Test consolidation\Independent files"
Filename = Dir(Path & "*.xlsm")
Dim wsname As String
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
Worksheets("Panel").Activate
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Worksheets("Panel").Select
wsname = Range("U5")
Worksheets("Panel").Name = wsname
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
你能帮忙找出为什么这不起作用吗? 谢谢!
答案 0 :(得分:1)
这是一个检查路径是否存在\
,是否存在工作表(代码为la Rory)以及U5是否为空的示例。假设,您正在打开的工作簿中的U5正在用于重命名。
Option Explicit
Sub GetSheets()
Dim path As String
Dim Filename As String
Dim wbMaster As Workbook
Dim wbActive As Workbook
Dim wsPanel As Worksheet
Set wbMaster = ThisWorkbook
path = "C:\Users\Admin\Desktop\PMO\Test consolidation\Independent files"
If Right$(path, 1) <> "\" Then path = path & "\"
Filename = Dir(path & "*.xlsm")
Dim wsname As String
Do While Filename <> ""
Set wbActive = Workbooks.Open(Filename:=path & Filename, ReadOnly:=True)
With wbActive
If Evaluate("ISREF('" & "Panel" & "'!A1)") Then 'Rory 'https://stackoverflow.com/questions/6688131/test-or-check-if-sheet-exists
Set wsPanel = wbActive.Worksheets("Panel")
wsPanel.Copy After:=wbMaster.Worksheets(1)
If Not IsEmpty(wsPanel.Range("U5")) Then
ActiveSheet.Name = wsPanel.Range("U5")
Else
MsgBox "Missing value to rename worksheet in " & Filename
End If
End If
End With
wbActive.Close
Filename = Dir()
Loop
End Sub