1

我有这个代码:

子GravarArquivoCSV()开放范围(“E1”)。输出值为1图纸(“APR_CSV”)。激活范围(“A1”)。选择在ActiveCell时执行。文本<>“”打印#1,ActiveCell。值&“;”&单元格(ActiveCell.Row,2)。值&“;”&单元格(ActiveCell.Row,3)。值&“;”&单元格(ActiveCell.Row,4)。价值单元格(ActiveCell.Row+1,ActiveCell.Column)。选择循环消息框“Arquivo gerado com sucesso!”,vbInformation,“确定”关闭1表格(“压缩机自动线控制”)。激活末端接头

但所有信息在csv生成的输出中都没有左零:

预期用途:

62013227 001148160R 1 41563 M02-UL-9862013227 8200212598 2 42426 M25-BI-2662013227 0000066444 1 42490 C19-RA-6862013227 8200725845 1 43858 BJ1 0028 1148562013227 7701475837 1 43858 BJ1 0028 1148562013227 0000474796 1 43858 BJ1 0028 1148562013227 8200661217 2 43858 BJ1 0028 11485

CSV导出:没有所需的剩余零000

62013227 001148160R 1 41563 M02-UL-9862013227 8200212598 2 42426 M25-BI-2662013227 66444 1 42490 C19-RA-6862013227 8200725845 1 43858 BJ1 0028 1148562013227 7701475837 1 43858 BJ1 0028 1148562013227 474796 1 43858 BJ1 0028 1148562013227 8200661217 2 43858 BJ1 0028 11485

我怎么能有前导零?

5
  • 格式(单元格(ActiveCell.Row,2)。值,“0000000000”).
    – 比格本
    评论 2019年6月14日20:01
  • 但csv的第一行的长度中包含了所需的零,在第二行之后,vba代码似乎删除了零! 评论 2019年6月14日20:04
  • 您导出时使用“;”作为分隔符,但您的示例显示为空白。是直接在CSV文件中遗漏了前导零,还是仅在使用Excel重新打开CSV后遗漏?
    – 阿斯格
    评论 2019年6月15日10:55
  • 在excel中打开的csv中缺少前导零,但在导出到csv之前,原始文件作为前导零。第一行可以看到前导零;但从第二行开始,错误就存在了! 评论 2019年6月16日21:23
  • 在记事本中打开=All OK 62013227;001148160R;1;41563 M02-UL-98 62013227;8200212598;2;42426 M25-BI-26 62013227;0000066444;1;42490 C19-RA-68 62013227;8200725845;1;43858 BJ1 0028 11485 62013227;7701475837;1;43858 BJ1 0028 11485 62013227;0000474796;1;43858 BJ1 0028 11485 62013227;8200661217;2;43858 BJ1 0028 11485通过excel在csv中打开=第二行没有前导零! 评论 2019年6月16日21:26

1答案1

重置为默认值
2

导出

如果需要前导零,那么格式应该会有所帮助。

你也应该避免选择或激活任何内容.
因此,我使用变量“I”作为所有行的循环。

由于文件号1可能已在使用中,因此最好使用自由文件.

子GravarArquivoCSV()将fileNum分为长调暗i为长fileNum=自由文件开放范围(“E1”)。输出为fileNum的值带图纸(“APR_CSV”)i=1一边做。单元格(i,“A”)。文本<>“”打印#FileNum。单元格(i,“A”)。价值&“;”&_格式(.Cells(i,“B”)。值,“0000000000”)&“;”&_.单元格(i,“C”)。价值&“;”&_.单元格(i,“D”)。价值i=i+1循环以结尾关闭fileNum消息框“Arquivo gerado com sucesso!”,vbInformation,“确定”板材(“自动线控制压缩机”)。激活结束Sub

导入

将此CSV导入Excel时,Excel会将数字识别为数字。
因此,您有两种选择:

  • 将其保留为数字,并为其提供自定义的数字格式,
    例如,“0000000000”显示以零开头的数字
  • 按照VBA代码将其作为文本字符串导入

请根据您的需要调整文件路径和文件名。

