阅读Visual Basic中已经打开的工作簿(在visual studio上)

时间:2016-03-12 02:18:54

标签: visual-studio

我从事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

任何帮助都会受到很多赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

set wb = GetObject("c:\file.xls")

是你需要做的。无论是否开放都无关紧要。

因此,您应该使用文档对象,而不是App对象。

答案 1 :(得分:0)

花了好几个小时后,我才明白了。这是脚本的正确版本:

{{1}}

这允许在已经打开多个“Excel工作簿”的情况下按名称获取.xlsx文件。希望对别人有所帮助!