テキストファイルからExcelにデータを読み込む際に問題があります。 テキストファイルには約23万行あり、各行は正確に130文字です。私の目標は、ファイルをExcelに読み込み、必要なデータを取得しようとしている特定のデータを各行から取得することです。VBAはテキストファイルからExcelに大きなデータを読み込みます
まず、次のコードを使用しましたが、約7分かかります。時間がかかりすぎるので、私は他の方法を探して、私は次のようなものを見た
Sub leerTXT()
Dim strArchivo As String 'ruta del archivo
Dim intResultado As Integer 'resultado del dialogo
'---------- RUTA DEL ARCHIVO ----------
'Abrir dialog y preparar
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
intResultado = Application.FileDialog(msoFileDialogOpen).Show
'sólo si hay resultado positivo abrir fichero y leer
If intResultado <> 0 Then
strArchivo = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
On Error GoTo lblError:
Dim strFila As String 'filas que se van a leer
Dim iFila As Long 'numero de fila en la que se esta en el fichero
Dim jFila As Long 'numero de fila en el excel
'posicionarse en la fila 1
iFila = 1
jFila = 1
'abrir el archivo
Open strArchivo For Input As #1
'loop mientras no se ha llegado al final del archivo
Do Until EOF(1)
If iFila Mod 70 > 17 Then
'leer la fila actual
Line Input #1, strFila
'leer la linea y copiar a celda
Cells(jFila, 1) = strFila
jFila = jFila + 1
End If
'incrementar iFila en uno y pasar a la siguiente fila
iFila = iFila + 1
'loopear mientras condicion
Loop
End If
'cerrar el archivo
Close #1
lblError:
If Err.Number <> 0 Then
MsgBox (Err.Number)
MsgBox (Err.Description)
Err.Clear
'cerrar el archivo
Close #1
End If
End Sub
しかし、私が言ったように、:
Dim FSO As Object, MyFile As Object
Dim FileName As String, Arr As Variant
Dim f As Long
FileName = textfilename
Set FSO = CreateObject("Scripting.FileSystemObject")
Set MyFile = FSO.OpenTextFile(FileName, 1)
Arr = Split(MyFile.ReadAll, vbNewLine) ' Arr is zero-based array
Dim BigGuy(0 To UBound(Arr, 1), 1 To 1) As Long
Dim I As Long
For I = 0 To UBound(Arr)
BigGuy(I, 1) = I
Next
'For test
'Fill column A from this Array Arr
'UBound(Arr) + 1 Application.Transpose(
Range("A1:A500") = BigGuy
手がかりはそれを配列して貼り付け範囲を使用することであるようですより速くすることができますが、ファイルが転置するには長すぎるため、手動で転位する必要がありますが、UBound(Arr)
が機能せず、データのインポート方法がわかりません。
そして、すべての行の長さがまったく同じであるため、ファイルから特定の文字を(正確な位置に)検索する方法はありますか?
だけリマインダーにテキストの一部を抽出します。 –
管理者注:まだコメントを残すことはできません。正直なところ、VBAとExcelを使って大きなテキストファイルを処理することには大したことはありません。私は経験から話す。 Visual Studio Community 2017(無料)をダウンロードし、VBAと非常に似た構文を持つVB.NETで大きなテキストファイルを処理する方法を学ぶことをお勧めします。あなたは弦楽器メーカーや他の多くのものを使っていくらかの深刻なスピードを得ることができます。 –