View Full Version : [Excel] Esperti di MACRO... AIUTO !!!
Lucky Angus
08-07-2003, 20:15
Ciao a tutti i MACROisti del forum ...
ho realizzato una macro in Excel che molto "semplicemente" importa un file TXT in un nuovo documento secondo alcuni "criteri"
Fin qui tutto funziona correttamente ... il problema è che nella macro ho specificato il nome del file TXT da aprire (es.: "pippo.txt") ... domanda:
:eek: posso fare comparire un bello "sfoglia" all'inizio della macro che mi chiede quale file aprire e poi continuare con le operazioni registrate ? :eek:
Grazie ! :)
Originally posted by "Lucky Angus"
:eek: posso fare comparire un bello "sfoglia" all'inizio della macro che mi chiede quale file aprire e poi continuare con le operazioni registrate ? :eek:
sì
Cala Domestica e poi più.
http://www.mclink.it/com/lol/sardegna/g_tour/foto_t/a124.jpg
Originally posted by "a2000"
sì
va che non è un referendum :D
.........ma vuole sapere com si fa :)
Originally posted by "a2000"
Cala Domestica e poi più.
Se penso che io sto a schiumare e tu... ti ammazzerei. :mad:
la laurea a luglio è zumpat' dobbiamo rimandare l'incontro... ;)
Aggiungi al form o al foglio un controllo "Microsoft Common Dialog Control". Nel codice associato al pulsante sfoglia scrivi:
With CommonDialog1
.CancelError = True 'genera un errore se si preme Annulla
.Filter = "File di testo (*.txt)|*.txt|Tutti i file|*.*" 'tipi di file da aprire
.FilterIndex = 1 'filtro predefinito
On Error Resume Next
.ShowOpen 'apre la finestra di dialogo
.If Err.Number <> 0 Then 'se l'utente ha premuto Annulla
'fai qualcosa
Exit Sub
End If
'nella proprietà FileName trovi il nome del file
MsgBox .FileName
End With
Non era semplicemente così:
Application.Dialogs(xlDialogOpen).Show ("*.*")
per far comparire la finestra di dialogo per la scelta di un file all'interno di una macro? Se vuoi a ("*.*") sostituisci ("*.txt")... sorry se non ho capito bene il problema....
Originally posted by "atragon"
Non era semplicemente così:
Application.Dialogs(xlDialogOpen).Show ("*.*")
per far comparire la finestra di dialogo per la scelta di un file all'interno di una macro? Se vuoi a ("*.*") sostituisci ("*.txt")... sorry se non ho capito bene il problema....
Application.Dialogs, da quanto ne ho capito io, serve per visualizzare le finestre di dialogo di Excel. In effetti con la costante xlDialogOpen apri la finestra di apertura file, ma il file richiesto deve essere una cartella di Excel, non un file qualunque. Quel codice corrisponde pressapoco al menu File/Apri di Excel. Invece Lucky Angus vuole aprire un file di testo *.TXT dal quale importare informazioni nel foglio di lavoro.
Application.GetOpenFilename
Metodo GetOpenFilename[b]
Visualizza la finestra di dialogo standard Apri e consente di specificare un nome di file senza aprire effettivamente alcun file.
Sintassi
espressione.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
....
[/size]
Originally posted by "verloc"
Se penso che io sto a schiumare e tu... ti ammazzerei. :mad:
la laurea a luglio è zumpat' dobbiamo rimandare l'incontro... ;)
uaglio' s' mitc' !
andiamo a Sharm a novembre a festeggiare il nuovo ingegnere civile !
--Application.GetOpenFilename
Ho provato un codicillo volante siffatto:
Application.Dialogs(xlDialogOpen).Show ("*.txt")
Application.GetOpenFilename ("Text Files (*.txt), *.txt")
ma non mi pare vi siano differenze sostanziali nel comportamento dei due comandi... cosa cambia? dov'è l'inghippo?
Ah...ora ho fatto una prova più approfondita ..... mea culpa....però....GetOpenFileName non apre il file per l'importazione o sbaglio?
atragon ma scopi ogni tanto ?
nel senso d:
Scope
Program entities have the following kinds of scope (as shown in the table below):
Global
Entities that are accessible throughout an executable program. The name of a global entity must be unique. It cannot be used to identify any other global entity in the same executable program.
Scoping unit (Local scope)
Entities that are declared within a scoping unit. These entities are local to that scoping unit. The names of local entities are divided into classes (see the table below).
A scoping unit is one of the following:
A derived-type definition
A procedure interface body (excluding any derived-type definitions and interface bodies contained within it)
A program unit or subprogram (excluding any derived-type definitions, interface bodies, and subprograms contained within it)
....
[/size]
Il problema è che a volte leggo poco :D ora è chiaro, thx.
Lucky Angus
10-07-2003, 20:03
Grazie a tutti per le info ... ;)
CE L'HO FATTA !!! :D
Adesso devo un'attimo mettere a posto un paio di cose tipo: clicco sul bottone ... si apre la finestra di dialogo che mi fa scegliere il file da aprire ... appena premo annulla mi da un messaggio di errore ... cosa devo aggiungere per far si che quando prema annulla si chiuda il processo senza errori ? :confused:
????[/siz]
ragazzi che fatica !
Esempio di metodo GetOpenFilename[b]
Questo esempio visualizza la finestra di dialogo Apri con il filtro file impostato a file di testo. Se l'utente sceglie un nome di file, il codice visualizzerà quel nome file in una finestra di messaggio.
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If[/size]
dicono a Milano:
" .... è più facile metterglielo in c++o che metterglielo in testa"
Lucky Angus
10-07-2003, 23:30
Grazie "a2000" ... domani ci provo ! ;)
Comunque non ti inca**are ... mi dicevano che voi programmatori siete una brutta razza ! :D
Originally posted by "Lucky Angus"
mi dicevano che voi programmatori siete una brutta razza ! :D
No !!! E' a2000 la brutta razza... Noi programmatori siamo una bella razza ;)
"Noi programmatori ... " ????? http://forum.hwupgrade.it/faccine/44.gif
caro cionci tu scambi "cazzi per equinozi" !
http://forum.hwupgrade.it/faccine/46.gif
Originally posted by "a2000"
"Noi programmatori ... " ????? http://forum.hwupgrade.it/faccine/44.gif
Io mi considero "programmatore"...perchè sbaglio ?!?!?!
no, no ... è che anche misterx quando gli passa l'effetto del Serenase si considera un orologio a cucù ...
VALIUM TAVOR SERENASE
il valium mi rilassa
il serenase mi stende
il tavor mi riprende
c'è chi mi dà energia
e chi me la porta via
e voi cosa volete?
di che cosa vi fate?
dov'è la vostra pena?
qual'è il vostro problema?
perchè vi batte il cuore?
per chi vi batte il cuore?
meglio un medicinale
o una storia infernale?
meglio giornate inerti
o dei capelli verdi?
eppur tutto va bene
va proprio tutto bene
manca un po' di appetito e
il valium per dormire l'ho finito
"quando ci penso vorrei tornare
dalla mia bella al casolare
Emilia mia Emilia in fiore
tu sei la stella tu sei l'amore"
e voi cosa volete?
di che cosa vi fate?
dov'è la vostra pena?
qual'è il vostro problema?
perchè vi batte il cuore?
per chi vi batte il cuore?
Originariamente inviato da a2000
no, no ... è che anche misterx quando gli passa l'effetto del Serenase si considera un orologio a cucù ...
VALIUM TAVOR SERENASE
il valium mi rilassa
il serenase mi stende
:confused:
ce l'hai un pò del perditempo però :sofico:
:O io non sono un programmatore :mad:
Ciao Lucky Angus,
io ho il tuo stesso problema (quello che tu hai risolto circa 5 anni fa).
Puoi darmi indicazioni su come risolverlo?
Ti spiego:
ho capito che con
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
apro un file di testo
e con
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\testo_prova2.txt", _
Destination:=Range("$T$7"))
.Name = "testo_prova2_14"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
importo il file in una casella di testo.
Il problema è collegare le due azioni:
come faccio a dire all'"Add connection" che il file da aprire è quello inserito in "fileToOpen" e non è sempre "testo_prova2.txt"?
Grazie per il tuo aiuto.
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.