Discussione:
Excel e VBScript
(troppo vecchio per rispondere)
Gianluigi Agostini
2011-02-08 21:27:43 UTC
Permalink
Buongiorno.
Ho la necessità di testare se un foglio di excel è protetto, nel caso
sproteggerlo, scriverci e riproteggerlo, il tutto con un VBS da lanciare
esternamente ad Excel.
All'interno del mio script VBS ho provato con:

if objExcel.ActiveSheet.unprotect=False Then
objExcel.ActiveSheet.unprotect=true
strProt = 1
End if


ed al termine delle procedure
if strProt = 1 Then
objExcel.Sheets("Foglio1").protect
strProt = 0
end if


Funziona solo la prima parte, nel senso che il foglio viene sprotetto
e poi via codice ci scrivo, ma al termine non c'è verso di
riproteggerlo.
Preciso che ho scarsissima competenza in materia, mi date una mano?
Grazie
Gianluigi
Mauro Gamberini
2011-02-09 09:08:12 UTC
Permalink
"Gianluigi Agostini" ha scritto nel messaggio news:4d51b55e$0$30908$***@news.tiscali.it...

Buongiorno.
Ho la necessità di testare se un foglio di excel è protetto, nel caso
sproteggerlo, scriverci e riproteggerlo, il tutto con un VBS da lanciare
esternamente ad Excel.
All'interno del mio script VBS ho provato con:

if objExcel.ActiveSheet.unprotect=False Then
objExcel.ActiveSheet.unprotect=true
strProt = 1
End if


ed al termine delle procedure
if strProt = 1 Then
objExcel.Sheets("Foglio1").protect
strProt = 0
end if


Funziona solo la prima parte, nel senso che il foglio viene sprotetto
e poi via codice ci scrivo, ma al termine non c'è verso di
riproteggerlo.
Preciso che ho scarsissima competenza in materia, mi date una mano?
Grazie
Gianluigi
*******************************************

Questo codice fa quanto mi aspetto:

Dim objExcel
Dim objWorkbook
Dim objWorksheet

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Prove\mioFile.xlsx")
Set objWorksheet = objWorkbook.Worksheets("Foglio1")

'objExcel.Visible = True

With objWorksheet
.Unprotect "psw"
.Cells(1, 1).Value = "DatoA"
.Cells(1, 2).Value = "DatoB"
.Protect "psw"
End With

objWorkbook.Save
objExcel.Quit


Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing

Ho commentato la riga: 'objExcel.Visible = True
nel caso tu non voglia visualizzare il file durante
le tue operazioni. Qui semplicemente scrivo
nelle celle A1:B1 del Foglio1.

Ovviamente modifica i riferimenti a path
e nomi con i tuoi.

---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

Loading...