如果禁用excel文件上的宏,则无法将工作表从一个工作簿复制到另一个工作簿

如果禁用excel文件上的宏,则无法将工作表从一个工作簿复制到另一个工作簿,excel,vba,copy,Excel,Vba,Copy,我正在使用此功能将工作表从工作簿复制到另一工作簿。 我可以工作,但如果我禁用工作簿中的宏, 它不能再复制这张纸了 如果我更改此行:m_objExcel.AutomationSecurity=msoAutomationSecurityForceDisable 为此m_objExcel.AutomationSecurity=msoAutomationSecurityByUI 它可以工作,但会收到一条警告消息。 另外,如果我对这行进行注释,它可以完美地工作,但宏处于打开状态 Private Sub C

我正在使用此功能将工作表从工作簿复制到另一工作簿。 我可以工作,但如果我禁用工作簿中的宏, 它不能再复制这张纸了

如果我更改此行:
m_objExcel.AutomationSecurity=msoAutomationSecurityForceDisable

为此
m_objExcel.AutomationSecurity=msoAutomationSecurityByUI

它可以工作,但会收到一条警告消息。 另外,如果我对这行进行注释,它可以完美地工作,但宏处于打开状态

Private Sub CopyFunction() 
    Set m_objExcel = New Excel.Application 'creare obiect
    m_objExcel.DisplayAlerts = False 

    g_secAutomation = m_objExcel.AutomationSecurity
    m_objExcel.AutomationSecurity = msoAutomationSecurityForceDisable
    m_objExcel.Visible = True


    Dim CopyFrom As Workbook
    Dim CopyTo As Workbook
    Dim CopyThis As Object

    Set CopyFrom = m_objExcel.Workbooks.Open("D:\FromFile.xls")
    Set CopyTo = m_objExcel.Workbooks.Open("D:\ToFile.xls")

      Set CopyThis = CopyFrom.Sheets(1) ''Sheet number 1
      CopyThis.Copy After:=CopyTo.Sheets(1)

    m_objExcel.Workbooks(CopyTo.FullName).Save
    CopyFrom.Close
    CopyTo.Close
    m_objExcel.Workbooks.Close
    MsgBox "ok"
    End Sub

我从Access使用它,并使用Excel文件。 有什么问题?
有没有办法将工作表从工作簿复制到另一个工作簿,并禁用宏?

这就是禁用宏的典型功能:安全性。
这是为了保护你自己;如果您收到来自未知作者的工作簿,此人可能会向您发送有害软件。
例如,假设代码在您打开工作簿后立即开始删除文件。
禁用宏可以防止这种情况,并允许您在决定执行代码之前查看代码

作为一种解决方案,当您以开发人员身份签署项目时,用户可以信任您作为作者。
我建议您查看以下链接: )


(您可以决定完全关闭安全性(启用宏),但通常不建议这样做。)

我发现问题在于:

 m_objExcel.Workbooks(CopyTo.Name).Save

有没有办法将工作表从一个工作簿复制到另一个工作簿,并禁用宏?我认为您不应该试图控制用户的安全设置。即使有复杂的方法可以绕过宏安全性,我可能也不会传播它。但是你可以使用我建议的选项,使用签名项目;这允许您在不受通知困扰的情况下保持高安全级别。当您禁用宏时,您无法执行VBA,因此您的代码甚至无法执行。这可能看起来很明显,所以我可能误解了你的问题。我正在Access中使用它,并使用Excel文件。“宏禁用”已启用到Excel文件。