La procedura seguente può essere utilizzata per ottenere un recordset ADO da un file di testo e inserire il risultato in un foglio di lavoro.
Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range) ' esempio: GetTextFileData "SELECT * FROM filename.txt", _ "C:\FolderName", Range("A3") ' esempio: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", _ "C:\FolderName", Range("A3") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer If rngTargetCell non è nulla Quindi esci dal sottoinsieme cn = Nuovo ADODB.Connection On Error Riprendi Avanti cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _ "Dbq=" & strFolder & ";" & _ "Estensioni=asc,csv,tab,txt;" On Error GoTo 0 Se cn.State adStateOpen Then Exit Sub Set rs = New ADODB.Recordset On Error Resume Next rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText On Error GoTo 0 If rs.State adStateOpen Then cn.Close Set cn = Nothing Exit Sub End If ' le intestazioni del campo For f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset(0, f).Formula = rs.Fields(f).Name Next f rngTargetCell.Offset(1, 0 ).CopyFromRecordset rs ' funziona in Excel 2000 o successivo 'RS2WS rs, rngTargetCell ' funziona in Excel 97 o precedente rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
La procedura può essere utilizzata in questo modo:
Sub TestGetTextFileData() Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C:\FolderName", Range("A3") ' GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria' ", _ "C:\FolderName", Range("A3") Colonne("A:IV").AutoFit ActiveWorkbook.Saved = True End Sub
Sostituisci filename.txt con il nome del file di testo da cui vuoi ottenere i dati.
Sostituisci C:\FolderName con il nome della cartella in cui è salvato il file di testo.
La prima riga nel file di testo verrà utilizzata come intestazioni di colonna/nomi di campi.
Ogni colonna con datwa deve essere separata con il carattere separatore di elenco utilizzato nella regione
impostazioni nel Pannello di controllo. In Norvegia di solito è un punto e virgola (;), in altri paesi può essere una virgola (,).
Troverai la procedura RS2WS cliccando su questo link.
L'esempio di macro presuppone che il progetto VBA abbia aggiunto un riferimento alla libreria di oggetti ADO.
Puoi farlo dall'interno del VBE selezionando il menu Strumenti, Riferimenti e selezionando Microsoft
Oggetti dati ActiveX x.x libreria di oggetti.