Condividi:        

[excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

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

Postdi Anthony47 » 09/11/06 15:23

Ora non mi resta che mettere sui fogli che m'interessano le formule per poter generare da A1 a M1 la tabella corretta. Ma questo è un compito facile ma noiso ma non ci saranno problemi.

Una volta scritta la prima formula sulla colonna A di ogni riga, puoi copiare A su B e su C; correggi quella in C e la ricopi su D e successive. Ti annoi di meno…

Un'ultima cosa: quando si mette una funzione excell ti mette nella cella #N/D

Immagino che fai riferimento alla funzione CERCA.VERT; per evitare l’ errore devi usare una formula tipo
Codice: Seleziona tutto
=SE(VAL.ERRORE(CERCA.VERT("Distanza";A1:J20;2;0)); ""; CERCA.VERT("Distanza";A1:J20;2;0))

L’ errore #N/D si genera quando ilvalore trovato non esiste nella tabella di ricerca.

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

Sponsor
 

Postdi viskio » 09/11/06 15:55

sisisi esatto. Farò così allora.....sperando di riuscirci. :P :P .
Problema risolto quindi. Grazie ancora di tutto e della pazienza soprattutto.
viskio
Utente Junior
 
Post: 36
Iscritto il: 03/02/06 10:13

Postdi Anthony47 » 09/11/06 18:40

Ok, alla prossima.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi cassioli » 10/11/06 11:02

viskio ha scritto:sisisi esatto. Farò così allora.....sperando di riuscirci. :P :P .
Problema risolto quindi. Grazie ancora di tutto e della pazienza soprattutto.

Forse arrivo tardi.... ma puo' essere utile questa riga?
Codice: Seleziona tutto
test=Application.GetOpenFilename(filefilter:="Excel Files, *.xls")
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi Anthony47 » 10/11/06 19:36

Cassioli ha scritto:Forse arrivo tardi.... ma puo' essere utile questa riga?
Codice:
test=Application.GetOpenFilename(filefilter:="Excel Files, *.xls")


Effettivamente arrivi tardi, ma il suggerimento era giusto; magari hai riguardato i post precedenti, e hai notato che dopo un tentativo con FileDialog (ma l' utente ha excel 2000, FileDialog non e' disponibile) abbiamo risolto appunto con GetOpenFilename.

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

Postdi viskio » 15/11/06 11:06

Sto piano piano completando il file in excel. Ho creato i 4 fogli dove in ciascuno s'importerà il file .out dalla posizione G1, mentre dalla posizione A1/F1 verrà creata la tabella con i dati sulla stessa riga relativi ad ogni elemento. Fino a qui non c'è nessun problema.
La funzione cerca.vert non mi funziona correttamente però e non so spiegarmi il motivo. In pratica da il giusto valore solo alla ricerca del primo elemento. Questa tabella per effettuare la ricerca deve necessariamente avere determinate caratteristiche?
viskio
Utente Junior
 
Post: 36
Iscritto il: 03/02/06 10:13

Postdi Anthony47 » 15/11/06 11:24

viskio ha scritto:Sto piano piano completando il file in excel. Ho creato i 4 fogli dove in ciascuno s'importerà il file .out dalla posizione G1, mentre dalla posizione A1/F1 verrà creata la tabella con i dati sulla stessa riga relativi ad ogni elemento. Fino a qui non c'è nessun problema

Bene!

La funzione cerca.vert non mi funziona correttamente però e non so spiegarmi il motivo

Quale e' il formato della tabella in cui fai cerca.vert? che formula usi? che dati (di quelli che cerchi) sono presenti nella tabella? che cosa ti aspetti? che cosa ti viene?

pratica da il giusto valore solo alla ricerca del primo elemento

Nota che cerca.vert cerca solo la prima occorrenza di una certa chiave; tu che cosa intendi per "primo elemento"?

Infine, tieni presente che la chiave in tabella deve essere esattamente pari alla chiave che scrivi nella formula; attenzione a errori di battitura o caratteri spuri all' inizio o alla fine.

Facci sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi viskio » 15/11/06 11:45

Questo e il 2o folgio del mio file denominato CAMP.1. Gli altri 3 (CAMP.2,3,4 saranno identici)
Immagine

La colonna colorata presenta i dati di ciascun elemento (A,B,C....1,2,3) che non devono necessariamente essere in ordine crescente come si può facilmente notare dall'immagine. La matrice A2 fino a Fx rappresenta la mia matrice dove effettuare la ricerca.

Questo è il risultato che mi esce nel primo folgio che poi è quello che m'interessa:
Immagine

Il comando per effettuare la ricerca è il seguente:

=SE(VAL.ERRORE(CERCA.VERT(A9;CAMP.1!A2:F67;2)); ""; CERCA.VERT(A9;CAMP.1!A2:F67;2))

per l'elemento A. Chiaramente per l'elemento B sarà:
=SE(VAL.ERRORE(CERCA.VERT(A10;CAMP.1!A2:F67;2)); ""; CERCA.VERT(A10;CAMP.1!A2:F67;2))

e così i successivi...
viskio
Utente Junior
 
Post: 36
Iscritto il: 03/02/06 10:13

Postdi viskio » 15/11/06 11:58

Cerco di spegare meglio il lavoro che io devrò fare.
Questo si tratta di un foglio da fornire al cliente che riguarda delle rilevazioni dimensionali su particolari plastici.
Per ogni pezzo è associato un disegno tecnico con relative quote. Queste quote verranno contrassegnati da lettere e numeri per un'identificazione univoca.
Questo pezzo dovrè essere misurato tramite una macchina dimensionale ottica i cui risultati saranno i famosi file .out.
Logicamente e per praticità le rilevazione vengono fatte casualmente non seguendo l'ordine crescente assegnato ad ogni quota. Posso quindi prima misurara la quota A poi la 1 poi la C così via....
Io con il file in excell dovrei fornire una bella copia dell'esito della campionatura. :eeh: :eeh:
viskio
Utente Junior
 
Post: 36
Iscritto il: 03/02/06 10:13

Postdi Anthony47 » 15/11/06 12:19

La formula che devi usare e'
Codice: Seleziona tutto
=SE(VAL.ERRORE(CERCA.VERT(A9;CAMP.1!$A$2:$F$67;2;0)); ""; CERCA.VERT(A9;CAMP.1!$A$2:$F$67;2;0))


I $ sono opzionali e servono a rendere "assoluto" l' indirizzo, cosi' puoi copiare la formula nelle celle sottostanti senza doverla riscrivere.
Lo "zero" e' obbligatorio e serve ad avere il corretto risultato in tabelle non messe in ordine alfabetico.
Invece che CAMP.1!$A$2:$F$67 puoi anche usare una formula piu' "lunga", quale CAMP.1!$A$2:$F$200, in modo che la ricerca possa avvenire su fino a 200 righe di dati importati.

Infine, forse potrebbe esserti utile anche usare una formulazione con indirizzo indiretto:
- in A1 (o altra cella libera del tuo foglio) scrivi CAMP.1!$A$2:$F$200
- usi la formula
Codice: Seleziona tutto
=SE(VAL.ERRORE(CERCA.VERT(A9;INDIRETTO($A$1);2;0)); ""; CERCA.VERT(A9;INDIRETTO($A$1);2;0))


In questo modo, se devi stampare esiti prelevati da piu' fogli, bastera' modificare il contenuto di A1 e tutti i dati vengono prelevati da quel foglio.

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

Postdi viskio » 15/11/06 13:34

:D sembra che funzioni correttamente :P :P .
Adesso provo a completare il tutto.....

Ma come fate a sapere tutte queste cose? :?: :?:
viskio
Utente Junior
 
Post: 36
Iscritto il: 03/02/06 10:13

Postdi Anthony47 » 16/11/06 02:06

viskio ha scritto:Ma come fate a sapere tutte queste cose?

E' che noi la sera facciamo sempre un ripasso....

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

Postdi viskio » 22/11/06 13:57

File completato e perfettamente funzionante. Grazie a tutti e in particolare a Anthony. :lol: :lol: :lol:
Ciao.
viskio
Utente Junior
 
Post: 36
Iscritto il: 03/02/06 10:13

Re:

Postdi Robydeca » 07/10/10 14:36

viskio ha scritto:Con un mix tra quello che mi hai passato prima e l'ultima funzione sono riuscito a creare la macro che mi permette di scegliere il file .out e farlo importare sul foglio!!!!

Codice: Seleziona tutto
Sub ScegliFile2()
FullNome = Application.GetOpenFilename(Filefilter:="Output Files (*.out), *.txt,Tutti (*.*),*.*", Title:="Seleziona file")

'
MsgBox ("Selezionato  " & FullNome)


    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FullNome, Destination:=Range("A1"))
        .Name = "CAMP_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileThousandsSeparator = "'"
        .Refresh BackgroundQuery:=False
    End With
    Range("I15").Select


