问题触发另一个 Windows 窗体应用中的 Excel ActiveX 按钮

Jiale Xue - MSFT 46,456 信誉分 Microsoft 供应商
2024-06-06T07:14:53.0333333+00:00

我收到有关自动运行Excel宏程序的要求,但我只熟悉Windows Forms App。我尝试过Microsoft.Office.Interop.Excel来激活按钮。它不起作用。

public bool openFileExcel(string filename)
        {
            Excel.Application _xlsm = new Excel.Application();
            Excel.Workbook _xlsB = _xlsm.Workbooks.Open(_fPath + filename);
            _xlsm.Visible = true;
            Excel.Worksheet _xlsS = _xlsB.Worksheets["Control"];
            Excel.OLEObject _oObj = _xlsS.OLEObjects("m_btnReset");

            _xlsm.AutomationSecurity = MsoAutomationSecurity.msoAutomationSecurityForceDisable;
            if (_xlsm.Ready)
            {
                try
                {
                    _oObj.Select();
                    _oObj.Activate();
                }
                catch(Exception e)
                {
                    MessageBox.Show(e.Message);
                }
                return false;
            }
            else
            {
                return false;
            }
        }

请指导我。

Note:此问题总结整理于: Problem trigger Excel ActiveX button from another Windows Forms App

Windows 窗体
Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
113 个问题
Office
Office
一套 Microsoft 高效工作软件,支持常见业务任务,包括文字处理、电子邮件、演示文稿以及数据管理和分析。
75 个问题
C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 48,571 信誉分 Microsoft 供应商
    2024-06-06T07:45:29.1+00:00

    根据我的测试,您可以尝试使用属性_oObj.Object.Value = true ;从Winform应用程序触发excel activex按钮。

    下面是一个可以参考的代码示例。

    private void button1_Click(object sender, EventArgs e)  
            {  
                string xlFileName = Path.Combine("D:\\", "test1.xlsm");  
                var xlApp = new Excel.Application();  
                var xlWorkbook = xlApp.Workbooks.Open(xlFileName);  
                var xlSheet = xlWorkbook.Worksheets["Sheet1"] as Excel.Worksheet;  
                Excel.OLEObject _oObj = xlSheet.OLEObjects("CommandButton1");  
               _oObj.Object.Value = true ;     // This code will trigger the button  
                xlWorkbook.Save();  
                xlWorkbook.Close();  
      
                Marshal.ReleaseComObject(xlWorkbook); xlWorkbook = null;  
                Marshal.ReleaseComObject(xlApp); xlApp = null;  
      
      
            }  
    

    如果回复有帮助,请点击“接受答案”并点赞。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。