打开excel文件而不创建新示例

6uxekuva  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(136)

我已经找了关于这个的所有主题,仍然找不到解决方案。我的主要问题是,任何时候我打开Excel文件从我的应用程序中,它被打开在新的示例。我想要的-检测是否有正在运行的Excel,如果有-使用此示例,如果没有-创建一个新的。
这是行不通的:

Dim xlsApp As Object
Dim AllExcelProcess() As Process = System.Diagnostics.Process.GetProcessesByName("Excel")
If AllExcelProcess.Length = 0 Then xlsApp = New Excel.Application Else xlsApp = GetObject(, "Excel.Application")

AllExcelProcess工作正常,返回Excel应用程序正在运行,但GetObject始终不返回任何内容。我做错了什么?

ttvkxqim

ttvkxqim1#

这对我来说是有效的,从word和一个excel示例已经打开。微软365。

Sub main()

On Error Resume Next
  Set excelapp = GetObject(class:="Excel.Application")

'Clear the error between errors
  Err.Clear
  If excelapp Is Nothing Then Set excelapp = CreateObject(class:="Excel.Application")

  If Err.Number = 429 Then
    MsgBox "Excel could not be found, aborting."
    Exit Sub
  End If

 On Error GoTo 0

excelapp.Workbooks("Book2").sheets("Sheet1").Range("j2").Value = 2
End Sub
roejwanj

roejwanj2#

更简单的方法来做我想做的事情:

On Error Resume Next
Dim xlsApp As Object = GetObject(, "Excel.Application")
On Error GoTo 0
If xlsApp Is Nothing Then xlsApp = New Excel.Application

我有两个问题你可能想看看:
1.您已在“引用”下加载了Microsoft Excel库。如果找不到它,请将现有的EXCEL.EXE添加到其中
1.如果还是不行,在其他对象上试试GetObject,VS能检测到它们的类吗?在我的例子中,它根本不起作用
解决方案:我添加了MS Excel库,创建了新的解决方案。GetObject在那里开始工作,使用上面的代码进一步的一切都很容易。

相关问题