Condividi:        

Inserire macro in automatico

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

Inserire macro in automatico

Postdi nicola_na78 » 01/07/10 08:57

ciao a tutti, ho un problema con una macro excel che non riesco a risolvere...... mi spiego meglio:
con un programma esterno esporto su excel un elenco di articoli, mediante una macro che parte in automatico imposto il formato, lo stile di testo ecc....... inserisco un pulsante (questo pulsante richiama una macro denominata "[u]macro_imposta ordine[/u]" alla fine salva il file col nome "offerte.xls".
il file xls generato deve essere inviato ad altri utenti i quali questi inseriscono le quantita' negli articoli di loro interesse e poi premendo il pulsante con la macro "Macro_imposta_ordine" la quale filtra tutti gli articoli con valore > 0.
il problema è che dovrei fare in modo che la macro venisse inserta nel foglio durante l'avvio della macro automatica che parte all'inizio.....dato che avviene tutto in maniera automatico mediante shedulazione la nuova funzione dovrebbe essere inserita in maniera automatica. come posso fare???

ringrazio tutti.
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Sponsor
 

Re: Inserire macro in automatico

Postdi Flash30005 » 01/07/10 09:56

L'argomento è già stato trattato qui e tutta la procedura è stata da me testata e funzionante
"Materiale" occorrente:
1 file excel (master) con macro
1 modulo.bas (che contiene la macro da inserire nel file da inviare)
1 programma nel file master che crea il file (da inviare), inserisce il modulo, che si trova nel proprio Hd, nel file da inviare.
Il tutto è stato postato nel link riportato.

Dov'è il problema? :roll:
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserire macro in automatico

Postdi nicola_na78 » 01/07/10 10:50

ho fatto come mi hai detto tu, solo che quando lancio la macro mi esce il seguente avviso:
errore di run-time 1004
l'accesso a livello di programmazione al progetto visal basic non è attendibile.
la procedura da me effettuata è la seguente:
nella mia macro inserisco la funzione

Sub InserisciModulo()
ChDrive "C"
ChDir "C:\"
Fname = Dir("macro_pulsante_offerte.bas")
If Len(Fname) = 0 Then
MsgBox "Nessun Modulo nella directory"
Exit Sub
Else
Application.ScreenUpdating = False
Application.EnableEvents = False
Call ImportModule(Fname)
CodeFile = True
End If

Application.ScreenUpdating = True
Application.EnableEvents = True
If CodeFile Then
MsgBox "Aggiunto Modulo"
Else
MsgBox "Modulo non aggiunto - file non trovato"
End If

End Sub
Sub ImportModule(Fname As Variant)
ActiveWorkbook.VBProject.VBComponents.Import Fname
Application.Visible = True
end sub

premo su debug e mi evidenzia in giallo : ActiveWorkbook.VBProject.VBComponents.Import Fname

dove è che sbaglio???
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi Flash30005 » 01/07/10 12:20

Come già scritto nell'altro topic devi creare o aprire il file nel quale devi inserire il modulo altrimenti il modulo si inserirà nel file "Master".
In tutto ciò che hai scritto (codice macro) non vedo menzionare Offerte.xls, che corrisponde al file che devi inviare.
Ora replico di nuovo la macro,
che prevede l'inserimento del modulo1.bas (posizionato nel percorso C:\data\)
in un file creato (nuovo) rinominato in Offerte.xls
e nel quale inserirà il modulo.
Tu non devi far altro che aprire un file nuovo (per evitare conflitti con altre macro)
incollare l'intero codice che ti posto e avviare la macro "InserisciModulo".
Codice: Seleziona tutto
Sub InserisciModulo()
ChDrive "C"
ChDir "C:\Data\"
Fname = Dir("Modulo1.bas")
If Len(Fname) = 0 Then
MsgBox "Nessun Modulo nella directory"
Exit Sub
Else
Application.ScreenUpdating = False
Application.EnableEvents = False
Call ImportModule(Fname)
CodeFile = True
End If

Application.ScreenUpdating = True
Application.EnableEvents = True
If CodeFile Then
MsgBox "Aggiunto Modulo"
Else
MsgBox "Modulo non aggiunto - file non trovato"
End If

End Sub
Sub ImportModule(Fname As Variant)
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:="C:\Data\Offerte.xls.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False

ActiveWorkbook.VBProject.VBComponents.Import Fname
Application.Visible = True
End Sub


Prova e verifica se anche questo ti dà problemi di inserimento modulo nel file creato e rinominato.
Una volta appurato che funziona, come del resto funziona a me, dovrai adattarlo al tuo file
Per l'adattamento dovrai solo rendere attivo il tuo "Offerte.xls" in ImportModule prima del codice "... .import Fname"

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserire macro in automatico

Postdi nicola_na78 » 01/07/10 13:24

ho seguito alla lettera come descritto sotto, va lo stesso in errore:
ERRORE DI RUN-TIME 1004

L'accesso a livello di programmazione al progetto di visualbasic non è attendibile.....
ActiveWorkbook.VBProject.VBComponents.Import Fname
si evidenzia di giallo


perche' non facciamo cosi'
posso inserire il MODULO1.BAS durante l'esecuzione della prima macro in "THISWORKBOOK" di offerte.xls generato??? io credo che cosi' facendo quando invio il file la macro ci dovrebbe essere dentro.....
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi Flash30005 » 01/07/10 15:22

No,
c'è qualcosa che non mi convince...
Intanto ti invio il file Master con la macro
e il modulo1.bas
Scompatta l'archivio
Crea una cartella Data in C:\
in C:\Data\ metterai il modulo1.bas
Il file Master xls può essere ovunque
apri il file master e avvi la macro principale "InserisciModulo"
e dimmi cosa succede
inoltre informaci anche sul tuo Sistema Operativo e Versione di Office

download file

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserire macro in automatico

Postdi nicola_na78 » 01/07/10 15:35

Mi da sempre lo stesso errore.....

S.O. Windows XP Professional versione 2002 S.pack 3
Microsoft Office Professional 2003
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi Flash30005 » 01/07/10 21:29

Il Sistema operativo va bene come anche la versione di office
ma...
Hai messo il
modulo1.bas
nella cartella C:\Data\ ?
Prova a inserire all'inzio della macro che ti dà l'errore queste due righe di codice
Codice: Seleziona tutto
Sub ImportModule(Fname As Variant)   '<<<< nome macro esistente
ChDrive "C"                '<<<<< aggiungere
ChDir "C:\Data"          '<<<<< aggiungere
    Workbooks.Add     '<<<<< esistente


Fai sapere

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserire macro in automatico

Postdi Anthony47 » 02/07/10 00:36

Non c' e' nessun bisogno di inserire macro in automatico, basta inserire la macro nel file iniziale ed e' fatta.

Comunque per i piu' esperti che sanno gestire le complicazioni che la cosa comporta e' sempre possibile eseguire l' importazione di un file .bas su cui precedentemente e' stata esportata la macro, o anche modificare una macro al volo.
Trattandosi di manipolazione da macro su macro e' necessario definire attendibile l' accesso al progetto vba (e' una delle impostazioni di sicurezza).
Oltre ai link che ti ha dato Flash, anche questi trattano di come manipolare le macro da macro:
viewtopic.php?f=26&t=65595
viewtopic.php?f=26&t=80543

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

Re: Inserire macro in automatico

Postdi nicola_na78 » 02/07/10 08:07

fa sempre la stessa cosa.......
errore di run-time 1004
un'altro metodo????
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi Anthony47 » 02/07/10 08:21

L' ho detto, l' hai fatto?
Trattandosi di manipolazione da macro su macro e' necessario definire attendibile l' accesso al progetto vba (e' una delle impostazioni di sicurezza).


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

Re: Inserire macro in automatico

Postdi nicola_na78 » 02/07/10 09:41

evviva ce l'ho fatta....... funziona era un problema di impostazioni di protezione di office..... :)
ce ancora un piccolo problema il modulo viene importato alla perfezione nel file attivo solo che ho voluto vedere su un'altro pc se era tutto ok, lo stesso file inviato tramite skype dal mio pc ad un'altro pc il modulo che ho importato in precedenza nn c'è piu'!!!!! cosa puo' essere ora?? se apro lo stesso file nel mio pc vedo il modulo inserito......
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi Anthony47 » 02/07/10 23:51

Bravo.
Per quanto riguarda il problema che segnali: lo hai inviato prima di salvarlo :D ; il secondo utente ha disabilitato le macro nel suo profilo di sicurezza; altro che va debuggato sui due pc.

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

Re: Inserire macro in automatico

Postdi nicola_na78 » 05/07/10 08:16

si ho salvato prima di inviare il file ma niente.... ho controlalto se le macro sono disabilitate, è tutto ok solo che nell'altro pc quando premo sul pulsante che richiama la macro importata mi compare un msgbox che dice impossibile trovare il file personal.xls....... come è ossibile se la macro risiede sul file attivo che il pulsante punta su un'altra destinazione???? sotto è la macro che crea in automatico il pulsante.
Sub Macro2()
ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 100, 25, 50, 35).Name = "Prova"
ActiveSheet.Shapes("Prova").Select
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 65
Selection.ShapeRange.Fill.BackColor.SchemeColor = 11
Selection.ShapeRange.Fill.TwoColorGradient msoGradientHorizontal, 2
Selection.Characters.Text = "Crea modulo d'ordine"
Selection.ShapeRange.ScaleWidth 1.42, msoFalse, msoScaleFromBottomRight
Selection.ShapeRange.ScaleHeight 1.36, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.IncrementLeft 652.5
Selection.ShapeRange.IncrementTop -16.5
Selection.ShapeRange.ScaleHeight 0.72, msoFalse, msoScaleFromTopLeft
With Selection.Characters(Start:=1, Length:=3).Font
.Name = "Arial"
.FontStyle = "Normale"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ActiveSheet.Shapes("Prova").Select
With Selection
.Placement = xlMoveAndSize
.PrintObject = False
End With
ActiveSheet.Shapes("Prova").Select
Selection.OnAction = "Macro1"
Range("A11").Select
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi Flash30005 » 05/07/10 08:57

Alcuni Pc sono configurati con percorsi di default diversi dagli "standard"

quindi è d'obbligo impostare nella macro il percorso o addirittura il drive applicando le formule già inviate (leggi su) anche per la ricerca del file di lavoro non solo per la ricerca del modulo.

ChDrive e ChDir

Altrimenti il tuo file Personale.xls sarà cercato nella directory di default che potrebbe anche essere Z:\MieiDocumenti\
che chiaramente non troverà.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserire macro in automatico

Postdi Anthony47 » 05/07/10 17:12

E' evidente che la macro associata alla forma resiede nel file Personal.xls del tuo computer, non nel file che distribuisci.

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

Re: Inserire macro in automatico

Postdi nicola_na78 » 07/07/10 11:01

funziona tutto alla grande..... :)
ti posso porre un'altro quesito???? ho la necessita' di salvare il file in txt ho usato questa funzione:
ActiveWorkbook.SaveAs Filename:="C:\dati\File.txt
in questo modo mi salva tutto il foglio con tutti i dati in formato txt

si puo' esportare x esempio solo la colonna "A" e "B" del file xls in txt????

grazie 1000 x la disponibilita' a presto
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi maxmula » 07/07/10 13:35

Visto che già stai programmando VBA, si può fare tutto con una "tradizionale" gestione di file.
Ti allego un esempio:

Codice: Seleziona tutto
    PRIMA_RIGA = 1
    ULTIMA_RIGA = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
    F = FreeFile()
    D = CurDir
   
    Open D & "\miofile.txt" For Output As #F
         For R = PRIMA_RIGA To ULTIMA_RIGA
            Print #F, Cells(R, 1).Value & vbTab & Cells(R, 2).Value
         Next
    Close #F

Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: Inserire macro in automatico

Postdi nicola_na78 » 07/07/10 14:42

anche questo aiuto è stato perfetto grazie tante.... approfitto di un'ultima cosa e poi credo di avere finito.... ;)
importo tramite una macro un modulo, per poter funzionare questo modulo ha bisogno di questo riferimento: "Microsoft Visual basic for applications extensibility 5.3 lo posso inserire in automatico senza andare a selezionare Riferimenti e poi la libreria????
grazie
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Re: Inserire macro in automatico

Postdi maxmula » 07/07/10 22:13

Guarda, se devo essere sincero non mi è mai capitato di averne bisogno...
Però cercando un po' in giro (non si finisce mai d'imparare), ho trovato quest'articolo:

http://www.vbaexpress.com/kb/getarticle.php?kb_id=267
Forse fa al caso tuo.

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Inserire macro in automatico":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti