Скопируйте рабочую таблицу и ее код в другую рабочую книгу
Я хочу скопировать лист Excel из одной книги в другую со всем ее кодом VBA. Каждый раз, когда я пытаюсь "переместить или скопировать лист", лист копирует, но ни один из модулей VBA не переносится в новую рабочую книгу. Есть ли способ сделать это?
0 ответов
Я использовал что-то подобное в прошлом. Ваш пробег может варьироваться. Это должно быть скорректировано с учетом двух разных рабочих книг. Это не было проверено с недавним 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