首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭并重新打开文件后,从其他工作簿添加的与Excel工作表相关的代码将消失

关闭并重新打开文件后,从其他工作簿添加的与Excel工作表相关的代码将消失
EN

Stack Overflow用户
提问于 2019-04-17 16:19:46
回答 1查看 45关注 0票数 0

我有一个xlsb格式的excel工作簿(我们称它为“子工作簿”)是由另一个excel工作簿(“父工作簿”)自动生成的。这个所谓的“子工作簿”有一些工作表,其中包含图表。我希望这些工作表有一个每次用户选择工作表时运行的代码,我希望“父工作簿”将该代码传输到“子工作簿”。传输已成功完成,该模块确实会出现在子工作簿的项目中,直到我将其关闭(当然,我在此之前保存了它...)。

Here is an image of how it looks like after saving but before closing "Child.xlsb".

我的问题是,当我重新打开Child工作簿时,模块仍然在那里,但它的内容完全消失了,它是空的。

Here is an image of how it looks like after saving, closing and reopening it.

有什么建议吗?

代码语言:javascript
复制
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

下面是要传输的模块:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-04-17 20:26:45

可能是txt文件有问题

尝试读取this first并运行CreateEventProcedure

VBA Editor Constants

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55722992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档