Jump to content

Not able to open Excel spreadsheet for read - (Moved)


Go to solution Solved by MP1454,

Recommended Posts

Posted

Gurus,

I'm getting @error = 3 on _Excell_BookOpen on an AutoIt Version 3.0 console app and I don't know what I'm doing wrong. I haven't found any working examples of just reading through an existing spreadsheet. Any help would be greatly appreciated. 

It's an Excel 365 spreadsheet on Windows 10. Here is my code  sample:

#include <Excel.au3>
$sourceFile = "Duplicates.xlsx"

If Not FileExists($sourceFile) Then
    ConsoleWrite("Oops, don't see '" & $sourceFile & "'" & @LF)
    Exit
EndIf

$oExcel = _Excel_Open();False,False,False,False,False)  ; hidden instance
If @error Then
    ConsoleWrite("Failed to open spreadsheet")
    Exit
EndIf

$oWorkbook = _Excel_BookOpen($oExcel,$sourceFile,True,False)    ; readonly
If @error Then
    ConsoleWrite("Excel UDF: _Excel_BookOpen, Error opening '" & $sourceFile & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

Doing a Test Run or running the commandline compiled exe I get

Quote

Excel UDF: _Excel_BookOpen, Error opening 'Duplicates.xlsx'.
@error = 3, @extended = -2147352567

What am I doing wrong?

MP1454

Posted

You could add a COM error handler to assist with identifying the problem. Try running this revised code --

#include <Excel.au3>
$sourceFile = "Duplicates.xlsx"
Global $oMyError = ObjEvent("AutoIt.Error", "ErrFunc") ;Install a custom error handler

If Not FileExists($sourceFile) Then
    ConsoleWrite("Oops, don't see '" & $sourceFile & "'" & @LF)
    Exit
EndIf

$oExcel = _Excel_Open();False,False,False,False,False)  ; hidden instance
If @error Then
    ConsoleWrite("Failed to open spreadsheet")
    Exit
EndIf

$oWorkbook = _Excel_BookOpen($oExcel,$sourceFile,True,False)    ; readonly
If @error Then
    ConsoleWrite("Excel UDF: _Excel_BookOpen, Error opening '" & $sourceFile & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf

;This is a custom error handler
Func ErrFunc()
    Local $HexNumber = Hex($oMyError.number, 8)
    ConsoleWrite("->    We intercepted a COM Error !" & @CRLF & _
        "->    err.number is: " & @TAB & $HexNumber & @CRLF & _
        "->    err.source: " & @TAB & $oMyError.source & @CRLF & _
        "->    err.windescription: " & @TAB & $oMyError.windescription & _
        "->    err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF)
EndFunc   ;==>ErrFunc

 

  • Moderators
Posted

Moved to the appropriate forum.

Moderation Team

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted

The error you get tells you that the workbook is protected by a password. 

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

  • Solution
Posted

I found the issue. In earlier pre-Excel versions of my script I had no problems opening files without a path, assuming the files were in the same folder as the script or compiled executable, which they were. Everything worked fine.

But with _Excel.au3, I got the error until I replaced $sourceFile with the full path. So that was the issue. Interesting enough, if I use a relative path ".\Test.xlsx" it opens a blank Excel instance and just sits there. Doesn't abort; doesn't open the spreadsheet.

So there you go, _Excel.au3 is limited in that it has to have a full file path, unlike the built-in FileOpen() which works fine without a full path.

Thanks for at least replying to my call for help.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...