Ciao a tutti,
in un db access 2007, a fronte del salvataggio di un file XLS, ho il codice vba riportato qui di seguito.
Funziona perfettamente su tutti i pc tranne su uno che mi restituisce l'errore in oggetto sulla riga Set objWorkbook1 = objExcel.Workbooks.Open(sPath & "tuofile.xlsx")
Ho provato a disinstrallare tyutto il pacchetto, reinstallare, pulire il registro ma non c'è verso di farlo funzionare...
il percorso/file esiste
cosa c'è che non va?
--------------------
sPath = "C:\miopercorso\"
'creo l'oggetto Excel
Set objExcel = CreateObject("Excel.Application")
'apro e metto un riferimento ai workbook tuoFile.xls
Set objWorkbook1 = objExcel.Workbooks.Open(sPath & "tuofile.xlsx")
'metto un riferimento al Foglio1 del workbook tuoFile.xls
Set objWorksheet1 = objWorkbook1.WorkSheets("Foglio1")
'rendo visibile Excel(se serve)
objExcel.Visible = True
With objWorksheet1
'.Unprotect password:="Pippo"
objWorksheet1.Cells(1, 2) = Me.Intestazione
objWorksheet1.Cells(4, 4) = "Ordine del " & Format$(Now(), "dd/mm/yyyy hh:mm:ss") & " --- Destinazione: " & Me.Testo99
objWorksheet1.Cells(1, 6) = "Cliente: " & Me.CLIENTE
objWorksheet1.Cells(2, 6) = "Indirizzo: " & Me.Testo25
objWorksheet1.Cells(3, 6) = "Città: " & Me.Testo27
For i = 1 To Me.RecordsetClone.RecordCount
xxx = Me.Percorso
objWorksheet1.Rows(i + 5).RowHeight = 100
.Range(.Cells(5 + i, 1), .Cells(5 + i, 16)).Borders.LineStyle = 7
'objExcel.ScreenUpdating = False
.Pictures.insert(xxx).Select
.shapes(i).Top = .Range("B" & 5 + i).Top
.shapes(i).Left = .Range("B" & 1 + i).Left
.shapes(i).Width = 100
.shapes(i).Height = 100
.shapes(i).Locked = True
objWorksheet1.Cells(5 + i, 1) = i
objWorksheet1.Cells(5 + i, 3) = Me.ARTICOLO
objWorksheet1.Cells(5 + i, 4) = Me.CODART
objWorksheet1.Cells(5 + i, 5) = "=myean13(Left(" & Me.CODART & ", Len(" & Me.CODART & ") - 1))"
objWorksheet1.Cells(5 + i, 6) = Me.DESCRIZION
objWorksheet1.Cells(5 + i, 7) = Me.colli
objWorksheet1.Cells(5 + i, = Me.IMBALLO
objWorksheet1.Cells(5 + i, 9) = Me.IMBALLO * Me.colli
objWorksheet1.Cells(5 + i, 10) = Me.PREZZO
objWorksheet1.Cells(5 + i, 11) = Me.sr1
objWorksheet1.Cells(5 + i, 12) = Me.sr2
objWorksheet1.Cells(5 + i, 13) = Me.sr3
objWorksheet1.Cells(5 + i, 14) = Me.DISPONIBIL
objWorksheet1.Cells(5 + i, 15) = Me.PrimoArr
objWorksheet1.Cells(5 + i, 16) = Me.ORDINABILI
.Range(.Cells(5 + i, 1), .Cells(5 + i, 16)).Locked = True
If i = Me.RecordsetClone.RecordCount Then
Else
DoCmd.GoToRecord , , acNext
DoEvents
End If
Next i
End With
'salvo le modifiche
objWorkbook1.Saveas Me.NOMEFILE & "_catalogo.xlsm"
'chiudo il workbook
objWorkbook1.Close
RigaChiusura:
'chiudo Excel
objExcel.Quit
'Set a Nothing dei vari oggetti
Set objWorksheet1 = Nothing
Set objWorkbook1 = Nothing
Set objExcel = Nothing
---------------------
grazie!
Nico