我正在制作一个将DXF文件作为文本导出到工作表中,然后从中获取一些值的子程序。
我有两个问题:
->第一个是如何保持我在工作表中导出的值的格式?
->第二个是如何测试值的格式?
我要导出的文件中具有不同类型的值:
我想要的实际值(该类型由整数给出),写为xxx.xxxx(例如,“ 0.0000”,“ 50.0000”或120.0000,因此总是在点后4个零) 在文件中看起来像这样:
连续
10
50.0000
20
120.0000
30
0.0000
40
50.0000
50
0.0000
51
180.0000
62
5
0
所以我的问题是excel导出时不会保持我的值不变。如果它是50.0000,它将写入50,然后我就无法区分值的类型...我发现的所有解决方案都是将所有数据都以#.000格式获取,但这并不能解决我的问题。
这是我的潜艇:
Sub ImportDXF()
Dim fName As String
ActiveSheet.Columns(1).ClearContents
fName = Application.GetOpenFilename("DXF Files (*.dxf), *.dxf")
If fName = "False" Then Exit Sub
Dim v As Variant
Dim r As Long
r = 2 'from row 2
Open fName For Input As #1
Do While Not EOF(1)
Input #1, Line$
Rows(r).Columns(1) = Trim(Line$)
r = r + 1
Loop
Close #1
End Sub
然后我有另一个子程序,它将使用导出的值做一些事情,因此我想测试这是整数值还是浮点数。
答案 0 :(得分:1)
从输入DXF文件中读取每个值时,您必须测试每个值。然后,对具有该值的单元格应用适当的格式,以使其在电子表格中正确显示。
Sub ImportDXF()
Dim fName As String
ActiveSheet.Columns(1).ClearContents
fName = Application.GetOpenFilename("DXF Files (*.dxf), *.dxf")
If fName = "False" Then Exit Sub
Dim v As Variant
Dim r As Long
r = 2 'from row 2
Open fName For Input As #1
Do While Not EOF(1)
Input #1, Line$
If IsNumeric(Line$) Then
'--- we have a number, but what kind?
If InStr(1, Line$, ".", vbTextCompare) > 0 Then
'--- we have a VALUE, so format to show the decimals
Cells(r, 1).NumberFormat = "#0.0000"
Else
'--- we have a value ID, format with no decimals
Cells(r, 1).NumberFormat = "#0"
End If
Else
'--- we have text
Cells(r, 1).NumberFormat = "@"
End If
Cells(r, 1).Value = Trim(Line$)
r = r + 1
Loop
Close #1
End Sub