Istnieje wiele sposobów importowania pliku tekstowego do bieżącego arkusza. Oto trzy (w tym metodę używanego powyżej)
- Używanie QueryTable
- Otwórz plik tekstowy w pamięci, a następnie napisać do bieżącego arkusza i wreszcie stosowanie Tekst jako kolumny w razie potrzeby.
- Jeśli chcesz użyć metody, które są aktualnie używanego następnie po otwarciu pliku tekstowego w nowym skoroszycie, wystarczy skopiować go do bieżącego arkusza z wykorzystaniem
Cells.Copy
Korzystanie z QueryTable
Oto proste makro, które nagrałem. Zmodyfikuj go zgodnie ze swoimi potrzebami.
Sub Sample()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Sample.txt", Destination:=Range("$A$1") _
)
.Name = "Sample"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Otwórz plik tekstowy w pamięci
Sub Sample()
Dim MyData As String, strData() As String
Open "C:\Sample.txt" For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
Close #1
strData() = Split(MyData, vbCrLf)
End Sub
Gdy masz dane w tablicy można wyeksportować go do bieżącego arkusza.
Stosując metodę, która już używasz
Sub Sample()
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet
Set wbI = ThisWorkbook
Set wsI = wbI.Sheets("Sheet1") '<~~ Sheet where you want to import
Set wbO = Workbooks.Open("C:\Sample.txt")
wbO.Sheets(1).Cells.Copy wsI.Cells
wbO.Close SaveChanges:=False
End Sub
nawiązanie
Można użyć Application.GetOpenFilename
wybrać odpowiedni plik. Na przykład ...
Sub Sample()
Dim Ret
Ret = Application.GetOpenFilename("Prn Files (*.prn), *.prn")
If Ret <> False Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Ret, Destination:=Range("$A$1"))
'~~> Rest of the code
End With
End If
End Sub
wyglądać metody QueryTable jest najbardziej proste, ale czy jest jakiś sposób, aby dodać okno dialogowe do niego więc będę mieć możliwość wyboru plików tekstowych z różnych źródeł? –
Tak. W jednej chwili ... aktualizacja wpisu –
Zaktualizowano wpis :) Zobacz 'FOLLOWUP' –