公共子导入CSV()将wb分帐为工作簿设置wb=应用程序。工作簿。添加带wb。工作表(1)。查询表。添加(_连接:=“TEXT;”和应用程序。默认文件路径&“\APR_CSV.CSV”_目的地:=wb。工作表(1)。范围(“A1”).Name=“APR_CSV”.FieldNames=假.RowNumbers=假.FillAdjacentFormulas=假.PreserveFormatting=True.RefreshOnFileOpen=假.RefreshStyle=XlCellInsertionMode.xlInsert删除单元格.SavePassword=False.SaveData=True.AdjustColumnWidth=True.RefreshPeriod=0.TextFilePromptOnRefresh=假.TextFilePlatform=XlPlatform.xlWindows.TextFileStartRow=1.TextFileParseType=XlTextParsingType.xl带分隔符.TextFileTextQualifier=XlTextQualifer.xlTextQua莉fierNone.TextFileConsecutiveDelimiter=假.TextFileTabDelimiter=假.TextFileSemicolonDelimiter=真.TextFileCommaDelimiter=假.TextFileSpaceDelimiter=假.TextFileColumnDataTypes=数组(_xl列数据类型.xl常规格式_Xl列数据类型.xl文本格式_Xl列数据类型.xl通用格式_XlColumnDataType.xlTextFormat).TextFileDecimalSeparator=“。”.TextFileThousandsSeparator=“,”.TextFileTrailingMinusNumbers=真.刷新背景查询:=False.删除以结尾结束Sub

Excel文件的路径

请使用动态工作簿,它是当前活动的文件,或工作簿,这是包含VBA代码的文件。如果包含VBA代码的文件也是活动文件,则它们是相同的。

使用其路径,添加反斜杠“\”并添加所需的CSV文件名(例如“APR CSV Renault.CSV”)。

试验他的:

私有子调试MyPaths'始终使用此VBA代码的文件:调试。打印本工作簿。路径&“\”&本工作簿。姓名调试。打印本工作簿。全名'始终激活Excel文件:调试。打印ActiveWorkbook。路径&“\”&ActiveWorkbook。姓名调试。打印ActiveWorkbook。全名结束Sub
7
  • 谢谢,但不总是相同长度的参考(0000000000),你能帮我吗,我是VBA新手。结果是一样的,只有第一行作为前导零!!6201327 001148160R 1 41563 M02-UL-98 62013227 8200212598 2 42426 M25-BI-26 62013226 66444 1 42490 C19-RA-68 62013227-8200725845 1 43858 BJ1 0028 11485 6201327701475837 1 43858BJ1 028 11485 162013227 474796 1 43858-BJ1 00485 62012327 8200661217 2 43858B J1 002811485 评论 2019年6月16日21:20
  • 在记事本中打开=All OK 62013227;001148160R;1;41563 M02-UL-98 62013227;8200212598;2;42426 M25-BI-26 62013227;0000066444;1;42490 C19-RA-68 62013227;8200725845;1;43858 BJ1 0028 11485 62013227;7701475837;1;43858 BJ1 0028 11485 62013227;0000474796;1;43858 BJ1 0028 11485 62013227;8200661217;2;43858 BJ1 0028 11485通过excel在csv中打开=第二行没有前导零! 评论 2019年6月16日21:28
  • 我在excel中有这个vba代码,但我需要做一些更改,以便任何人都可以使用该文件,在这种情况下,vba代码仅用于我的文件夹/PC。FileNum=FreeFile Open Range(“E1”)。输出为fileNum的值其中:单元格E1包含c:\users\xx\xx\APR CSV雷诺。CSV我如何使用vba代码将.CSV输出到与PC中的此文件相同的.xls文件路径? 评论 2019年7月4日13:35
  • 1
    打开ActiveWorkbook。输出为FileNum的路径&“\Whatever.csv”
    – 阿斯格
    评论 2019年7月4日21:00
  • 1
    然后,只需替换所有内容,就可以得到一个以tab分隔的文本文件";"通过信道(9)。这与文件扩展名无关,文件扩展名可能是.csv oder.txt。
    – 阿斯格
    评论 2021年3月24日10:38

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.