End Sub

:D :D :D



Salve volevo domandarti se io non seleziono nessun file mi esce "Selezionato Falso" ma poi mi va in errore, come posso fare per far uscire una finestra che mi dice "nessun file selezionato" senza che va in errore?
Grazie anticipatamente
Robydeca
Newbie
 
Post: 1
Iscritto il: 07/10/10 14:30

Re: [excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

Postdi Flash30005 » 07/10/10 15:26

Ciao Robydeca e benvenuto nel Forum

Puoi inserire questa riga di codice dopo il messaggio
Codice: Seleziona tutto
...
MsgBox ("Selezionato  " & FullNome)  '<<<<< esistente
If FullNome = "Falso" Then Exit Sub  '<<<<<< aggiungere riga
...
...


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: [excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

Postdi Anthony47 » 07/10/10 22:56

Piccola correzione a quanto scritto da Flash:
Codice: Seleziona tutto
If FullNome = False Then Exit Sub 'Nessuna scelta, esci

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

Re: [excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

Postdi Zoro76 » 13/10/10 16:37

Ho provato a seguire un po' il vostro dicorso ma come sempre poi mi sono perso:

io ho questo file in formato txt

http://rapidshare.com/files/424835095/lybk.txt

ma non sono riuscito a portarlo dentro ad excel anche se la macro non mi da nessun errore.
la macro che ho usato è questa:

Sub ScegliFile()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "All files", "*.*"
.Filters.Add "text", "*.txt", 1
.Show

If .SelectedItems.Count = 0 Then
MsgBox ("Nessuna voce selezionata, procedura annullata")
GoTo Esci
End If
FullNome = .SelectedItems(1) 'Directory e Nome del file selezionato
End With
Esci:
End Sub

in teoria dovrebbe importare i dati contenuti nel file txt, sapete dirmi perchè non va?

Ciao
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

Postdi Anthony47 » 13/10/10 21:40

Questa macro fa solo un lavoro preparatorio, cioe' mette nella variabile FullNome il file che hai scelto di aprire.
Per il resto del codice, registra una macro mentre apri il tuo file, impostando i parametri di importazione che ti interessano; in particolare:
-nello step 1 di Importazione guidata puoi scegliere da quale riga importare, quindi puoi ad esempio saltare le righe in testa non formattate
-nello step 2 puoi impostare quale e' il separatore di campo
-nello step 3 puoi impostare la formattazione dei campi, ad esempio se una colonna apparentemente numerica la vuoi come testo, e puoi marcare le colonne da non importare, se ce ne sono.
-se avessi dei numeri decimali, nelle opzioni Avanzate di step 3 puoi selezionare quale separatore decimale va usato, se diverso da quello impostato nel tuo excel.
Finita l' operazione di apertura file, fermi la registrazione macro e posti il codice della macro generata, e ti diremo come raccordare la macro attuale con questa nuova parte.

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

Re: [excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

Postdi Zoro76 » 14/10/10 10:41

Ho fatto una prova e sono riuscito ad importare il file. Ho però un problema: il file txt è generato da un programma Autocad che compila il file in questo modo


96 C f10 L200p
266 C f12 L120
66 C f10 L250p
3 C f10 L700
30 C f10 L100p
18 C f10 L145p2
3 C f10 L600
6 C f10 L450

Per spiegare cosa sono questi dati: ad es. 96 è la conta di blocchi mentre C f10 L200p è il nome del blocco
Il problema nasce quando creo la macro per importare i dati perchè non riesco a definire bene le colonne. Se ti allego il file di autocad (è un lisp = Visual Basic "quasi") magari riesci a capire come inserire più spazi tra la conta del blocco e il nome del blocco.

http://rapidshare.com/files/424977211/Lybk.lsp

La macro che ho creato è questa e avrei una domanda anche qui:

Sub Macro1()
'
' Macro1 Macro
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;U:\2_CONTRATTI\IT.10.8606_Palazzine-Resid_MONCALIERI-TO_Arching\05-ESECUTIVI\05-PLANIMETRIE\Corpo D\lybk.txt" _
, Destination:=Range("$A$1"))
.Name = "lybk"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(9, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(1, 2, 2, 4)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub


volevo sapere se c'è la possibilità di scegliere la directory di destinazione.
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO

Postdi Anthony47 » 14/10/10 13:51

Solo domande:
-Quale e' il problema con quel tipo di txt?
-Se devi "aprire" un file, che significa "scegliere la directory di destinazione"?

Per quanto riguarda il file lisp:
1) sono incompetente, ma spero che tra noi ci sia qualcuno capace di leggere e proporre qualcosa
2) non avendo capito il problema, anche se fossi competente non saprei che cosa fare

Se su questo argomento non ricevi qui nessuno spunto, prova a postare poi nella sezione Programmazione (sempre spiegando bene cosa vorresti ottenere).

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

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "[excel]CREAZIONE DI UN MACRO IN UN FILE PRECOMPILATO":


Chi c’è in linea

Visitano il forum: Ricky0185 e 49 ospiti