如何减少从 Visual Basic Net 应用程序执行时 Excel VBA 所花费的运行时间?
How to decrease the runtime that Excel VBA takes when executed from a Visual Basic Net application?
使用的软件:
Visual Basic Net 2013,
微软 Excel 2016
与从 Visual Basic Net 代码执行相同的 VBA 所需的时间相比,我在直接从 VBA Excel 编辑器执行代码时遇到问题。即使我编写了一个简单的
Sub myCode()
MsgBox "Hello World!", vbOkOnly
End Sub
在 VBA 中,当我从 Visual Basic 代码执行时,开始执行需要太多时间。
例如,当我在 VBA 编辑器中按下 'F5' 键时,执行代码和显示 MsgBox 所需的时间不到一秒钟。当我 运行 从 Visual Basic .Net 中完全相同的代码时,开始执行代码大约需要 30 秒。
我在 Visual Basic 中使用的代码如下:
Private Sub executeExcelMacro(ByVal filePath As String, ByVal macroName As String)
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
oExcel = New Excel.Application
oExcel = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"), Excel.Application)
oBook = GetObject(filePath)
oSheet = oBook.Worksheets("TestExcel")
oSheet.Activate()
oBook.RunAutoMacros(1)
oExcel.Run(macroName)
End Sub
我的想法是在 Excel 2016 年打开一个 Excel 文件并使用 VBA 代码自动更新其内容,这样我就可以看到每个新行是如何创建的VBA 代码从 Visual Basic .Net
自动执行的时间
以下 VB.NET 代码在我的电脑上 运行 又好又快
Private Sub executeExcelMacro(ByVal filePath As String, ByVal macroName As String)
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
oExcel = New Excel.Application
oExcel.Visible = True
'oExcel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
'oBook = GetObject(filePath)
oBook = oExcel.Workbooks.Open(filePath)
oSheet = oBook.Worksheets("TestExcel")
'oSheet.Activate()
'oBook.RunAutoMacros(1)
oExcel.Run(macroName)
oBook.Close(False)
oExcel.Quit()
End Sub
使用的软件: Visual Basic Net 2013, 微软 Excel 2016
与从 Visual Basic Net 代码执行相同的 VBA 所需的时间相比,我在直接从 VBA Excel 编辑器执行代码时遇到问题。即使我编写了一个简单的
Sub myCode()
MsgBox "Hello World!", vbOkOnly
End Sub
在 VBA 中,当我从 Visual Basic 代码执行时,开始执行需要太多时间。
例如,当我在 VBA 编辑器中按下 'F5' 键时,执行代码和显示 MsgBox 所需的时间不到一秒钟。当我 运行 从 Visual Basic .Net 中完全相同的代码时,开始执行代码大约需要 30 秒。
我在 Visual Basic 中使用的代码如下:
Private Sub executeExcelMacro(ByVal filePath As String, ByVal macroName As String)
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
oExcel = New Excel.Application
oExcel = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"), Excel.Application)
oBook = GetObject(filePath)
oSheet = oBook.Worksheets("TestExcel")
oSheet.Activate()
oBook.RunAutoMacros(1)
oExcel.Run(macroName)
End Sub
我的想法是在 Excel 2016 年打开一个 Excel 文件并使用 VBA 代码自动更新其内容,这样我就可以看到每个新行是如何创建的VBA 代码从 Visual Basic .Net
自动执行的时间以下 VB.NET 代码在我的电脑上 运行 又好又快
Private Sub executeExcelMacro(ByVal filePath As String, ByVal macroName As String)
Dim oExcel As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
oExcel = New Excel.Application
oExcel.Visible = True
'oExcel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
'oBook = GetObject(filePath)
oBook = oExcel.Workbooks.Open(filePath)
oSheet = oBook.Worksheets("TestExcel")
'oSheet.Activate()
'oBook.RunAutoMacros(1)
oExcel.Run(macroName)
oBook.Close(False)
oExcel.Quit()
End Sub