excel - ObjWorkbook.Worksheets.Count 不起作用

标签 excel vba count vbscript runtime-error

我正在尝试编写代码来打开 Excel 文件,然后搜索它。尽管如此,我在检索工作簿中的工作表数量时遇到了问题。我收到错误:

424 - VBScript Runtime Error, Object Required

有什么想法吗?这是我遇到问题的一小部分代码:

Dim Shell : Set Shell = WScript.CreateObject( "WScript.Shell" )
Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim objExcel : Set objExcel = CreateObject("Excel.Application")

Dim myworkbook, worksheetcount
Set myworkbook = objExcel.Workbooks.Open("C:\Temp\Test.xlsx")

On Error Resume Next
Set worksheetcount = myworkbook.worksheets.count 'fails

If Err.number <> 0 Then
    ShowError()
    myworkbook.Close False
End if

Sub ShowError()
    WScript.Echo Err.Number & " Srce: " & Err.Source & " Desc: " & Err.Description
    Err.Clear
End Sub

最佳答案

下面的内容就可以完成这项工作。

VBA版本

Dim Shell As Object: Set Shell = CreateObject("WScript.Shell")
Dim oFSO As Object: Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim objExcel As Application: Set objExcel = CreateObject("Excel.Application")

Dim myworkbook As Workbook, worksheetcount As Long
Set myworkbook = objExcel.Workbooks.Open("C:\Temp\Test.xlsx")

On Error Resume Next
worksheetcount = myworkbook.Worksheets.Count

If Err.Number <> 0 Then
    ShowError
    myworkbook.Close False
End If

VBScript版本

Dim Shell: Set Shell = WScript.CreateObject("WScript.Shell")
Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim objExcel: Set objExcel = CreateObject("Excel.Application")

Dim myworkbook, worksheetcount
Set myworkbook = objExcel.Workbooks.Open("C:\Temp\Test.xlsx")

On Error Resume Next
worksheetcount = myworkbook.Worksheets.Count

If Err.Number <> 0 Then
    ShowError
    myworkbook.Close False
End If

您遇到了错误,因为您尝试将一个值Set设置为worksheetcount,而该值不是一个对象。您仅对对象使用 Set

关于excel - ObjWorkbook.Worksheets.Count 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31034311/

相关文章:

vba - 数据透视表报告 - 获取切片器、图表和过滤器信息

sql - 高效使用SQL GROUP BY、SUM、COUNT

api - 从 API 搜索结果中获取推文总数?

php - 如何在mysql 5存储过程中检查查询结果是否为空?

c# - 动态获取第一个 Excel 工作表的名称并将其影响到变量

c# - Excel 选择更改事件触发了两次 C#

c# - 使用 EPPlus 打开 Excel 文档

macos - Excel VBA : Run time error 7: Out of Memory

excel - VBA 函数 - 如何将函数参数类型设置为条件?

C# COM 互操作库