使用 Tab 作为分隔符并在空行开始一个新的工作表
Use Tab as delimiter and at a empty line start a new worksheet
我有一个脚本可以将文本文件导入 Excel。
目标是用Tab作为分隔符,在空行处,开始新的工作sheet。
问题 目前脚本为每一行开始一个新的 sheet。
我是否需要使用不同的方式来解释空行?其他解释和处理 sheet 成功更改的尝试,在导入时从数据中删除空格,然后分隔符无效。
Public Sub ImportTextFile(FName As String, Sep As String)
Dim RowNdx As Long
Dim ColNdx As Integer
Dim TempVal As Variant
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Integer
Dim SaveColNdx As Integer
Dim WS As Worksheet
Dim SheetNumber As Long
Const C_START_SHEET_NAME = "Sheet1"
SheetNumber = 1
RowNdx = C_START_ROW_FIRST_PAGE
Set WS = ActiveWorkbook.Worksheets(C_START_SHEET_NAME)
Application.ScreenUpdating = False
SaveColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row
Open FName For Input Access Read As #1
While Not EOF(1)
Line Input #1, WholeLine
'This section added to create new sheets for empty lines
If InputLine = "" Then
SheetNumber = SheetNumber + 1
Set WS = ActiveWorkbook.Worksheets.Add(after:=WS)
RowNdx = 1
End If
If Right(WholeLine, 1) <> Sep Then
WholeLine = WholeLine & Sep
End If
ColNdx = SaveColNdx
Pos = 1
NextPos = InStr(Pos, WholeLine, Sep)
While NextPos >= 1
TempVal = Mid(WholeLine, Pos, NextPos - Pos)
Cells(RowNdx, ColNdx).Value = TempVal
Pos = NextPos + 1
ColNdx = ColNdx + 1
NextPos = InStr(Pos, WholeLine, Sep)
Wend
RowNdx = RowNdx + 1
SheetNumber = SheetNumber + 1
Wend
EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
Close #1
End Sub
您正在阅读WholeLine
,然后测试InputLine
添加 Option Explicit
会捕获这样的东西。
我有一个脚本可以将文本文件导入 Excel。
目标是用Tab作为分隔符,在空行处,开始新的工作sheet。
问题 目前脚本为每一行开始一个新的 sheet。
我是否需要使用不同的方式来解释空行?其他解释和处理 sheet 成功更改的尝试,在导入时从数据中删除空格,然后分隔符无效。
Public Sub ImportTextFile(FName As String, Sep As String)
Dim RowNdx As Long
Dim ColNdx As Integer
Dim TempVal As Variant
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Integer
Dim SaveColNdx As Integer
Dim WS As Worksheet
Dim SheetNumber As Long
Const C_START_SHEET_NAME = "Sheet1"
SheetNumber = 1
RowNdx = C_START_ROW_FIRST_PAGE
Set WS = ActiveWorkbook.Worksheets(C_START_SHEET_NAME)
Application.ScreenUpdating = False
SaveColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row
Open FName For Input Access Read As #1
While Not EOF(1)
Line Input #1, WholeLine
'This section added to create new sheets for empty lines
If InputLine = "" Then
SheetNumber = SheetNumber + 1
Set WS = ActiveWorkbook.Worksheets.Add(after:=WS)
RowNdx = 1
End If
If Right(WholeLine, 1) <> Sep Then
WholeLine = WholeLine & Sep
End If
ColNdx = SaveColNdx
Pos = 1
NextPos = InStr(Pos, WholeLine, Sep)
While NextPos >= 1
TempVal = Mid(WholeLine, Pos, NextPos - Pos)
Cells(RowNdx, ColNdx).Value = TempVal
Pos = NextPos + 1
ColNdx = ColNdx + 1
NextPos = InStr(Pos, WholeLine, Sep)
Wend
RowNdx = RowNdx + 1
SheetNumber = SheetNumber + 1
Wend
EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
Close #1
End Sub
您正在阅读WholeLine
,然后测试InputLine
添加 Option Explicit
会捕获这样的东西。