如何在 C# 中创建与特定工作表关联的 VBA 代码?

问题描述 投票:0回答:1

我用 VBA 编写了一个程序多年,该程序读取文件并构建启用宏的电子表格。它运作得相当好。我正在用 C# 重写此代码并进行增强。我遇到的问题是我在 C# 中生成的 VBA 代码被放入模块“Module1”中。

        VBE.VBComponent oOLE = null;
        oOLE = WB.VBProject.VBComponents.Add(VBE.vbext_ComponentType.vbext_ct_StdModule);  
        var VBA_Code = oOLE.CodeModule;

我的旧VBA生成代码将代码放入一张纸中。我不知道如何将按钮单击服务例程放入特定的工作表中。工作簿具有“VBProject”属性,但我没有看到工作表的等效属性。下面是我生成的 VBA 代码:

公共子CommandButton1_Click() 通话系列切换(1) 如果 (ActiveWorkbook.Sheets(1).ChartObjects(1).Chart.FullSeriesCollection(1).IsFiltered) 那么 CommandButton1.BackColor = RGB(240, 240, 240) 别的 CommandButton1.BackColor = RGB(146, 208, 80) 万一 结束子

当此代码与工作表关联时,它可以完美运行。当它位于模块中时,它似乎找不到按钮(CommandButton1)。超出范围?

我花了一段时间才找到问题的根源。我认为有几种方法可以解决这个问题,但我在这两个角度都没有取得成功。第一个目标是 VBProject 或 VBComponent 的工作表。我的另一个想法是从 Module1 中的 VBA 代码访问按钮属性。

c#-4.0 excel-2010 vba7
1个回答
0
投票

我能够将我的 VBA 代码移动到具有以下定义的工作表中:

VBE.VBComponent oOLE = null;
oOLE = WB.VBProject.VBComponents.Item(WB.Worksheets[1].CodeName);
var VBA_Code = oOLE.CodeModule;

不幸的是,我现在在从工作表代码 VBA 引用按钮时遇到问题。我需要找出真正的问题,但我回答了我原来的问题。

© www.soinside.com 2019 - 2024. All rights reserved.