Newsgroup: it.comp.appl.access
Titolo: Password per WorkBook

Sto creando un programma per il pagamento di alcune competenze, sono
arrivato alla fine e mi manca qualche dettaglio.
Il programma genera un file excel che ci viene trasmesso per posta
elettronica e noi, contabilità,  provvediamo a pagare. La scelta del formato
excel è dovuto dal fatto che trattandosi di soldi chi acquisisce i dati ha
il sacrosanto diritto di vedere come e cosa il programma elabora, ma il
problema è che può essere anche modificato. E' possibile alla creazione del
file inserire una password che lo protegga dalle modifiche?
Grazie
Calabro


dipende da come generi il file.
se fai un export in formato xls, non saprei;
ma se lo crei via codice, allora
    Dim excApp As Object
    Dim excDoc As Object
    Dim blOpen As Boolean
    On Error Resume Next
    blOpen = True
    Set excApp = GetObject(, "Excel.Application")
    If Err.Number = 429 Then
        Set excApp = CreateObject("Excel.Application")
        blOpen = False
        Err.Number = 0
    End If
    On Error GoTo gestErrori
    Set excDoc = excApp.workbooks.Add
    excApp.Visible = True
    '
    'ci scrivi quello che vuoi
    excDoc.Worksheets(1).Cells(2, 2) = "Hello World!"
    '
    'lo salvi passandogli nome e password su scrittura
    excDoc.SaveAs FileName:="C:\pippo.xls", WriteResPassword:="pippo"
    'lo chiudi
    excDoc.Close
esci:
    Set excDoc = Nothing
    Set excApp = Nothing
    Exit Sub
gestErrori:
    MsgBox Err.Number & " - " & Err.Description
    GoTo esci
-- 
Federico
----------------------------------
Rimuovi paperino. per e-mail
----------------------------------
Tutte le richieste che arrivano
in privato, vengono cestinate.
----------------------------------
Sito Comune di it.comp.appl.access
http://www.sitocomune.com
mailto:
webm...@sitocomune.com
----------------------------------


...cut
Credo che la tua soluzione sia adattabile anche nel caso in cui Calabro
utilizzi il TransferSpreadsheet... non dovrebbe fare altro che aprire il
file generato (metodo Open), e fare un SaveAs aggiungendo la password di
scrittura.
Ciao. Claudio.

Io utilizzo il TransferSpreadsheet e se faccio SaveAs appare il solito
messaggio di excel 'il file esiste già. Sostituirlo?' Figurati, conoscendo i
miei polli, come minimo si lanciano dalla finestra. Ti dico solo che una
volta dando spiegazioni per telefono su excel, dall'altra parte mi chiedono:
mi scusi che cosè una cella. Pensa un pò con chi ho a che fare. Comunque ti
ringrazio.
"Claudio" <c...@NOSPAMandCOsupereva.it> ha scritto nel messaggio
news:i3a5tukl7oi9vqu47...@4ax.com...


ringrazio.
Dovresti rispondere dopo il quoting.
Comunque, se semplicemente prima di fare il SaveAs cancelli il file con
un bel Kill?
Ciao. Claudio.


infatti, ci ho pensato subito dopo averla inviata ;-)




come dice Claudio una possibile soluzione potrebbe essere questa,
richiamandola cosi':
s_expXls "nometabellaoquery", "C:\tuofile.xls", "tuapwd"
Sub s_expXls(sTable As String, sFile As String, sPwd As String)
    Dim excApp As Object
    Dim excDoc As Object
    Dim sFileTmp As String
    On Error GoTo gestErrori
    sFileTmp = "C:\Temp\tmp.xls"
    If dir(sFileTmp) <> "" Then Kill sFileTmp
    If dir(sFile) <> "" Then Kill sFile
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97,
sTable, sFileTmp
    On Error Resume Next
    Set excApp = GetObject(, "Excel.Application")
    If Err.Number = 429 Then
        Set excApp = CreateObject("Excel.Application")
        Err.Number = 0
    End If
    On Error GoTo gestErrori
    Set excDoc = excApp.workbooks.Open(sFileTmp)
    'excApp.Visible = True
    excDoc.SaveAs FileName:=sFile, WriteResPassword:=sPwd
    excDoc.Close
esci:
    Set excDoc = Nothing
    Set excApp = Nothing
    Exit Sub
gestErrori:
    MsgBox Err.Number & " - " & Err.Description
    GoTo esci
End Sub
come vedi dal codice, export avviene sempre su un file temporaneo,
questo perche' altrimenti quando esegue il SaveAs, excel avvisa che
il file esiste!!!
non conosco bene gli oggetti di excel, forse puo' essere migliorata.
se qualcosa non e' chiaro, scrivi
