Page 1 of 1

How to input a password into a XLS file wirh OLE

Posted: Fri Oct 31, 2008 12:22 pm
by Kleyber
As the subject, I have a XLS file and it has a password. So, how to input it in order to open it?

Regards,

Re: How to input a password into a XLS file wirh OLE

Posted: Fri Oct 31, 2008 1:06 pm
by Enrico Maria Giordano
Hint: WorkBooks:Open() method has a parameter called Password.

EMG

Posted: Fri Oct 31, 2008 1:07 pm
by Kleyber
Hi Enrico,

As usual, your help is fantastic. Just one more question: How to see the order of all the ::open() parameters? Can you show me?

Thanks a lot.

Posted: Fri Oct 31, 2008 1:14 pm
by Rochinha
Hi,

To save use the third parameter in the method SaveAs of WorkBook object

FUNCTION MAIN()
LOCAL oExcel := CREATEOBJECT( "Excel.Application" )
LOCAL oWorkbook := oExcel:Workbooks
LOCAL oSheet := oExcel:ActiveSheet
...
savefile := oWorkbook.SaveAs( fileXL, ,"YourPassWord" )
...
RETURN NIL

Posted: Fri Oct 31, 2008 1:24 pm
by Kleyber
SET PORTUGUESE ON

Fala Rochinha,

Não é bem isso que eu preciso. Eu tenho um arquivo XLS que está protegido por senha e eu tenho essa senha. Daí eu preciso somente abrir esse arquivo usando a senha...

Valeu,

SET ENGLISH ON

Hi Rochinha,

It's not exactly this what I need. I have a XLS file which is password protected and I already have this password. So, I need just open this file using the password.

Regards,

Posted: Fri Oct 31, 2008 1:28 pm
by Enrico Maria Giordano
Kleyber wrote:Hi Enrico,

As usual, your help is fantastic. Just one more question: How to see the order of all the ::open() parameters? Can you show me?

Thanks a lot.
Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU)
Please check VBA*.CHM help files or MSDN.

EMG

Posted: Fri Oct 31, 2008 1:29 pm
by Kleyber
Enrico,

Thank you!!!

Best Regards,

Posted: Sat Nov 01, 2008 6:52 am
by Rochinha
I think it is more complex.

You must determine if the password is in the spreadsheet or folder.

Use the example to improve the test in your XLS file.

Code: Select all

#include "fivewin.ch"

FUNCTION main( fileXL ) 
    LOCAL oExcel, oWorkbook, nSheets

    oExcel := TOLEAuto():New( "Excel.Application" ) 
    oExcel:Visible     := .t.
    oExcel:UserControl := .t.

    oWorkbook := oExcel:Workbooks

    oWorkbook:Open( fileXL )

    oActiveWorkBook   := oExcel:ActiveWorkBook

    XLSisProtected( 1, oExcel:ActiveWorkBook, "" )

    nSheets := oActiveWorkBook:Sheets:Count()

    For i = 1 To nSheets
        oWS := oActiveWorkbook:Worksheets(i)
        oWS:Activate()
        XLSisProtected( 2, oWS, oWS:Name )
    Next

    oExcel:End()
    //oWorkbook:Open( fileXL,,,, "xlstest" )

    RETURN NIL

*
* *
* FUNCTION: Test if XLS file is protect
* *
*
FUNCTION XLSisProtected(n,oOBJ,sName)
    LOCAL isP := .t.
    If n==1
       isP := oOBJ:ProtectWindows
       isP := oOBJ:ProtectStructure
       If isP
          MsgStop( "IS Protected", "WorkBook Protection" )
       Else
          MsgStop( "IS NOT Protected", "WorkBook Protection" )
       EndIf
    Else
       isP := oOBJ:ProtectContents
       isP := oOBJ:ProtectDrawingObjects
       isP := oOBJ:ProtectScenarios
       If isP
          MsgStop( "IS Protected", "WorkBook "+sName+" Protection" )
       Else
          MsgStop( "IS NOT Protected", "WorkBook "+sName+" Protection" )
       EndIf
    EndIf
    Return(isP)