Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CSV文本转换为VBA中的列_Vba_Excel_Csv - Fatal编程技术网

将CSV文本转换为VBA中的列

将CSV文本转换为VBA中的列,vba,excel,csv,Vba,Excel,Csv,我正在尝试拆分csv文件的元素(表),其中分隔符是管道字符:| 我通过excel使用了“文本到列”功能,它起了作用,然后我录制了宏并使用了它,但没有成功 列中的数据未对齐(例如:日期不在日期列中),就好像“将连续分隔符视为一个”选项处于活动状态,但代码中的“ConcertiveDelimiter”设置为False 这是我使用的代码: Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.TextTo

我正在尝试拆分csv文件的元素(表),其中分隔符是管道字符:
|

我通过excel使用了“文本到列”功能,它起了作用,然后我录制了宏并使用了它,但没有成功

列中的数据未对齐(例如:日期不在日期列中),就好像“将连续分隔符视为一个”选项处于活动状态,但代码中的“ConcertiveDelimiter”设置为False

这是我使用的代码:

Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
    :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
    1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
    , 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), _
    Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array( _
    25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), _
    Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array( _
    38, 1), Array(39, 1), Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1)), _
    TrailingMinusNumbers:=True
提前谢谢

编辑

下面是行的示例:

  • 第一个包含列字段
  • 第二个是输出(它只显示一个数据,然后显示所有空白单元格)
  • 第三行是包含所有数据的行(在csv中)
  • 第四个显示数据的显示方式(将Excel的文本添加到列)
XXX代码说明| HRAFVH |极限点|区域| jeis代码|验证

截击

截击,足球| GFV | U 4589 |不适用| 05


截击,足球“空白单元格”GFV_4589 N/A“空白单元格”05

我认为问题不在于上面的代码,而在于csv文件中数据的副本。事实上,数据被复制并粘贴到另一个excel文件中,然后启动“文本到列”宏。 要复制和粘贴,我使用以下代码:

Workbooks(n_o).Worksheets("CSV").Activate
Cells.Select
Selection.Copy
Workbooks(thisworkb).Worksheets("CSV_NEW").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
Workbooks(n_o).Close

事实上,在宏粘贴数据之后,如果我通过excel(手动)将文本粘贴到列中,结果也不正确

@Francesco:您可以尝试使用ADO文本文件将其读取为CSV文件,如中所示。我添加了一些CSV行和不同输出的示例。我尝试了您的宏,只要没有空行,它就对我有效。我对“日期不在日期栏”的评论感到困惑,因为我没有看到任何看起来像日期的东西。有没有缺行?日期是如何表示的?我写了“日期不在日期栏中”作为例子。不管怎样,我在帖子中写的部分输出不起作用,我只获得截击,其他什么都没有