gpt4 book ai didi

vba - 工作簿未通过作为参数传递在 Excel 中激活

转载 作者:行者123 更新时间:2023-12-02 19:14:32 25 4
gpt4 key购买 nike

我有一个Book1.xls Excel 工作簿,其中编写了一个宏,以便在打开工作簿时运行该宏。该宏获取工作簿路径中的所有 CSV 文件,并将所有 CSV 合并到一个工作表中,例如 Master.xlsx,它工作正常并创建 Master.xlsx。在此宏的末尾,我调用在同一工作表的模块中编写的另一个宏,并将 Master.xlsx 引用作为工作簿参数传递给另一个宏

现在我想要的是,我需要将 Master.xlsx 设置为该宏(模块)传递参数作为当前/事件工作簿,以便我可以格式化 master.xlsx 的内容

我的 Book1.xls 代码是:

Private Sub Workbook_Open()

'Create Excel application instance
Dim xlApp As Object
Dim dt, masterpath, folderPath, fileName, dtFolder As String
Set xlApp = CreateObject("Excel.Application")

'Setup workbooks
Dim wb As Excel.Workbook
Dim wBM As Excel.Workbook
Dim Wk As Workbook

fileName = "C:\Master.xlsx"

'Create a new Workbook
Set Wk = Workbooks.Add
Application.DisplayAlerts = False
Wk.SaveAs fileName:=fileName
Wk.Close SaveChanges:=False
Application.DisplayAlerts = True

'Csv files folder
Dim CSVfolder As String
CSVfolder = masterpath

'Master Excel file path
Dim mF As String
mF = fileName 'Where your master file is

'open the master file
Set wBM = xlApp.Workbooks.Open(mF)

'search and open the client files
Dim fname As String
fname = Dir(CSVfolder & "\*.csv")
Do While fname <> ""
'open the client file
Set wb = xlApp.Workbooks.Open(CSVfolder & "\" & fname)
'copy the first sheet from client file to master file
wb.Sheets(1).Copy After:=wBM.Sheets(wBM.Sheets.count)
'save master file
wBM.Save
'close client file
wb.Close False
'move to next client file
fname = Dir()
Loop

xlApp.Visible = True
Set xlApp = Nothing

Call AnotherMacroInModuleOfSameWorkbook(wBM)

End Sub

同一工作簿模块中的宏代码

Sub AnotherMacroInModuleOfSameWorkbook(wb As Workbook)

wb.Activate
MsgBox (wb.Name)
MsgBox (ActiveWorkbook.Name)

End Sub

在这里,我为警报 1 获取“Master.xlsx”,为警报 2<获取“Book1.xls”/strong>

我想要的是,由于我从上面的宏传递 Master.xlsx 的引用,然后在下面的宏中激活 Master.xlsx,因此警报 2 应该给出“Master.xlsx”作为警报。

请帮忙。

谢谢。

最佳答案

通过更改此行,主工作表现在会打开,而以前是不会打开的。它只是访问它。我使用自己的工作簿进行了测试,并使用您的代码作为基础。但是,我没有使用您的所有代码,因为我没有这些对象。所以主要是经过测试的。我确实生成了与您在使用此行解决之前遇到的相同错误,因此我非常确定这可以解决您的问题:

Set wBM = Application.Workbooks.Open(mF)

问题在于,当您打开它时,代码将中断并且需要继续。要解决这个问题,您需要在打开工作簿之前放置以下行。

Application.EnableCancelKey = xlDisabled

警告:如果您这样做,即使生成无限循环,您也将无法破坏代码。

Please see this article about how to deal with EnableCancelKey

您还尝试打开 .xlsx 文件,而不是 .xlsm 将其包含在文件创建语句中。

FileFormat:= _xlOpenXMLWorkbookMacroEnabled

关于vba - 工作簿未通过作为参数传递在 Excel 中激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com