乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 125|回复: 11

用于创建模块的代码

[复制链接]

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-11-30 16:19:54 | 显示全部楼层 |阅读模式
我知道这个“可能”听起来有点奇怪,但是有人写过创建新子模块的代码吗?
例如,如果我让用户做一些事情,比如挑选点,我希望模块1将这些点存储在一个变量中,然后可能使用该信息来编写一个新模块、模块2等。
这有点奇怪,但在某种意义上,您可以让用户实际为您创建代码,具体取决于他们的输入或事件。
有人有这种事情的例子吗?
谢谢
马克

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-11-30 16:58:23 | 显示全部楼层
自我修改代码是一种黑色艺术,一般来说,在lisp、python等脚本语言中更容易。
然而,几乎没有什么是不可能的,所以我首先参考 Microsoft Visual Basic for Applications Extensibility 库(例如,C:\ Program Files \ Common Files \ Microsoft Shared \ VBA \ VB a6 \ vbe 6 ext。OLB),然后检查对象模型(F2)。
例如,您可能最终会玩这样的东西-
  1. Dim component As VBComponent, _
  2.     subDef    As String, _
  3.     QT        As String
  4.    
  5. QT = Chr$(34)
  6.    
  7. subDef = "Sub Woot ()" & vbCrLf & vbCrLf & _
  8.          vbTab & "Call Msgbox ( " & QT & "Woot!" & QT & ") " & vbCrLf & vbCrLf & _
  9.          "End Sub"
  10. Set component = VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule)
  11. component.CodeModule.AddFromString subDef

为了简洁/懒惰,我忽略了许多细节,包括但不限于检查您是否已经添加了代码模块、模块命名、调用技术...雅达。
玩得开心,但不要伤害任何小动物。
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-11-30 17:41:01 | 显示全部楼层
如果你加载一个引用库的dvd项目,你不必重新引用这些库;它们是,嗯,粘性的。
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-11-30 17:51:27 | 显示全部楼层
我的两分钱...
我不明白为什么你需要创建新模块来存储数据以创建新数据。
文本文件,Excel工作表,Access数据库,Sql Express数据库,Oracle数据库,MS SQl数据库甚至二进制文件都应该同样完成这项工作,并且在数据库的情况下,检索数据也应该更容易,更快捷。
如果你想把数据存储在内存中,供以后使用集合、数组、字典,最明显的方法。
在这之后咆哮了一个问题....您能解释一下为什么模块中的存储是真正需要的,以及它将带来什么优势。
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-11-30 18:01:14 | 显示全部楼层

嗨,Dnerb,
你的咆哮实际上对
非常有用,我同意;我相信有更好的方法来存储数据并稍后检索它。如果你阅读了我的帖子,就在MP的上面,我确实说过我可以使用VBScript Textstream方法来写入文本文件,然后在需要时读取。此外,我从未尝试过VBA中任何东西的字典对象方法,你有没有一个例子来说明这如何有助于存储数据和检索数据?
我想做这样的事情的原因还不完全清楚。
我只是有一些想法。
我看到有人使用The(wtf)Writto File方法编写了一个LISP例程,他们正在从用户选择的位置检索点和其他一些数据,然后将该信息写入另一个(可能是. txt)文件并用它创建一个新的Lisp文件。
所以,本质上,用户实际上是在为他创建Lisp例程(动态)。
我只是觉得这很有趣,可能对某些事情很有用。
同样,Lisp更基于ASCII,并且可能比VB更适合做这些事情。
我只是想把它扔出去,看看人们有什么要说的。
我们在VB中也有动态数组和Redim等方法
所以,做用户创建模块的整个想法可能根本不是一个好主意。
想法?
谢谢你,
Mark
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-11-30 18:06:46 | 显示全部楼层
我想我没有意识到这个线程的动力。如果您谈论的只是数据持久性,VB/A完全能够满足您的需求。
除了流(顺序)、随机和二进制文件I/O之外,您还可以利用ADO等人等外部库。
根据您的描述,一个简单的csv文件就足够了。
就像我之前说的,“虽然很有趣,但我认为替代方法可以实现与自修改代码类似的结果”。
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-12-2 15:30:35 | 显示全部楼层

MP
所以你是说,将输入流式传输到csv文件?
我想更好地总结需求或问题(我认为你们正在解决它)基本上是数据采集和存储。
所以,让我们以点为例:
我们从用户那里收集选择的点数据,然后我们意识到我们可能希望在以后使用该信息;我们如何保存该信息直到需要它?同样,它可以流式传输到csv文件或类似的文件中,但可能有一种方法可以让VBA长期保存它;然后我们可以在需要时调用那个变量或任何保存信息的东西。?
Mark
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-12-3 09:36:52 | 显示全部楼层
通过“长期”,您的意思是在AutoCAD当前会话的后期,还是从现在开始的三周内?
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-12-3 09:46:47 | 显示全部楼层
标记多少点?
是否有任何相关数据必须伴随点数据,例如描述符、日期等?
数据绘图是否以中心为中心?
以用户为中心?
以项目为中心?
以客户为中心?
您预计数据量会及时增长吗?
增长多少?
数据会被其他应用程序使用吗?例如数据收集器、全站仪等。阅读“数据格式应该尊重现有的行业标准吗?”
你确定吗?
...
/好奇心害死了猫
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2007-12-3 10:59:55 | 显示全部楼层
嗨,Bob,
是的,我确实没有固定的时间,但3周是一个很好的时间范围。
绝对不是在这个环节。一旦我们关闭了ACAD,变数就被清除了,对吗?
因此,我希望有一种方法可以无限期地保存数据。
然后,我可以说:
使用保存的数据
让我们在当前模块或项目中使用它。
标记
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 16:57 , Processed in 0.580328 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表