QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
同一台电脑运行,别人写的程序也没有专门写地址语句、文件保存类型,但是别人的宏能直接生成dxf文件。我写的程序结果保存在我的文档里,而且生成的是不带后缀的文件,手动加后缀或者写成Open "新建文本文档.dxf" For Output As #1。& W3 N% o8 H4 {% E' U8 x; c$ y
PS:生成的文件是没有问题的。结果老是存在我的文档里这个还没解决。
发表于 2020-1-30 09:03:11 | 显示全部楼层 来自: 中国北京
本帖最后由 woaishuijia 于 2020-1-31 04:24 编辑
' Z! r. g( @) a, ?" E
" t" A; Z( e! y  G; g6 Y! m; K结合你另外一个帖子“”,我好像明白你的意思了。1 w2 Q: }6 h, m0 g* k! o+ c
那个帖子里的Print #语句后面的文件号用的是1,这是有问题的。按照VB的语法规则,这个文件号是一个1~511的正整数,应该是由电脑自动生成。你这个直接使用1的情况,除非电脑只打开了一个文档,否则文件号1被其它文档占用,就出错了。只能先手动创建文档,再执行程序,我在那个帖子里的回复就是这样子的(那个回复为了简短,没有讨论编程技巧),为了保证程序顺利运行,要求先创建文档。! ]) H7 b. ?( {
把那个主程序和子程序的代码改一下6 K" {- M  `6 s; U
  1. Dim FileNumber As Integer
    5 m" G+ [; b+ h5 h! \1 A9 v
  2. 0 ~7 ]7 d, O/ u( y+ [) l% H) r2 h
  3. Sub A(): f8 t! Z8 j* j, E- K; r
  4.     FileNumber = FreeFile()+ \( i1 @1 J8 q+ l4 g# f$ u
  5.     Open "c:\1.dxf" For Output As #FileNumber
    # a& @; G9 f, J
  6.     Print #FileNumber, 01 j; k: b/ |6 V# d/ I
  7.     Print #FileNumber, "SECTION"% {! U- R1 J+ G( R1 T
  8.     Print #FileNumber, 2
    9 \; I& K; l4 r, U- f
  9.     Print #FileNumber, "ENTITIES"5 h6 y/ u4 k# J; n, V4 t
  10.     Print #FileNumber, 00 `+ o5 }5 ^. Z% [0 ?9 r7 O
  11.     DxfLine 0, 0, 100, 100, 1, "Continuous"6 l, r5 F1 y5 n
  12.     Print #FileNumber, "ENDSEC"+ G5 S! v" |' Z- M
  13.     Print #FileNumber, 08 \0 {3 `2 z+ [! p. U8 X/ b: K
  14.     Print #FileNumber, "EOF"
    , e( l9 I$ N. r& U
  15.     Close #FileNumber+ G  j* }3 J" W; n7 p2 `
  16. End Sub
    & s' {1 [) a0 }1 k; a2 Z
  17. : {+ U' @& q( N- p* ]  o  X3 {3 p
  18. Sub DxfLine(xs#, ys#, xe#, ye#, cl%, Optional Typ$)9 z5 {# L* V# @$ i
  19.     Print #FileNumber, "LINE"
    , e' i7 Y6 I6 [# c7 K
  20.     Print #FileNumber, 8
    1 x% E5 x- m+ w( T
  21.     Print #FileNumber, "0"
    / A4 ?& n8 T/ L; w& X
  22.     If Typ <> "" Then+ @, F+ H% B) e; @4 m
  23.        Print #FileNumber, 6: J  Q# V, V! v4 x8 e
  24.        Print #FileNumber, Typ, x- M( ~: S. o
  25.     End If% L( B6 V- x6 Q$ c2 s/ T; c8 u
  26.     Print #FileNumber, 627 h6 g: Y7 Q) }% h
  27.     Print #FileNumber, cl
    ) I  T8 a0 L9 v$ s* B+ X" @
  28.     Print #FileNumber, 10
    4 \3 u2 x: F9 R( n1 x
  29.     Print #FileNumber, xs
    & \$ K% w8 Y0 ~( `" g& d' G+ e
  30.     Print #FileNumber, 207 H) P/ K+ t9 u; ?- t# x
  31.     Print #FileNumber, ys
    6 q; _$ L. _$ }% P) f
  32.     Print #FileNumber, 30+ c1 s' _+ s, t8 [4 j  w
  33.     Print #FileNumber, 0#
    / L' Y' G* p) Z& n2 Z  l
  34.     Print #FileNumber, 117 s2 D" Z* U$ x8 \. A9 H6 I
  35.     Print #FileNumber, xe
    ! Z, X! X0 F* r* I8 a
  36.     Print #FileNumber, 21
    / M" W0 u% e9 ?' W# j
  37.     Print #FileNumber, ye. _4 t' [% X7 B0 x+ A
  38.     Print #FileNumber, 31
    # w# n7 A+ r% U) Y; [
  39.     Print #FileNumber, 0#
    - E. E- q$ v& g4 w* O- u
  40.     Print #FileNumber, 0* M3 ?0 \8 P( }. `: b
  41. End Sub5 u+ E6 x- I8 R" |' b; a% t2 e
复制代码
代码中第一行是在通用声明区声明一个名为 FileNumber 的整型全局变量,用于保存文件号1 l: z( u9 ]9 b2 S$ G
第四行用 FreeFile 函数获得可用的文件号,后面的代码都使用这个文件号,包括子程序中的Print #语句,这也是使用全局变量的原因
5 q. Y0 z* C6 }第十八行,子程序的参数中的前四个都使用了显式类型声明字符“#”,表明这是Double 数据类型;第六个参数使用了Optional 关键字,表明这后面的参数是可选的:在调用子程序时,如果线形是“BYLAYER”,则不必带这个参数。如果不用这个关键字,在调用子程序时,就必须有这个参数,尽管它可能是空字符串。" H! Z' b1 k, a
第二十、二十三、二十六、二十八、三十、三十二、三十四、三十六、三十八和四十行,都去掉了双引号和空格,这里没必要使用字符串类型,用整型就可以- F3 p2 n$ r0 v/ E  Z& o/ K
第二十二、二十四行去掉了变量后面的显式类型声明字符“$”,没必要(已经在在第十八行的参数列表中声明了)。同理,第二十七行去掉了双引号及其内部空格及逗号,去掉了变量后面的显式类型声明字符“%”,没必要
; Z: j$ L+ H* y6 Q5 I第三十三、三十九行把"0.00"改成了0#
% S. }9 f% y- w# w1 D' V; W0 h去掉了原子程序中的
  1. Label:' [# J$ u* W# D) [
  2.      Exit Sub
复制代码

评分

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

查看全部评分

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

本版积分规则


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

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

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