QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
同一台电脑运行,别人写的程序也没有专门写地址语句、文件保存类型,但是别人的宏能直接生成dxf文件。我写的程序结果保存在我的文档里,而且生成的是不带后缀的文件,手动加后缀或者写成Open "新建文本文档.dxf" For Output As #1。- d. z' P5 V6 A! y6 X
PS:生成的文件是没有问题的。结果老是存在我的文档里这个还没解决。
发表于 2020-1-30 09:03:11 | 显示全部楼层 来自: 中国北京
本帖最后由 woaishuijia 于 2020-1-31 04:24 编辑
: ^/ }* r% |8 {* ^& H2 N  g  v4 b! X( \) q& F! P
结合你另外一个帖子“”,我好像明白你的意思了。: b5 n* y: H8 g9 P
那个帖子里的Print #语句后面的文件号用的是1,这是有问题的。按照VB的语法规则,这个文件号是一个1~511的正整数,应该是由电脑自动生成。你这个直接使用1的情况,除非电脑只打开了一个文档,否则文件号1被其它文档占用,就出错了。只能先手动创建文档,再执行程序,我在那个帖子里的回复就是这样子的(那个回复为了简短,没有讨论编程技巧),为了保证程序顺利运行,要求先创建文档。7 w+ G' A- x$ F$ t1 N) f
把那个主程序和子程序的代码改一下  v  `4 c* e( \
  1. Dim FileNumber As Integer
    1 X- S  D& D% g) L
  2. * d  H; K6 e2 v1 g
  3. Sub A()+ K) {% h! _; M7 I0 R  A' K# Q
  4.     FileNumber = FreeFile()
    . Q9 U! e& J6 n/ D3 D* f4 Q
  5.     Open "c:\1.dxf" For Output As #FileNumber  F7 I/ w' g* s$ v- x9 F. ?4 }
  6.     Print #FileNumber, 0- }, G' s+ \- r' e
  7.     Print #FileNumber, "SECTION"
    6 ?' h2 y! _0 v( p# B, \$ ]
  8.     Print #FileNumber, 2
      l7 X  Q6 H8 s; a7 Z) W
  9.     Print #FileNumber, "ENTITIES"6 r) r+ B* D( w) K. X* m
  10.     Print #FileNumber, 0
    $ `, z& i# D, R; z7 _2 k7 o4 [
  11.     DxfLine 0, 0, 100, 100, 1, "Continuous") C0 W* J, W  N% s( h- A
  12.     Print #FileNumber, "ENDSEC"+ M. G) P' E+ K: }8 ^0 p
  13.     Print #FileNumber, 01 j. w' {+ [" j- x$ p
  14.     Print #FileNumber, "EOF"
    8 J( l: X, m$ o1 h* [: ~
  15.     Close #FileNumber
    9 w/ ^1 C' }+ r% L3 x
  16. End Sub' ?- A& E1 Y: t- L8 S: v$ x
  17. * z# V& Y# W: S( e  x' W* v( E
  18. Sub DxfLine(xs#, ys#, xe#, ye#, cl%, Optional Typ$)
    7 |+ C9 H6 z2 B
  19.     Print #FileNumber, "LINE"
    ! I' I% Y+ r% O# T
  20.     Print #FileNumber, 8
    * T; p( c  X, B0 |4 ]
  21.     Print #FileNumber, "0"/ a( ?/ j8 v; N) V3 a$ l
  22.     If Typ <> "" Then+ n8 s4 \; D" y& c* w4 l
  23.        Print #FileNumber, 6- L$ |! v- g2 z) @, n: G# u
  24.        Print #FileNumber, Typ+ l* h9 c- U9 X
  25.     End If
    5 S: K, g' T- u
  26.     Print #FileNumber, 62
    1 K1 M" K7 C) f
  27.     Print #FileNumber, cl' e8 Z1 n, w% K
  28.     Print #FileNumber, 10
    ) e4 ^, v' a* S6 V$ Z2 z- p
  29.     Print #FileNumber, xs# t6 P' I. `7 b; P' P( o
  30.     Print #FileNumber, 20
    7 ?( S2 d2 E2 t
  31.     Print #FileNumber, ys
    8 s6 }: Z4 M( a" D' [8 \
  32.     Print #FileNumber, 30
    , T1 G$ Y; ]5 ]& F/ Q
  33.     Print #FileNumber, 0#
    0 W5 V0 K/ n6 h( G" i! D6 s# H# a
  34.     Print #FileNumber, 11
    / [5 w4 m, ]+ Q0 H
  35.     Print #FileNumber, xe
    1 j, Y- Y6 ^0 g! v% v/ w  {) {
  36.     Print #FileNumber, 21
    8 A# f7 y* v0 @1 u
  37.     Print #FileNumber, ye
    ( i+ z0 B( u1 m3 r5 Z
  38.     Print #FileNumber, 314 F  V4 A- y1 y0 z
  39.     Print #FileNumber, 0#
    8 v' q; {, p+ X" k' q8 d
  40.     Print #FileNumber, 0
    % b" i! c& S  m# B3 q8 g
  41. End Sub
    4 v  s3 J4 T+ o+ W: E0 |& d
复制代码
代码中第一行是在通用声明区声明一个名为 FileNumber 的整型全局变量,用于保存文件号1 a0 v/ }& x  ]5 V2 I
第四行用 FreeFile 函数获得可用的文件号,后面的代码都使用这个文件号,包括子程序中的Print #语句,这也是使用全局变量的原因+ T+ w' c/ r; f% r+ T
第十八行,子程序的参数中的前四个都使用了显式类型声明字符“#”,表明这是Double 数据类型;第六个参数使用了Optional 关键字,表明这后面的参数是可选的:在调用子程序时,如果线形是“BYLAYER”,则不必带这个参数。如果不用这个关键字,在调用子程序时,就必须有这个参数,尽管它可能是空字符串。
, g0 h5 B' l; T! y0 J第二十、二十三、二十六、二十八、三十、三十二、三十四、三十六、三十八和四十行,都去掉了双引号和空格,这里没必要使用字符串类型,用整型就可以
1 ?% M1 D4 l* E8 t- _+ I+ ^0 P  [$ W. A第二十二、二十四行去掉了变量后面的显式类型声明字符“$”,没必要(已经在在第十八行的参数列表中声明了)。同理,第二十七行去掉了双引号及其内部空格及逗号,去掉了变量后面的显式类型声明字符“%”,没必要
- }% T' N" W% u* _5 s第三十三、三十九行把"0.00"改成了0#
9 C5 U& b+ P3 f8 J/ T去掉了原子程序中的
  1. Label:+ o) c* d$ Y* w2 D: V+ ]
  2.      Exit Sub
复制代码

评分

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

查看全部评分

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

本版积分规则

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

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

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