【问题标题】:Copy Worksheet and its code into another workbook将工作表及其代码复制到另一个工作簿中
【发布时间】:2018-08-01 13:46:18
【问题描述】:

我想将 Excel 工作表从一个工作簿复制到另一个工作簿及其所有 VBA 代码。每次我尝试“移动或复制工作表”时,工作表副本,但没有一个 VBA 模块转移到新工作簿中。有没有办法做到这一点?

【问题讨论】:

  • 代码在工作表对象还是模块中?如果它们实际上不在工作表中,则必须通过将模块从源簿拖到目标工作簿来复制它。
  • 其中一些在工作表对象中,但我也有三个包含代码的模块。
  • 我会做一个包含您的 VBA 代码的模板,并创建一个额外的工作簿,其中包含可以复制模板的宏(我猜是填充了数据)

标签: excel vba copy-paste worksheet


【解决方案1】:

我过去曾使用过类似的东西。你的旅费可能会改变。需要对其进行调整以参考两个不同的工作簿。尚未使用最近的 MSOffice 对其进行测试。我不知道它是否处理工作表对象中的代码。

Option Explicit
    Dim sExportLocation As String
    sExportLocation = "C:\myTempExport\" 'Do not forget the closing back slash! ie: C:\Temp\

Public Sub DoExportImport
    ExportTheModules
    ImportDatabaseObjects
End Sub    

Public Sub ExportTheModules
     '===============================================================================
     ' Name:    DocDatabase Purpose: Documents the database to a series of text files
     ' Author:  Arvin Meyer       ' Date:    June 02, 1999
     ' Comment: Uses the undocumented [Application.SaveAsText] syntax
     '          To reload use the syntax [Application.LoadFromText]
     '      Modified to set a reference to DAO 8/22/2005
     '===============================================================================
    Dim dbs As DAO.Database,  cnt As DAO.Container,  doc As DAO.Document

    Set cnt = dbs.Containers("Modules")
    For Each doc In cnt.Documents
        Application.SaveAsText acModule, doc.Name, sExportLocation & "Mods_" & doc.Name & ".txt"
    Next doc
End Sub

Public Sub ImportDatabaseObjects()
    On Error GoTo Err_ImportDatabaseObjects
    Dim db As Database      'Dim db As DAO.Database
    Dim td As TableDef, d As Document, c As Container  
    Set db = CurrentDb()

    Dim sFN As String, sName As String, sList() As Variant
    sList = Array("Module_", acModule)     ' Array("Module_", acModule, "Form_", acForm, "Query_", acQuery)
    sFN = Dir(sExportLocation & sList(0) & "*.txt")
    Do While sFN <> ""
        sName = Replace(sFN, sList(0), "")
        sName = Replace(sName, ".txt", "")
        Debug.Print sFN, , sName
        Application.LoadFromText sList(1), sName, sExportLocation & sFN
        sFN = Dir
    Loop

    Exit Sub

Err_ImportDatabaseObjects:
    MsgBox Err.Number & " - " & Err.Description
    Set c = Nothing
    db.Close
    Set db = Nothing    
End Sub

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多