1

早上好,

我有一个宏,可以将目录中的所有文本文件导入工作簿。这一直运行良好,没有任何格式或相关问题。

我遇到了似乎自动格式化的文本文件并且遇到了麻烦。我试图让它与文本到列一起工作。

文本文件中的数据:

#
#
#
# CELL : RESULT
#
0:0
1:0
2:0
3:0
4:0
5:0
6:0
7:0
8:0
9:0
10:0
11:0
12:0
13:0
14:0
15:0
16:0
17:0
18:0
19:0
20:0
21:0
22:0
23:0
24:0
25:

导入后:

# CELL : RESULT
#
0:00
1:00
2:00
3:00
4:00
5:00
6:00
7:00
8:00
9:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
24:00:00

在文本到列之后:

#       
#       
#       
# CELL   RESULT 
#       
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 AM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
0:00    0   12:00 PM
1/1/1900  12    0   12:00 AM

复制和粘贴后,数据看起来很好。

我尝试将数据转换为一般或文本,但这会将数据转换为小数。我也试图修剪最后一个":*",但也失败了。

如果有人对正在发生的事情有任何指导,我将不胜感激。我用来导入文本文件的代码是:

Sub Import_Text_Files()

    Dim fPath   As String
    Dim fCSV    As String
    Dim wbCSV   As Workbook
    Dim wbMST   As Workbook

    Set wbMST = ThisWorkbook
    'this is to set the directory in which the text files are
    fPath = Sheets("Console").Cells(16, 12).Value

    'turn off screen updating for speed
    Application.ScreenUpdating = False

    'start the text file listing
    fCSV = Dir(fPath & "*.txt")
    On Error Resume Next
    Do While Len(fCSV)      0
        'open a CSV file
        Set wbCSV = Workbooks.Open(fPath & fCSV)
        'delete sheet if it exists
        wbMST.Sheets(ActiveSheet.Name).Delete
        'move new sheet into workbook
        ActiveSheet.Move After:=wbMST.Sheets(wbMST.Sheets.Count)
        'ready next CSV
        fCSV = Dir
    Loop

    Set wbCSV = Nothing

End Sub

很抱歉,我无法在此帐户上发布图像,因为我没有声誉并且多年未使用此站点。然而,我有他们。

4

1 回答 1

0

而不是Workbooks.Open你可以使用Workbooks.OpenText

如果您这样做,您可以将冒号指定为分隔符并在 Excel 有机会将其更改为您认为您可能喜欢的内容之前将其拆分(在这种情况下为时间)。

Workbooks.Open在文本文件上使用很少是一个好主意。

查看 VBA 帮助以获取有关 `Workbooks.OpenText 的更多信息

示例代码:

Workbooks.OpenText Filename:=fullPathofTextFile, _
    Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
    Comma:=False, Space:=False, Other:=True, OtherChar:=":", FieldInfo:= _
    Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True  

如果需要,您还可以使用Power Query(aka Get&Transform) 通过可以刷新的数据连接来完成相同的事情。

ADO如果文本文件是 UTF-8,注释中提到的选项特别有用。

于 2018-08-14T20:03:41.427 回答