Condividi:        

Macro di importazione .txt - selezionare file

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

Macro di importazione .txt - selezionare file

Postdi Desperate_invoice » 01/10/18 14:52

Ciao a tutti,

questo forum mi ha salvato la vita in più occasioni senza saperlo, quindi prima di tutto ci tengo a scrivere un più che doveroso: GRAZIE INFINITO!
Mi ritrovo, ahimè a scrivere perchè ho un problema a cui non sono riuscita a trovare una soluzione da nessuna parte.

Ho creato una macro che mi consente di importare un file .txt dal desktop (che salvo sempre lì) e che, una volta lanciata, mi esegue le modifiche che richiede l'importazione guidata del file .txt in Excel (2010).
Ovviamente però, ogni volta che la lancio mi riapre sempre quel file, mentre io vorrei che mi proponesse una finestra di dialogo del File System nella quale io, di volta in volta, vado a dirgli quale file andarmi ad importare.

Di seguito la macro creata:

Sub TXT_ZISU()
'
' TXT_ZISU Macro
' Importazione file txt ZISU_BI_008
'

'
ChDir "C:\Users\nome.cognome\Desktop"
Workbooks.OpenText Filename:= _
"C:\Users\nome.cognome\Desktop\Prova_divina_28.09.2018.TXT", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1 _
), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 4), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 4), Array(15 _
, 4), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 4), Array(21, 4), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1)), _
TrailingMinusNumbers:=True
End Sub

Premetto che mi sono avvicinata al mondo delle macro da pochissimo e per me equivalgono alle scritture cuneiformi, e quindi sarà un problema da nulla ma le ho provate tutte e mi arrendo di fronte alla mia ignoranza.

Confido nel vostro aiuto.
:roll:
Desperate_invoice
Newbie
 
Post: 3
Iscritto il: 01/10/18 14:39

Sponsor
 

Re: Macro di importazione .txt - selezionare file

Postdi wallace&gromit » 01/10/18 15:42

Ciao e benvenuta nella parte attiva del forum,
prova questa macro (che tengo nella mia cassetta degli attrezzi), magari puoi adattarla alle tue esigenze:
Codice: Seleziona tutto
 Sub apriFile()
 With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = "C:\"
        .AllowMultiSelect = False
        .Title = "..Seleziona il file..."
        .ButtonName = "Seleziona"
        .InitialView = msoFileDialogViewProperties
        .InitialFileName = ""
        .Show
        If .SelectedItems.Count < 1 Then
            MsgBox "Nessuna selezione; aborted!"
            Exit Sub
        End If
        myFile = .SelectedItems(1)
        MsgBox myFile
    End With
 End Sub


P.S. la cassetta è mia ma è ovvio che gli attrezzi ce li ha infilati Anthony!
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Macro di importazione .txt - selezionare file

Postdi Desperate_invoice » 01/10/18 15:48

;) Che efficienza!
Anche io ho una macro simile per aprire la finestra di dialogo nel File System.

Sub ZISU_REPORT()
Dim strFile As String, strPath As String

' Prompt user to select a file
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = "E:prova*.xls*" 'ThisWorkbook.Path & "e*.xls*"
.Title = "Please Select a File"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then Exit Sub ' User clicked cancel: Exit
strFile = .SelectedItems(1)
End With
MsgBox strFile
End Sub


Ho anche provato in millemilaeuno modi di agganciarla alla macro che ho postato però non riesco mai a far funzionare il codice perchè trova sempre qualche errore.

Come posso fare per unirle correttamente, in modo tale da avere la macro boss che mi occorre? :?:
Desperate_invoice
Newbie
 
Post: 3
Iscritto il: 01/10/18 14:39

Re: Macro di importazione .txt - selezionare file

Postdi Anthony47 » 01/10/18 22:00

Prova modificando queste tre righe:
ChDir "C:\Users\nome.cognome\Desktop"
Workbooks.OpenText Filename:= _
"C:\Users\nome.cognome\Desktop\Prova_divina_28.09.2018.TXT", Origin:=xlWindows, _


in
Codice: Seleziona tutto
myFile = Application.GetOpenFilename("File di testo,*.txt")
If myFile = "Falso" Then
    MsgBox "Operazione annullata!", vbOKOnly + vbInformation
    GoTo Chiudi
End If
Workbooks.OpenText Filename:= myFile, Origin:=xlWindows, _
(seguono le altre righe del tuo codice)

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

Re: Macro di importazione .txt - selezionare file

Postdi Desperate_invoice » 02/10/18 08:13

E' SEMPLICEMENTE PERFETTA!!
GRAZIE GRAZIE GRAZIE da parte mia e di tutto l'ufficio!
:D :D :D :D :D :D :D :D
Desperate_invoice
Newbie
 
Post: 3
Iscritto il: 01/10/18 14:39

Re: Macro di importazione .txt - selezionare file

Postdi wallace&gromit » 03/10/18 20:49

Praticamente io dalla cassetta estraggo un cacciavite a stella e mi si dice che ce ne voleva uno piatto... va bene... mettiamo in cassetta anche questo.
Per curiosità, qualcuno mi spiega come funzionano tutti quegli "Array"?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Macro di importazione .txt - selezionare file

Postdi Anthony47 » 04/10/18 00:09

Application.GetOpenFilename consente l'apertura della finestra di dialogo "Apri file".
Application.Filedialog e' invece piu' sofisticato e consente varie operazioni.
Io ho preferito usare lo strumento piu' semplice; un po' come raccomandare di usare il cacciavite per svitare una vite, invece che il coltellino svizzero.

Quegli "Array sono il parametro FieldInfo dell'istruzione Workbooks.OpenText; come da help on-line:
Specifica una matrice contenente informazioni di analisi per singole colonne di dati. L'interpretazione dipende dal valore di DataType. Quando i dati sono delimitati, questo argomento è una matrice di matrici a due elementi, dove ogni matrice a due elementi specifica le opzioni di conversione per una particolare colonna. Il primo elemento corrisponde al numero della colonna (in base 1) e il secondo elemento è una delle costanti XlColumnDataType che indicano la modalità di analisi della colonna.


Sempre dall'help on line puoi vedere quali sono i possibili valori della "Costante enumerata XlColumnDataType"; tra i piu' comuni: 1=formato Generale, 2=Text, 4=Formato di data GMA

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


Torna a Applicazioni Office Windows


Topic correlati a "Macro di importazione .txt - selezionare file":


Chi c’è in linea

Visitano il forum: Nessuno e 134 ospiti