0

我正在使用此功能将工作簿中的工作表复制到另一个工作簿。我工作,但似乎如果我禁用工作簿中的宏,它就不能再复制工作表了。

如果我改变这条线: 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 文件。问题是什么?有没有办法仍然能够将工作簿中的工作表复制到另一个工作簿并禁用宏?

4

2 回答 2

1

这就是禁用宏通常用于:安全性。
这是为了保护您自己;如果您收到来自未知作者的工作簿,此人可能想向您发送有害软件。
例如,想象一下,一旦您打开工作簿,代码就会开始删除文件。
禁用宏可以防止这种情况发生,并允许您在决定执行代码之前查看代码。

作为一种解决方案,当您以开发人员身份签署项目时,用户可以信任您作为作者。
我建议您查看此链接: http: //msdn.microsoft.com/en-us/library/aa190098 (v=office.10 )

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

于 2012-07-24T09:37:42.453 回答
0

我发现问题出在这里:

 m_objExcel.Workbooks(CopyTo.Name).Save
于 2012-07-24T11:24:25.623 回答