我从事VB项目并在从VBA切换到VB后使用Visual Studio 2015。我需要从Excel工作簿中读取一些信息。由于此文件可能已经打开,我不想再打开它,因此我的脚本结构如下:
(功能)检查文件是否已打开("完美运作")
如果它是开放的("有问题")
否则(文件未打开)----("完美运作")
如果
结束在这个结构中,我已经花了三天时间来完成第一部分,但是我在Internet上找到的任何脚本都没有在我的项目中工作。然而,许多人声称给定的脚本有效,我在第12行遇到错误,因为oWB等于" Nothing"在第11行。
我无法弄清问题是什么。简单地说,我需要这样的作业(这只适用于VBA):
Set oWB=Workbooks("sample.xlsx")
而且,我的整个剧本如下:
Imports Microsoft.Office.Interop
Module Module1
Sub ReadInformation() 'Line 1
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oWS As Excel.Worksheet
Dim filepath2 As String 'Line 5
filepath2 = "C:\Users\IEN 271\Desktop\sample.xlsx"
If FileInUse(filepath2) Then
oXL = New Excel.Application
oXL = GetObject(, "Excel.Application")
oXL.Visible = True
oWB = oXL.ActiveWorkbook 'Line 11
oWS = oWB.Worksheets("sampleSheet")
oWS.Activate()
Else
oXL = New Excel.Application
oXL.Visible = True
oWB = oXL.Workbooks.Open("C:\Users\IEN 271\Desktop\sample.xlsx", [ReadOnly]:=False)
oWS = oWB.Worksheets("sampleSheet")
oWS.Activate()
End If
'Script for reading process (fine)
End Sub
End Module
任何帮助都会受到很多赞赏。
谢谢!
答案 0 :(得分:0)
set wb = GetObject("c:\file.xls")
是你需要做的。无论是否开放都无关紧要。
因此,您应该使用文档对象,而不是App对象。
答案 1 :(得分:0)
花了好几个小时后,我才明白了。这是脚本的正确版本:
{{1}}
这允许在已经打开多个“Excel工作簿”的情况下按名称获取.xlsx文件。希望对别人有所帮助!