0
我试图在几个相同的工作簿中运行一个宏,然后将这些工作簿的第一个工作表合并到一个新的工作簿中。合并部分的工作得益于互联网,但我似乎没有把“运行宏”部分放下。这里是我到目前为止的代码:在关闭的excel工作簿中运行宏并将结果合并到一个新的工作簿中
Sub MergeSelectedWorkbooks()
Dim SummarySheet As Worksheet
Dim FolderPath As String
Dim SelectedFiles() As Variant
Dim NRow As Long
Dim FileName As String
Dim NFile As Long
Dim WorkBk As Workbook
Dim SourceRange As Range
Dim DestRange As Range
Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
FolderPath = "..."
ChDrive FolderPath
ChDir FolderPath
SelectedFiles = Application.GetOpenFilename(_
filefilter:="Excel Files (*.xl*), *.xl*", MultiSelect:=True)
NRow = 1
For NFile = LBound(SelectedFiles) To UBound(SelectedFiles)
' Set FileName to be the current workbook file name to open.
FileName = SelectedFiles(NFile)
Set WorkBk = Workbooks.Open(FileName)
Run "Détaildesmlh_Bouton1_Cliquer" #this is what doesn't work
SummarySheet.Range("A" & NRow).Value = FileName
Set SourceRange = WorkBk.Worksheets(1).Range("A1:G19")
Set DestRange = SummarySheet.Range("B" & NRow)
Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
SourceRange.Columns.Count)
DestRange.Value = SourceRange.Value
NRow = NRow + DestRange.Rows.Count
WorkBk.Close savechanges:=True
Next NFile
SummarySheet.Columns.AutoFit
End Sub
我试图让宏观运行不同的方式,我已经在上面添加的代码返回因为宏不存在或不是活动的一个错误。你有任何解决方法吗?我尝试了解我在网上找到的解决方案,但他们要么不与代码的其余部分一起工作,要么看起来很复杂。
谢谢!
它确实打开文件,但仍然表示该宏在工作簿中不可用或所有的宏已被禁用。那是我需要去除UNC路径的地方吗? – Doule
1)您是否将Excel选项设置为自动启用宏?如果没有,请更改它们2)宏名称**完全**,因为它在工作簿中。如果没有,请调整。 3)开放工作簿中的宏是否在私有子中?如果是这样,请将其公开。 4)如果UNC路径存在,当您将“FileName”打印到即时窗口时,您将看到'\\ server \ folder \ file \ mybook.xlsm'。如果它在那里,你可以使用字符串操作来只获取文件名......实际上(写完所有内容后)只需使用'WorkBk.Name'而不是FileName。 –