求教老手,请问怎么用C#修改已经做好的vba程序 请现在手上有个比较大的vba程序,我想修改里面的一个方法,但是没编过vba,虽然能看懂代码,想问下能不能用创建一个C#的sln,然后在里面重载vba方法,有没有什么可以实现的方法?vba的程序里面的类中的方法能在C#新建的sln中直接掉用么(怎么添加引用)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 完全没问题!请搜索VSTO方面的资料! 帮你找到了几个VSTO运行VBA代码 不可以的 你可以把 VBA 转换成 VB.NET 倒是可以用 sln 我说了完全是可以的!怎么还说不可以??---------------------------c#生成VBA代码! Excel.Workbook book=..... Excel.Worksheet sheet=... //得到第一个Sheet的编程模型 VBIDE.VBComponent componentsheet1=book.VBProject.VBComponents.Item(sheet.CodeName); //测试,添加一行 componentsheet1.CodeModule.AddFromString("'Hello'"); //测试,删除所有行 componentsheet1.CodeModule.DeleteLines(1,componentsheet1.CodeModule.CountOfLines); //添加代码 componentsheet1.CodeModule.AddFromString(@"Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target.Interior.Color = RGB(222,222,222)End Sub" );---------------------------------------C# 调用VBA中写在SHEET中的SUB方法!Excel.Worksheet sht = Globals.Sheet1.InnerObject; sht.Test(); -----------------C# 调用VBA中写在模块中的方法!private void button1_Click(object sender, EventArgs e) { Application.Run("test"); } VBA代码:Sub test() MsgBox "Hello world" End Sub 在VSTO里读取VBA代码并获得某个常数的值VBA的sheet1里写了如下代码:Option Explicit Private Const rate As Double = 6.85 现在想在VSTO里读取VBA代码并获取rate常数的值,可以用以下的代码来实现:private void button1_Click(object sender, EventArgs e) { string code = Globals.ThisWorkbook.VBProject.VBComponents.Item(1).CodeModule.get_Lines(3, 1).ToString(); MessageBox.Show(code.Split('=').GetValue(1).ToString().Replace(" ","")); } 多谢,不过不是用在写Excel中。抱歉没说清楚,我这有一个vba.net的程序,是用visual studio做好的,我需要做另一个C#的程序,需要调用那个vba程序中的类。多谢提示,我在msdn中找到了C#调用vba的方法。 WinForm中在Webbrowser上用IMessageFilter透明层的问题 关于使用定时器的问题。 怎么调用WEB服务 关于控件随窗体大小变化,异常“index超出范围” 关于C#多屏幕显示器编程,请对此精通的高手解答,多谢! system.data.sql 命名空间是否存在呢! delphi与c#之间的 结构体 封包通讯问题 帮忙看下我这样写的扩展方法为什么点不出来? [请问]如何设置GridControl里的View的某一列为不可编辑列? 在.net环境中,怎样实现本地化 C# ListView取值异常 关于数据挖掘,大家过来看看
VSTO运行VBA代码
---------------------------
c#生成VBA代码! Excel.Workbook book=.....
Excel.Worksheet sheet=... //得到第一个Sheet的编程模型
VBIDE.VBComponent componentsheet1=book.VBProject.VBComponents.Item(sheet.CodeName); //测试,添加一行
componentsheet1.CodeModule.AddFromString("'Hello'");
//测试,删除所有行
componentsheet1.CodeModule.DeleteLines(1,componentsheet1.CodeModule.CountOfLines); //添加代码
componentsheet1.CodeModule.AddFromString(@"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Interior.Color = RGB(222,222,222)
End Sub
"
);
---------------------------------------
C# 调用VBA中写在SHEET中的SUB方法!
Excel.Worksheet sht = Globals.Sheet1.InnerObject;
sht.Test();
-----------------
C# 调用VBA中写在模块中的方法!
private void button1_Click(object sender, EventArgs e) {
Application.Run("test");
}
VBA代码:
Sub test()
MsgBox "Hello world"
End Sub
VBA的sheet1里写了如下代码:
Option Explicit
Private Const rate As Double = 6.85
现在想在VSTO里读取VBA代码并获取rate常数的值,可以用以下的代码来实现:
private void button1_Click(object sender, EventArgs e)
{
string code = Globals.ThisWorkbook.VBProject.VBComponents.Item(1).CodeModule.get_Lines(3, 1).ToString();
MessageBox.Show(code.Split('=').GetValue(1).ToString().Replace(" ",""));
}
多谢,不过不是用在写Excel中。抱歉没说清楚,我这有一个vba.net的程序,是用visual studio做好的,我需要做另一个C#的程序,需要调用那个vba程序中的类。多谢提示,我在msdn中找到了C#调用vba的方法。