【发布时间】:2017-10-21 08:06:19
【问题描述】:
我正在使用here 中的这段代码将 excel 转换为 csv 文件。它运行良好(感谢 Nat)。
现在我面临一个问题:因为我想从这个文件中读取以填写 Autocad 表,我需要将 csv 数字格式设置为“文本”格式(现在它是“常规”格式,这通常发生在它以excel打开)。当我导入我的 csv 数据时,它会省略前导零单元格并将 1:100 更改为 0.01。
当我用 excel 打开 csv 文件并将这些单元格格式更改为“文本”,然后保存并关闭文件时,它工作正常。由于我不希望每个用户手动执行此操作,我如何才能自动执行此过程(或首先以文本格式保存)。
谢谢
Private Sub Exporttocsv()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum
SheetValues = Sheets("Current Revision").Range("B2:CV98").value
Dim RowMax
RowMax = UBound(SheetValues)
Dim ColMax
ColMax = 99
ReDim LineValues(1 To RowMax)
For ColNum = 1 To ColMax
For RowNum = 1 To RowMax
LineValues(RowNum) = SheetValues(RowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
【问题讨论】:
-
可能简单地将
SheetValues = Sheets("Current Revision").Range("B2:CV98").value更改为SheetValues = Sheets("Current Revision").Range("B2:CV98").Text即可达到您想要的效果。 -
另外,为了检查
csv文件的外观,您需要以Notepad之类的方式打开它。如果您只是在 Excel 中open文件,可能会有一些不需要的转换。 -
我不明白到底是什么问题。您实际上是在将 csv 导入 AutoCAD 吗? AutoCAD是否因为缺少前导零而抱怨,并且比率(例如1:100)正在转换为小数(0.01)?还是 AutoCAD 抱怨是因为 前导零和比率?还有,最后一段,你的意思是如果你在Excel中打开csv文件,保存,然后在AutoCAD中导入,AutoCAD不会报错吗?
-
robinCTS,我实际上正在将 csv 导入 AutoCAD,并且比率(例如 1:100)正在转换为小数(0.01)并且前导零(例如 002)转换为 2。没有抱怨 feom AutoCAD。如果我在 Excel 中打开 csv 文件,保存它,然后在 AutoCAD 中导入它,是的,它工作正常。或者,要调整主代码,我需要一个宏来打开 csv 并将单元格的格式更改为 Text 并覆盖并保存它。希望这是有道理的。谢谢
-
我也尝试在我的主 excel 文件中将它们更改为 "=""01:100""" 或 "="1:100" 但是当将 excel 转换为 csv 时,它们是原始文件(即 csv 中的 "=""01:100""")。当我使用 excel 打开 csv 时,单元格显示 1:100 但使用记事本(或查看 csv 的正确方法)它们不正确。