Привет, я новичок в VBA и в настоящее время работаю над проектом, в котором мне нужно прочитать много файлов (выбрать их с помощью мыши) и поместить данные, которые смещены пробелом, в лист exel в моей текущей книге (но на конец моих листов, потому что у меня уже есть листы, которые должны оставаться в начале) Я использую.
Я нашел код, который почти делает то, что мне нужно, но:
- Этот код не может открыть все файлы, потому что имя файла содержит более 30 букв.
текстовый файл выглядит так: «name1_name2_name3_name4_name5_name6.txt», если возможно найти определенное имя, например name1,3,4, достаточно, чтобы узнать, какой это файл. Я спрашиваю потому что
Я должен объединить несколько файлов в один лист, если имя1 имя2 совмещено.
- он открывает нужную книгу вместо того, чтобы поместить новые листы в мою текущую книгу
Код например
Sub ReadText()
Dim xFilesToOpen As Variant
Dim I As Integer
Dim xWb As Workbook
Dim xTempWb As Workbook
Dim xDelimiter As String
Dim xScreen As Boolean
On Error GoTo ErrHandler
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
xDelimiter = "|"
xFilesToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Error", , True)
'falls nichts ausgewählt abbrechen
If TypeName(xFilesToOpen) = "Boolean" Then
MsgBox "No files were selected", , "Error"
GoTo ExitHandler
End If
''''''''''''''''''''''''
'nächste Code Schritte
I = 1
Set xTempWb = Workbooks.Open(xFilesToOpen(I))
xTempWb.Sheets(1).Copy
Set xWb = Application.ActiveWorkbook
xTempWb.Close False
xWb.Worksheets(I).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, _
Comma:=False, Space:=False, _
Other:=True, OtherChar:="|"
Do While I < UBound(xFilesToOpen)
I = I + 1
Set xTempWb = Workbooks.Open(xFilesToOpen(I))
With xWb
xTempWb.Sheets(1).Move after:=.Sheets(.Sheets.Count)
.Worksheets(I).Columns("A:A").TextToColumns _
Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, _
Comma:=False, Space:=False, _
Other:=True, OtherChar:=xDelimiter
End With
Loop
''''''''''''''''''
'Falls keine File ausgewählt springt er hier her
ExitHandler:
Application.ScreenUpdating = xScreen
Set xWb = Nothing
Set xTempWb = Nothing
Exit Sub
ErrHandler:
MsgBox Err.Description, , "Error"
Resume ExitHandler
End sub
Есть ли кто-нибудь, кто может помочь мне решить эту проблему с помощью этого кода? Или есть более простой способ программирования, что мне нужно