QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 5227|回复: 1
收起左侧

[求助] 请教件事,Open "新建文本文档" For Output As #1成果输出位置怎么固定?

[复制链接]
发表于 2020-1-23 23:02:26 | 显示全部楼层 |阅读模式 来自: 中国江苏镇江
安装
主题分类用于问题归类:

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
同一台电脑运行,别人写的程序也没有专门写地址语句、文件保存类型,但是别人的宏能直接生成dxf文件。我写的程序结果保存在我的文档里,而且生成的是不带后缀的文件,手动加后缀或者写成Open "新建文本文档.dxf" For Output As #1。
0 L5 k7 P1 T* YPS:生成的文件是没有问题的。结果老是存在我的文档里这个还没解决。
发表于 2020-1-30 09:03:11 | 显示全部楼层 来自: 中国北京
本帖最后由 woaishuijia 于 2020-1-31 04:24 编辑
. J4 D& o1 Q1 v0 K& l  K5 I: @2 b, C# a) M5 }
结合你另外一个帖子“”,我好像明白你的意思了。9 f% |: ]. h" _1 M( o; }, {
那个帖子里的Print #语句后面的文件号用的是1,这是有问题的。按照VB的语法规则,这个文件号是一个1~511的正整数,应该是由电脑自动生成。你这个直接使用1的情况,除非电脑只打开了一个文档,否则文件号1被其它文档占用,就出错了。只能先手动创建文档,再执行程序,我在那个帖子里的回复就是这样子的(那个回复为了简短,没有讨论编程技巧),为了保证程序顺利运行,要求先创建文档。. U& i) r# b; N
把那个主程序和子程序的代码改一下  u+ X$ Q! u  `% {; c. f, }$ h
  1. Dim FileNumber As Integer
    . O: e9 K/ N% N$ B
  2. 8 z( l! v, X. |" ]: f; S
  3. Sub A()9 u' r9 s1 h$ y! ~. G  s. `+ Q
  4.     FileNumber = FreeFile()4 W/ v9 B/ ^1 R. w# J& `
  5.     Open "c:\1.dxf" For Output As #FileNumber
    , [: _! f2 s, E9 Z! l
  6.     Print #FileNumber, 0$ y3 M2 U2 n; r/ n3 V1 M% W- ~) _
  7.     Print #FileNumber, "SECTION"' i' N% ?- u% M* y& s/ _
  8.     Print #FileNumber, 2- _$ A1 C- I$ X/ g2 z. w  t% P2 i
  9.     Print #FileNumber, "ENTITIES"0 t  j5 S0 A! w( Z) d
  10.     Print #FileNumber, 0
    " A, a( x; N7 ~
  11.     DxfLine 0, 0, 100, 100, 1, "Continuous"- E- u% P6 w6 K6 E* I+ l+ e# t
  12.     Print #FileNumber, "ENDSEC"
    ! |* e) _" C& j+ ?
  13.     Print #FileNumber, 0
    ; q: H" {& k9 V1 n& s4 S/ @
  14.     Print #FileNumber, "EOF"4 L9 C2 |$ f  e
  15.     Close #FileNumber  B7 q6 [$ q* ]/ [7 K4 i$ F
  16. End Sub
    # g9 F: C! M0 I! \4 K
  17. 7 I7 I+ W6 ^8 n  m. o8 j
  18. Sub DxfLine(xs#, ys#, xe#, ye#, cl%, Optional Typ$)
    : O7 ]. Q9 b- L! G, @- n
  19.     Print #FileNumber, "LINE") V+ ^4 G5 z* V
  20.     Print #FileNumber, 8# P( q9 Y1 _( ~! w
  21.     Print #FileNumber, "0"
      l+ d  B% y; ?" y. h" F
  22.     If Typ <> "" Then
    * q+ w$ h% i+ y& C( v' N
  23.        Print #FileNumber, 6
    , M) `: c! C; t
  24.        Print #FileNumber, Typ
    & o& \3 I$ z1 E
  25.     End If- @: f, k4 L% x; c2 x
  26.     Print #FileNumber, 62
    3 w* B" t! x0 X! M* n( `
  27.     Print #FileNumber, cl) d7 l: I8 A9 {+ n4 j
  28.     Print #FileNumber, 10
    ( o- Z/ P6 `) k) C
  29.     Print #FileNumber, xs- Z/ W( Q: X+ d6 Z. w) F% i
  30.     Print #FileNumber, 20
    % ]+ n6 w7 W: {- N6 l9 _
  31.     Print #FileNumber, ys
    / F" w& }+ |  _; W3 D9 }) U
  32.     Print #FileNumber, 300 a! K6 ^; {5 C% G+ Z) q
  33.     Print #FileNumber, 0#
      \( s3 C: Y5 h- a, m
  34.     Print #FileNumber, 111 h  f, S2 {; q7 A
  35.     Print #FileNumber, xe5 I) ]5 }! O# U. A; f4 x
  36.     Print #FileNumber, 21. M, f. `3 ~) a( K, N
  37.     Print #FileNumber, ye
    $ W( U& g( V' w# R
  38.     Print #FileNumber, 31
    1 t4 N$ o7 f  v* k# r
  39.     Print #FileNumber, 0#; R7 l) @8 K& P, r, r& ~
  40.     Print #FileNumber, 02 c, M; [1 x7 a" U% N* V4 X
  41. End Sub
    ' Y* ^0 R+ u+ j6 _
复制代码
代码中第一行是在通用声明区声明一个名为 FileNumber 的整型全局变量,用于保存文件号
4 y4 i% Z+ i! o4 ?- ^( n: T第四行用 FreeFile 函数获得可用的文件号,后面的代码都使用这个文件号,包括子程序中的Print #语句,这也是使用全局变量的原因, N' O( Z5 D/ r
第十八行,子程序的参数中的前四个都使用了显式类型声明字符“#”,表明这是Double 数据类型;第六个参数使用了Optional 关键字,表明这后面的参数是可选的:在调用子程序时,如果线形是“BYLAYER”,则不必带这个参数。如果不用这个关键字,在调用子程序时,就必须有这个参数,尽管它可能是空字符串。& V% U1 l# w8 y- y6 f5 f
第二十、二十三、二十六、二十八、三十、三十二、三十四、三十六、三十八和四十行,都去掉了双引号和空格,这里没必要使用字符串类型,用整型就可以
; r5 D  t! Y7 ?2 u; p% s6 k4 o第二十二、二十四行去掉了变量后面的显式类型声明字符“$”,没必要(已经在在第十八行的参数列表中声明了)。同理,第二十七行去掉了双引号及其内部空格及逗号,去掉了变量后面的显式类型声明字符“%”,没必要! ~+ Z5 S# S3 q" `' L( B% @
第三十三、三十九行把"0.00"改成了0#
% r1 S( X  j' O$ U4 Y去掉了原子程序中的
  1. Label:6 Z) F% z) |& }
  2.      Exit Sub
复制代码

评分

参与人数 1三维币 +20 收起 理由
kuangben8 + 20 感谢您解答了求助的问题。

查看全部评分

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表