У меня есть книга Excel в формате xlsb (назовем ее «Child-workbook»), автоматически созданная другой книгой Excel («Parent-workbook»).Эта так называемая «Детская книга» имеет несколько листов, содержащих графики.Я хочу, чтобы на этих листах был код, который запускается каждый раз, когда пользователь выбирает лист, и я хочу, чтобы «Родительская рабочая книга» перенесла этот код в «Дочернюю рабочую книгу».Передача выполнена успешно, модуль появляется в проекте рабочей книги Child, пока я его не закрою (конечно, я сохраняю его до этого ...).
Вот изображение того, как это выглядиткак после сохранения, но перед закрытием «Child.xlsb».
Моя проблема в том, что когда я снова открываю книгу Child, модуль все еще там, но его содержимое полностью исчезло, он пуст.
Вот изображение того, как оно выглядит после сохранения, закрытия и повторного открытия.
Любой совет?
Sub TransferModule()
Const MODULE_NAME As String = "DiagramMakro"
Dim MODULEFILE As String
MODULEFILE = "C:\Modul.txt"
Workbooks("Parent.xlsm").VBProject.VBComponents(MODULE_NAME).Export MODULEFILE
For i = 1 To Workbooks("CHILD.xlsb").Sheets.Count
If Workbooks("CHILD.xlsb").Worksheets(i).Name Like "Diagram*" Then
Workbooks("CHILD.xlsb").Worksheets(i).Activate
Workbooks("CHILD.xlsb").VBProject.VBComponents(ActiveSheet.CodeName).Name = MODULE_NAME
Workbooks("CHILD.xlsb").VBProject.VBComponents.Item("CHILD.xlsb").CodeModule.AddFromFile (MODULEFILE)
End If
Next i
Kill MODULEFILE
End Sub
А вотМодуль для передачи:
Private Sub Worksheet_Activate()
Dim myChart As Chart
Dim mySeries As SeriesCollection
Set myChart = ActiveSheet.ChartObjects(1).Chart
Set mySeries = myChart.SeriesCollection
For i = 3 To mySeries.Count
mySeries.Item(i).Format.Line.Visible = msoFalse
Next i
End Sub