Condividi:        

metodo ... dell'oggetto _global non riuscito - Err. 1004

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

metodo ... dell'oggetto _global non riuscito - Err. 1004

Postdi caplucio » 17/11/15 12:36

Buongiorno a tutti
Ho visto che non è la prima volta che si apre un topic sull'err 1004 ma non sono riuscito a trovare un caso simili alla mia situazione.
File excel in versione .xls (per ragioni di compatibilità con versione office obsolete) aperto con excel 2010.
All'apertura del documento viene lanciato:

Codice: Seleziona tutto
Private Sub Workbook_Open()
Server = "172.25.255.102"
If EsisteServer(Server) = True Then
    ActiveSheet.BtnSalva.Visible = True
    SalvaDati
End If
DoEvents


La sub SalvaDati è, per quanto ci interessa, questa:
Codice: Seleziona tutto
Application.Cursor = xlWait
Application.ScreenUpdating = False
If Cells(5, 6).Value <> "" Then
' il codice che mi serve
end if


il codice è firmato con un certificato autoprodotto, è protetto da password, e la cartella è protetta.
Salvo il file in qualsiasi area che ho disponibile e tutto funziona.

Mi faccio spedire il file da una casella mail esterna al mio domino ed apro il file direttamente da outlook (con dbl clik): il codice si ferma sulla riga If Cells(5, 6).Value <> "" Then dandomi l'errore di run time in oggetto.
Prendo il file, lo salvo in locale e... tutto funziona...
Chi mi aiuta?
Disponibile ad inviare il file completo via PM
ciao!!
caplucio
Newbie
 
Post: 2
Iscritto il: 17/11/15 12:05

Sponsor
 

Re: metodo ... dell'oggetto _global non riuscito - Err. 100

Postdi Anthony47 » 18/11/15 23:18

Ciao caplucio, benvenuto nel forum.
Se ti dice "Metodo... ..dell'oggetto _global..." e' perche' il vba non sta' associando la Proprieta' Cells a un Range o a un Worksheet; questo si verifica ad esempio se il documento viene inizialmente aperto in Modalita' protetta (salvo diverse impostazioni nel tuo Excel, cosi' vengono aperti i file ricevuti come allegati di email) e poi se ne abilita la modifica cioe' si chiede di passare a visualizzazione normale; vedi https://support.microsoft.com/en-us/kb/2745652
Lo stesso articolo Microsoft descrive un modo per aggirare il problema.

Dici che il file e' firmato con un certificato autoprodotto; dovrebbe quindi essere possibile inserire in Opzioni /Centro protezione /Autori attendibili il nome dell'owner del certificato dichiarandolo come Autore attendibile; questo dovrebbe aprire il file direttamente nella modalita' standard (non Visualizzazione protetta).

Una possibile alternativa a quanto descritto da Microsoft potrebbe essere:
-ti crei sul foglio che deve essere attivato all'apertura un intervallo chiamato "Onetime" (il nome e' a piacere)
-togli la Workbook_Open e metti al suo posto queste
Codice: Seleziona tutto
Private Sub Workbook_Activate()
If ThisWorkbook.Sheets(1).Range("Onetime") <> "" Then Exit Sub
ThisWorkbook.Sheets(1).Range("Onetime").Value = Now
Sheets(1).Select 'Vedi Nota* nel messaggio
'
Server = "172.25.255.102"
If EsisteServer(Server) = True Then
    ActiveSheet.BtnSalva.Visible = True
    SalvaDati
End If
'Altro??
End Sub

Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Sheets(1).Range("Onetime").ClearContents
Saved = True
End Sub

In questo modo la Workbook_Activate verra' in realta' eseguita una sola volta e non a qualsiasi attivazione; l'aspetto negativo e' che la Sub Workbook_BeforeClose "fingerà" che il file non sia mai stato modificato, per cui non avrai piu' il messaggio "Vuoi salvare il file prima di chiuderlo?" e quindi dovrai salvarlo di tua iniziativa.

Nota*: poiche' il tuo codice lavora genericamente su ActiveSheet e' bene che il foglio che contiene BtnSalva venga espressamente attivato; se non e' Sheets(1) usa l'indice o in nome esatto (meglio ancora sarebbe usare il CodeName) nella riga di selezione

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: metodo ... dell'oggetto _global non riuscito - Err. 100

Postdi caplucio » 20/11/15 09:06

Ciao Anthony
grazie.. mi hai risolto il problema
Effettivamente il documento viene aperto in modalità protetta, ho fatto come mi hai suggerito, utilizzando l'evento Activate anziche Open e ora anche se il file arriva da domini esterni, dopo l'abilitazione, il codice parte e non da più errori.
Non avevo indicato sheets(1).activate perchè il file ha un solo sheets, per non saper ne leggere ne scrivere ho comunque seguito il tuo consiglio ed ho aggiunto la riga.
Grazie per l'aiuto!!!
caplucio
Newbie
 
Post: 2
Iscritto il: 17/11/15 12:05


Torna a Applicazioni Office Windows


Topic correlati a "metodo ... dell'oggetto _global non riuscito - Err. 1004":


Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti