Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Elimanare macro sul nuovo file xlsm salvato

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

[Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 22/02/13 00:17

Ciao a tutto il Forum!
Seguo parecchi questo forum per creare i miei file excel e devo dire che senza di voi sarei indietro anni luce! quindi vi ringrazio a priori.
Vengo al nocciolo della questione, ho fatto un xlsm (nuovo preventivo.xlsm )per comporre dei preventivi, al suo interno utilizzo la seguente macro per la numerazione automatica ad ogni avvio del file:

----------------------------------------------------
Codice: Seleziona tutto
Private Sub Workbook_Open()

mfilehandle = FreeFile
strpath = "c:\aperture.txt"
On Error GoTo ErrorHandler
Open strpath For Input As #mfilehandle
Close #mfilehandle
Ok:
Open strpath For Input As #mfilehandle
Input #mfilehandle, Numero
Cells(9, 5) = Numero + 1
Close #mfilehandle
Open strpath For Output As #mfilehandle
Print #mfilehandle, Numero + 1
Close #mfilehandle



Exit Sub

ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 53 ' "File already open" error.
Open strpath For Output As #mfilehandle
Print #mfilehandle, 0
Close #mfilehandle
GoTo Ok

End Select
Resume ' Resume execution at same line
' that caused the error.

End Sub
--------------------------------------

e fin qui nessun problema, in quanto non necessito di una numerazione consegutiva in quanto sono lo preventivi (se manca qualche numero non c'è problema, l'importante è che non si ripetano.

Una volta composto il preventivo lo salvo in PDF e xlsm in una determinata cartella tramite questa macro collegata ad un tasto:

---------------------------------------
Codice: Seleziona tutto
Public Sub Salvapdfrete()

Dim sPath As String
Dim sNome As String

Application.DisplayAlerts = True
On Error Resume Next

With ThisWorkbook

sPath = "c:\preventivi"

With .Worksheets("Preventivo")

sNome = .Range("D12").Value & _
" - Preventivo n." & .Range("E9").Value & _
" - " & Format(.Range("M9").Value, "dd-mm-yyyy")

.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sPath & "\" & sNome & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

End With

End With

Application.DisplayAlerts = True

nome = "c:\preventivi\" & [D12] & " - " & "Preventivo n." & [E9] & " - " & Format([M9], "dd-mm-yyyy") & ".xlsm"
ActiveWorkbook.SaveAs nome
Application.DisplayAlerts = True

End Sub
-------------------------------

Salvo il file in questi due formati perchè il file PDF lo invio al cliente e attendo la conferma, una volta confermato il preventivo, andrò ad aprire il file xlsm relativo e aggiungerò delle modifiche ( una scontistica o note o semplicemente la dicitura accettato) per poi stamparlo nuovamente in pdf e reinviarlo al cliente con le modifiche apportate.
Il problema risiede sul file xlsm, derivando dal primo file (nuovo preventivo.xlsm) la macro per la numerazione progressiva è attiva! e aprendolo avrò un numero preventivo diverso!

Vorrei capire da voi guru come eliminare la relativa macro durante il salvataggio del nuovo xlsm e magari aggiungere/rimuovere un nuovo tasto con relativa macro .

Spero di essermi spiegato bene, se vi serve qualche altra info non esitate a chiedermi!

CIAO e ancora!

EDIT:ore 01:40 - Inserito il codice Vba in Tag CODE come dovrebbe fare ogni utente quando posta tale codice e/o formule
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Sponsor
 

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi Anthony47 » 22/02/13 00:39

Ciao dighitosz, benvenuto nel forum.

Salva il file in formato xlsx... Per questo ho modificato la tua macro come segue (vedi le istruzioni marcate ***):
Codice: Seleziona tutto
Application.DisplayAlerts = False      '****
nome = "c:\preventivi\" & [D12] & " - " & "Preventivo n." & [E9] & " - " & Format([M9], "dd-mm-yyyy") & ".xlsx"   '****
ActiveWorkbook.SaveAs nome
Application.DisplayAlerts = True

Fai sapere...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi Anthony47 » 22/02/13 01:01

Integrando quanto suggerito:
-quindi avrai un generatore di preventivi (xlsm), che usa le macro, e una serie di file "preventivo" che sono senza macro.
-l' eventuale elaborazione dei file "preventivo" (xlsx) la dovrai fare con le macro contenute sul file "generatore", che quindi non potranno far riferimento a ThisWorkbook ma a un workbook con nome e cognome, che potrai ottenere con un loop del tipo
Codice: Seleziona tutto
myPrev = ThisWorkbook.Name
For Each Wbb In Workbooks
If Len(Wbb.Name) > Len(Replace(Wbb.Name, "Preventivo", "")) Then
    myPrev = Wbb.Name
    Exit For
End If
Next Wbb

Il "nome e cognome" del file sara' contenuto nella variabile myPrev, e puo' essere o quello di un preventivo oppure lo stesso "ThisWorkbook.name" (se nessun preventivo e' aperto).
Il codice presuppone che la macro sara' lanciata con max un solo file "Preventivo" aperto.

Insomma e' piu' articolato di come avevo detto prima.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 22/02/13 19:04

Ciao Anthony47, intanto grazie della risposta!
La prima parte mi è chiara, la seconda un po meno, il loop dove lo inserisco?
fFa le opzioni di salvataggio o sull'oggetto Thisworkbook del xlsm?

CIAO!
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 22/02/13 19:14

Ciao Anthony47 , ho provato ora ad apportare la prima modifica da te consigliata, la stampa del pdf avviene senza problema, ma nessun xslx viene creato... :/
allego il file direttamente?
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi Anthony47 » 23/02/13 02:19

Elimina momentaneamente quell' Application.DisplayAlerts = False e segui i messaggi che ti riporta excel; se non "ti illumini" da solo allora scrivi esattamente i messaggi che ti vengono presentati e continua accettando la segnalazione come "va bene così".

Per quanto riguarda il discorso in generale, ti ho suggerito di lavorare con un "generatore" di preventivi che ha le macro, e tanti "preventivi" senza macro (il file xlsx che dobbiamo creare). Con la modifica alla macro che ho delineato, le macro lavoreranno sul file "preventivo" eventualmente aperto in quel momento, oppure sul "generatore" se nessun preventivo e' aperto.
Per ora non vorrei il file, ho la tendenza a far lavorare piu' voi utenti :D

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 24/02/13 13:08

Ciao Anthony47!
Grazie del supporto , ho cercato per qualceh giorno la soluzione al problema ma proprio non se ne vien fuori , pur eliminando gli Alerts non ricevo nessun errore da Excel, mi sta prendendo per il.... ! :lol:
La macro genera il pdf e nient'altro. ho controllato path di salvataggio, comandi, virgole, ........ argh!
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi Anthony47 » 24/02/13 15:01

Hummm...
1) Mi dici il nome del modulo in cui e' inserita la macro? (si legge nell' intestazione della finestra vba, la parte alta sopra i Menu; mi serve NomeFile e nome Modulo).
2) Se esegui manualmente un "salva con nome", scegliendo i formato ".xlsx" riesci a salvare il file, senza macro?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 25/02/13 12:48

Ciao Anthony47,


Hummm...
1) Mi dici il nome del modulo in cui e' inserita la macro? (si legge nell' intestazione della finestra vba, la parte alta sopra i Menu; mi serve NomeFile e nome Modulo).
2) Se esegui manualmente un "salva con nome", scegliendo i formato ".xlsx" riesci a salvare il file, senza macro?



1) il modulo si chiama Modulo5 e il file nuovopreventivo.xlsm

2) se eseguo manualemente il "salva con nome" mi viene mostrato il messaggio che mi avverte che il nuovo file sarà totalemtne privo di macro ... premo Si e il file xlsx viene generato normalemtne.



ne frattempo....

ho risolto modificando la macro così:

Application.DisplayAlerts = False
nome = "c:\preventivi\" & [D12] & " - " & "Preventivo n." & [E9] & " - " & Format([M9], "dd-mm-yyyy") & ".xlsx"
ActiveWorkbook.SaveAs Filename:=nome, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True

(grazie al consiglio di un utente)

ottengo così un pdf e l'xlsx senza macro..
ovviamente tutti i tasti che avevo nel xlsm ora non funzionano più... e le cose si complicano.... :) diventa un bel bordello :)

Non è possibile secondo le tue conoscenze andare a sopprimere una solo macro/modulo?
la macro della numerazione automantica è contenuta nel "Modulo7" che tu sappia non vi è modo di fare un delete automatico del suddetto modulo all'avvio della macro di salvataggio?

Cosi potrei mantende il file in formato xlsm dopo il salvataggio !

CIAOOOOO! e GRAZIE!
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi Anthony47 » 25/02/13 14:07

Nel mio suggerimento i file "preventivo" dovevano essere elaborati dalle macro del file "generatore".

Se vuoi invece eliminare i modo mirato delle macro allora guarda questa discussione: viewtopic.php?f=26&t=94999&hilit=vbproject

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 25/02/13 17:45

No, ho detto una cavolata, dovrei rimuovere la macro private sul "ThisWorkbook" non il modulo 7!
ovvero:

Private Sub Workbook_Open()

mfilehandle = FreeFile
strpath = "c:\aperture.txt"
On Error GoTo ErrorHandler
Open strpath For Input As #mfilehandle
Close #mfilehandle
Ok:
Open strpath For Input As #mfilehandle
Input #mfilehandle, Numero
Cells(9, 5) = Numero + 1
Close #mfilehandle
Open strpath For Output As #mfilehandle
Print #mfilehandle, Numero + 1
Close #mfilehandle



Exit Sub

ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 53 ' "File already open" error.
Open strpath For Output As #mfilehandle
Print #mfilehandle, 0
Close #mfilehandle
GoTo Ok

End Select
Resume ' Resume execution at same line
' that caused the error.

End Sub

dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 25/02/13 18:21

Come non detto, mi basta eliminare il modulo 7 ;) ,
ho trovato questa macro per eliminare il modulo 7

Codice: Seleziona tutto
[quote]Sub CancellaModulo()
Dim VBComp As VBComponent
Set VBComp = ThisWorkbook.VBProject.VBComponents("Modulo7")
ThisWorkbook.VBProject.VBComponents.Remove VBComp
End Sub[/quote]



ma non riesco ad integrarlo alla macro di salvataggio:

Codice: Seleziona tutto
Public Sub Salvapdfrete()

    Dim sPath As String
    Dim sNome As String
   
Application.DisplayAlerts = True
    On Error Resume Next
   
    With ThisWorkbook
   
        sPath = "c:\preventivi"
       
        With .Worksheets("Preventivo")
           
                        sNome = .Range("D12").Value & _
 " - Preventivo n." & .Range("E9").Value & _
 " - " & Format(.Range("M9").Value, "dd-mm-yyyy")
   
            .ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=sPath & "\" & sNome & ".pdf", _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=True

        End With
       
    End With

    Application.DisplayAlerts = True
   
    nome = "c:\preventivi\" & [D12] & " - " & "Preventivo n." & [E9] & " - " & Format([M9], "dd-mm-yyyy") & ".xlsm"
ActiveWorkbook.SaveAs nome
        Application.DisplayAlerts = True
   
End Sub



qualche suggerimento?

CIAO!
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 25/02/13 20:06

No scusate, sto facendo una confusione pazzesca, dovrei riuscire ad eliminare il contenuto del ThisWorkbook! :(
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi dighitosz » 25/02/13 22:09

TROVATO!!!!!!!!!!!!!!!!!!

Codice: Seleziona tutto
Sub RemoveCode()
'Remove all code from ThisWorkbook code module
ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.DeleteLines 1, _
        ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.CountOfLines

End Sub



Spero possa servire anche ad altri utenti!

CIAO E GRAZIE DELL AIUTO!
dighitosz
Utente Junior
 
Post: 11
Iscritto il: 22/02/13 00:17

Re: [Excel] Elimanare macro sul nuovo file xlsm salvato

Postdi Anthony47 » 25/02/13 22:52

Grazie per il feedback, comunque c' era nel link che ti avevo passato (viewtopic.php?p=461363#p461298), nella formulazione
Codice: Seleziona tutto
For I = ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.CountOfLines To 1 Step -1
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule.DeleteLines I
Next I

Ciao, alla prossima.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Elimanare macro sul nuovo file xlsm salvato":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti

cron