Vba ObjWorkbook.Worksheets.Count不工作

Vba ObjWorkbook.Worksheets.Count不工作,vba,excel,vbscript,runtime-error,Vba,Excel,Vbscript,Runtime Error,我试图写一个代码来打开一个Excel文件,然后搜索它。尽管如此,我在检索工作簿中的工作表数量时仍遇到问题。我得到一个错误: 424-VBScript运行时错误,需要对象 有什么想法吗?下面是我遇到问题的代码的一小部分: Dim Shell : Set Shell = WScript.CreateObject( "WScript.Shell" ) Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject") Dim objExce

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

424-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
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
Dim Shell:Set Shell=WScript.CreateObject(“WScript.Shell”)
Dim of so:Set of so=CreateObject(“Scripting.FileSystemObject”)
Dim objExcel:设置objExcel=CreateObject(“Excel.Application”)
暗显我的工作簿、工作表帐户
设置myworkbook=objExcel.Workbooks.Open(“C:\Temp\Test.xlsx”)
出错时继续下一步
Set worksheetcount=myworkbook.worksheets.count'失败
如果错误号为0,则
淋浴器()
myworkbook.Close为False
如果结束
副驾驶员(ROR)
WScript.Echo Err.Number&“Srce:&Err.Source&“Desc:&Err.Description
呃,明白了
端接头

以下各项可以完成这项工作

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
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
Dim Shell As Object:Set Shell=CreateObject(“WScript.Shell”)
对象为SO的Dim:SO=CreateObject的集合(“Scripting.FileSystemObject”)
将objExcel设置为应用程序:设置objExcel=CreateObject(“Excel.Application”)
将我的工作簿暗显为工作簿,将工作表计数为长
设置myworkbook=objExcel.Workbooks.Open(“C:\Temp\Test.xlsx”)
出错时继续下一步
worksheetcount=myworkbook.Worksheets.Count
如果错误号为0,则
淋浴器
myworkbook.Close为False
如果结束
VBScript版本

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
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
Dim Shell:Set Shell=WScript.CreateObject(“WScript.Shell”)
Dim of so:Set of so=CreateObject(“Scripting.FileSystemObject”)
Dim objExcel:设置objExcel=CreateObject(“Excel.Application”)
暗显我的工作簿、工作表帐户
设置myworkbook=objExcel.Workbooks.Open(“C:\Temp\Test.xlsx”)
出错时继续下一步
worksheetcount=myworkbook.Worksheets.Count
如果错误号为0,则
淋浴器
myworkbook.Close为False
如果结束

出现错误,因为您试图将值设置为非对象的工作表帐户。您可以使用
仅将
设置为对象。

我还建议不要使用
在一行上有多个语句。这是合法的,但人类很容易跳过它,看不到潜在的重要代码。谢谢!我不知道。但是,你知道为什么它不让我用它的类型声明变量吗?从第1行开始,它现在给了我一个错误。在第1行,我还将
WScript.CreateObject()
替换为
CreateObject()
,就像我以前遇到的错误一样。试着把它改回去。它也不起作用。在使用更大的代码进行构建时,我还必须将Dim myworkbook作为工作簿删除,因为它无法编译。可能还有其他因素影响这一点吗?我以为您正在使用VBA,但它似乎是VBScript,所以所有这些显式声明在VBScript中都不起作用!