QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
同一台电脑运行,别人写的程序也没有专门写地址语句、文件保存类型,但是别人的宏能直接生成dxf文件。我写的程序结果保存在我的文档里,而且生成的是不带后缀的文件,手动加后缀或者写成Open "新建文本文档.dxf" For Output As #1。. |% K5 g0 f% S* Y
PS:生成的文件是没有问题的。结果老是存在我的文档里这个还没解决。
发表于 2020-1-30 09:03:11 | 显示全部楼层 来自: 中国北京
本帖最后由 woaishuijia 于 2020-1-31 04:24 编辑 6 r( [; O9 d2 q/ S
8 k% y6 \) p( R, a
结合你另外一个帖子“”,我好像明白你的意思了。
, C' s5 A5 V; x5 C% \& I: z7 J那个帖子里的Print #语句后面的文件号用的是1,这是有问题的。按照VB的语法规则,这个文件号是一个1~511的正整数,应该是由电脑自动生成。你这个直接使用1的情况,除非电脑只打开了一个文档,否则文件号1被其它文档占用,就出错了。只能先手动创建文档,再执行程序,我在那个帖子里的回复就是这样子的(那个回复为了简短,没有讨论编程技巧),为了保证程序顺利运行,要求先创建文档。
) J- n: A( @0 U) |' w+ X把那个主程序和子程序的代码改一下. x( k5 e; |; ~1 B
  1. Dim FileNumber As Integer8 L" d& M9 \- x- m+ r3 F

  2. , X* d; ~+ k" k8 }( k& U
  3. Sub A()
    " a  ?: V9 A* k
  4.     FileNumber = FreeFile()
    ) m1 Y, ^. d4 Z1 n
  5.     Open "c:\1.dxf" For Output As #FileNumber
    2 A! b7 j) s" V0 Q$ W
  6.     Print #FileNumber, 0
    + e* d  T- v; K) ?( H0 c2 K
  7.     Print #FileNumber, "SECTION"( n" O! t. V5 O, C. e8 r% B
  8.     Print #FileNumber, 2! x0 y1 n$ s$ G0 l" ?  I0 d" y
  9.     Print #FileNumber, "ENTITIES"
    / U# e5 S9 Y( s6 C1 p6 C
  10.     Print #FileNumber, 0" _$ f* j' E& }4 s
  11.     DxfLine 0, 0, 100, 100, 1, "Continuous"
    8 {& y. l6 n% s& R, n  `
  12.     Print #FileNumber, "ENDSEC"% h; p( Q1 e0 P: Z
  13.     Print #FileNumber, 0) S6 X; }' @: E6 ~
  14.     Print #FileNumber, "EOF"
    ( V/ v0 X' `' z+ P& A3 `$ i
  15.     Close #FileNumber7 j, |" c+ u, m5 X- p) Z8 d
  16. End Sub7 o# U. `) `0 [" r1 n6 j

  17. 6 I" F) P+ ]) w
  18. Sub DxfLine(xs#, ys#, xe#, ye#, cl%, Optional Typ$)$ a/ O1 s- N! o. D. }2 c
  19.     Print #FileNumber, "LINE"
      T$ M7 Y/ k8 E; N( t# B7 Z
  20.     Print #FileNumber, 84 ^- H/ x  G; Z, f! N
  21.     Print #FileNumber, "0"+ |: i+ y4 M- B: Z
  22.     If Typ <> "" Then) w( W( V' O2 V" m- y% K2 z5 k
  23.        Print #FileNumber, 6
    6 \- y# P4 K/ t( H0 ?& A
  24.        Print #FileNumber, Typ1 A9 H6 Z( C- B
  25.     End If- y  \  }( O' t7 Y3 L  N! j& B! `8 r
  26.     Print #FileNumber, 62
    / M2 T& a% w# S' y# r- ^  O9 _# U2 K
  27.     Print #FileNumber, cl
    ( ^: S7 V$ P0 l3 ?. O. s
  28.     Print #FileNumber, 10
    & Q( Z4 u, H# ^4 N: X9 ^) p# u
  29.     Print #FileNumber, xs
    : u" Q) g& k' }
  30.     Print #FileNumber, 20" w% c1 x9 `2 i; W1 i# O% C
  31.     Print #FileNumber, ys4 A# m6 U0 Y' Z, H) l: `
  32.     Print #FileNumber, 304 p. g& W7 M6 f8 X/ o- w
  33.     Print #FileNumber, 0#
    % I8 C! ?' e7 s/ B$ {0 x
  34.     Print #FileNumber, 114 C6 L9 @  n2 T2 H
  35.     Print #FileNumber, xe
    ) r8 Q. p' T( H/ h
  36.     Print #FileNumber, 21
    ' Q- h  s; w' Q/ ~
  37.     Print #FileNumber, ye
    ' i7 g2 p! _/ J' {( R' o8 X
  38.     Print #FileNumber, 31
    ) l* N* @( C9 k6 j
  39.     Print #FileNumber, 0#
    ' A4 [8 o+ \+ S/ H. x! c9 y
  40.     Print #FileNumber, 0# n$ |1 u3 e1 T" m) d4 p  }1 R( }
  41. End Sub
    " w8 J1 J3 G' x
复制代码
代码中第一行是在通用声明区声明一个名为 FileNumber 的整型全局变量,用于保存文件号. p& f1 s4 Y! z
第四行用 FreeFile 函数获得可用的文件号,后面的代码都使用这个文件号,包括子程序中的Print #语句,这也是使用全局变量的原因1 K: w1 g5 W$ y; x7 R1 O
第十八行,子程序的参数中的前四个都使用了显式类型声明字符“#”,表明这是Double 数据类型;第六个参数使用了Optional 关键字,表明这后面的参数是可选的:在调用子程序时,如果线形是“BYLAYER”,则不必带这个参数。如果不用这个关键字,在调用子程序时,就必须有这个参数,尽管它可能是空字符串。. K1 `4 U' g$ q* x! ~5 E' c
第二十、二十三、二十六、二十八、三十、三十二、三十四、三十六、三十八和四十行,都去掉了双引号和空格,这里没必要使用字符串类型,用整型就可以
# X4 |" g5 l; f% G& N) J第二十二、二十四行去掉了变量后面的显式类型声明字符“$”,没必要(已经在在第十八行的参数列表中声明了)。同理,第二十七行去掉了双引号及其内部空格及逗号,去掉了变量后面的显式类型声明字符“%”,没必要( x$ L; e1 }. C/ `; _% m% L$ e
第三十三、三十九行把"0.00"改成了0## a. q1 S6 Z) e9 p
去掉了原子程序中的
  1. Label:0 y) P- a9 r- r
  2.      Exit Sub
复制代码

评分

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

查看全部评分

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

本版积分规则

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

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

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