weixin7944 发表于 2006-6-18 18:39:00

关于EXCEL导出数据至TXT文件时产生的问题

<P>最近用VBA编了一个程序,来实现将EXCEL中的数据导出至TXT文件中。程序如下:</P>
<P>Sub Macro1()<BR>fno = FreeFile<BR>Open "c:\File.txt" For Output As #fno<BR>Print #fno, "("; "NUM"; " "; "ITEMA"; " "; "ITEMB"; " "; "ITEMC"; " "; "ITEMD"; ")"<BR>Dim n As Integer<BR>n = 6</P>
<P>Do Until Cells(n, 2) = ""<BR>Print #fno, "("; Cells(n, 2).Value; Cells(n, 3).Value; " "; Cells(n, 4).Value; Cells(n, 14).Value; " "; Cells(n, 44).Value; ")"<BR>n = n + 1<BR>Loop<BR>Close #fno<BR>' Macro1 Macro<BR>' 宏由 light 录制,时间: 2006-6-17<BR>'</P>
<P>'<BR>End Sub<BR>在执行了程序之后,C:\FILE.TXT文件中产生这样的结果:</P>
<P>(NUM ITEMA ITEMB ITEMC ITEMD)<BR>( 1 OPAC1-1-1A&nbsp; .74 三相 EB)<BR>( 2 OPAC1-1-1B&nbsp; .74 三相 EB)<BR>( 3 OPAC1-1-2A&nbsp; 1.1 三相 EB)<BR>( 4 OPAC1-1-2B&nbsp; 1.1 三相 EB)<BR>( 5 OPAC1-1-3A&nbsp; .74 三相 EB)<BR>( 6 OPAC1-1-3B&nbsp; .74 三相 EB)<BR>( 7 SFJ1-1-1&nbsp; .55 三相 F)<BR>( 8 EFJ1-1-1&nbsp; .55 三相 F)<BR>( 9 SFJ1-1-2A&nbsp; .55 三相 F)<BR>( 10 SFJ1-1-2B&nbsp; .55 三相 F)<BR>( 11 EFJ1-1-2A&nbsp; .55 三相 F)<BR>( 12 EFJ1-1-2B&nbsp; .55 三相 F)<BR>( 13 EF1-1-2A&nbsp; .37 三相 F)<BR>( 14 EF1-1-1&nbsp; .37 三相 F)<BR>( 15 EF1-1-2B&nbsp; .37 三相 F)<BR>( 16 SFJ1-1-2C&nbsp; .55 三相 F)<BR>( 17 EFJ1-1-2C&nbsp; .55 三相 F)<BR>( 18 EF1-1-3&nbsp; .37 三相 F)<BR>( 19 EFJ1-1-3&nbsp; .55 三相 F)<BR>( 20 SFJ1-1-3&nbsp; .55 三相 F)<BR>( 21 备用 三相 EB)<BR>( 22 备用 三相 EB)<BR>( 23 备用 三相 EB)</P>
<P>其它正常,只是小于1的小数前的0不见了。如原EXCEL中的0.37和0.55,输出至TXT文件时变成了.37和.55,为什么?还顺便问一下,怎样将EXCEL单元格中的值加双引号输出至TXT文件?谢谢!</P>

68651521 发表于 2006-6-18 21:24:00

<P>1.Cells(n, 4).Value 改成 Format(Cells(n, 4).Value ,&nbsp;"#0.00")</P>
<P>2.双引号 Chr(34)</P>
<P>&nbsp;</P>

68651521 发表于 2006-6-18 21:27:00

<P>顺便说一句 Excel可以直接另存为TXT文件 不用写VBA,除非格式上有特殊条件要求</P>

weixin7944 发表于 2006-6-20 07:54:00

谢谢!确实有格式要求!按照您的方法改动程序后,已经可以实现小于1的小数的输出,但是在EXCEL中输入已经出线问题,如想输入1,就必须输入1.0,否则直接就转换成0.001。

68651521 发表于 2006-6-20 09:54:00

<P>在EXCEL里 设置一下单元格格式 把小数位数定在4位</P>
<P>就不会出现输1变0.001了</P>
页: [1]
查看完整版本: 关于EXCEL导出数据至TXT文件时产生的问题