乐筑天下

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

用VBA写入注册表???

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-12 18:29:50 | 显示全部楼层 |阅读模式
我正在尝试通过VBA写入注册表的路径
这段代码在VBScript中运行得很好,但我想将其合并到我的VBA模块中(如果可能的话)
如果有人知道如何使下面的代码在VBA中工作,我将不胜感激
或者,如果是(通过VBA)将支持路径写入注册表的替代方法,我真的很想知道该方法,谢谢
  1. Sub SheetSetTemplatePath_NOT_WORKING()
  2. Dim WshShell, WshNetwork As Object
  3. Dim curver, locale, cprofile
  4. Dim vname  '= Value Name
  5. Dim vdata  '= Value Data
  6. Set WshShell = WScript.CreateObject("WScript.Shell")
  7. Set WshNetwork = WScript.CreateObject("WScript.Network")
  8. vname = "SheetSetTemplatePath"
  9. 'This reads the currently installed and last accesed version of AutoCAD
  10. curver = WshShell.RegRead("HKCU\Software\Autodesk\AutoCAD\curver")
  11. 'There is an additional value under that registry key, it is unique and must be grabbed from here, or else you won't know the location of the profile
  12. locale = WshShell.RegRead("HKCU\Software\Autodesk\AutoCAD" & curver & "\curver")
  13. 'This Key holds only the current profile
  14. cprofile = WshShell.RegRead("HKCU\Software\Autodesk\AutoCAD" & curver & "" & locale & "\Profiles")
  15. 'New Path Goes Here
  16. vdata = "I:\Path\Template"
  17. 'Write The VName and VData (Support Path)
  18. WshShell.RegWrite "HKCU\Software\Autodesk\AutoCAD" & curver & "" & locale & "\Profiles" & _
  19. cprofile & "\General" & vname, vdata
  20. 'Return the results:
  21. 'MsgBox "The Path for " & vname & vbCrLf & vdata & vbCrLf & "has been written to" & vbCrLf & _
  22. '"AutoCAD - " & curver & "," & vbCrLf & "Profile - " & cprofile
  23. End Sub


回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 03:41:41 | 显示全部楼层

当然可以,有Api调用….这是我使用的类,它'乍一看有点复杂,编码和解码赢了#039;t工作
I'我养成了在注册表中编码隐私敏感数据和序列号的习惯。由于显而易见的原因,我赢了;t在web上发布该部分
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 12:48:02 | 显示全部楼层

是的,我能理解
正如有些东西最好不要说,有些东西最好不用贴,我会看看你贴的文件
希望它不会太复杂;这些大坝过敏症今天让我头晕目眩
谢谢你,先生
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 16:07:43 | 显示全部楼层
本人'我没有,先生
蠢驴比我进化了一步……哈哈,我会向任何人致敬;“神奇骆驼”;我知道(内部笑话)
如果可以'我想不出来,尽管问吧。如果你不'我不想用谷歌搜索;VB注册表API“;寻找其他示例
I类'我的帖子是基于凯斯或凯瑞在Cadvault上的一个例子……如果我的记忆没有捉弄我的话
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 16:15:53 | 显示全部楼层

嘿,可能有更大的蠢驴被英国女王封为爵士,他们被称为;先生“;LOL.Paul McCartney“;不是“;作为其中之一;再说一次,除了他,我从未见过他;“是”;音乐天才
你说得很好,我本可以先在谷歌上搜索一下,但除了得到我们自己的答案外,发布还有一个好处;也就是说,其他人也可以从这些知识中受益
I'我不确定我是否认识克里,但如果基思帮助开发它,我完全相信它的功能
那家伙真的很棒
标记
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 16:22:41 | 显示全部楼层

哇,我只是看着它;写几条到注册表的路径似乎需要花费大量精力
知道什么是更好的主意吗?我确信这是可以做到的,尽管我现在还不确定如何做到
我知道在API中有大约3条路径我找不到,但当然在注册表中
那么,我可以使用VBSCript(见上文)写入注册表,然后从VBA执行它,你觉得怎么样
顺便问一下,你知道我如何通过VBA执行脚本(vbs)吗
谢谢你,马克
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 16:42:47 | 显示全部楼层
您好,Mark,我在您在VBScript中尝试此功能的线程中发布的代码**链接**就是我在VBA中使用的示例。只需确保转到工具->引用并添加对“的引用”;Windows脚本主机对象模型
然后这就起作用了:
  1. Sub SheetSetTemplatePath_WORKING()
  2. Dim WshShell As New WshShell
  3. Dim curver, locale, cprofile
  4. Dim vname  '= Value Name
  5. Dim vdata  '= Value Data
  6. 'Set WshShell = WScript.CreateObject("WScript.Shell")
  7. 'Set WshNetwork = WScript.CreateObject("WScript.Network")
  8. vname = "SheetSetTemplatePath"
  9. 'This reads the currently installed and last accesed version of AutoCAD
  10. curver = WshShell.RegRead("HKCU\Software\Autodesk\AutoCAD\curver")
  11. 'There is an additional value under that registry key, it is unique and must be grabbed from here, or else you won't know the location of the profile
  12. locale = WshShell.RegRead("HKCU\Software\Autodesk\AutoCAD" & curver & "\curver")
  13. 'This Key holds only the current profile
  14. cprofile = WshShell.RegRead("HKCU\Software\Autodesk\AutoCAD" & curver & "" & locale & "\Profiles")
  15. 'New Path Goes Here
  16. vdata = "I:\Path\Template"
  17. 'Write The VName and VData (Support Path)
  18. WshShell.RegWrite "HKCU\Software\Autodesk\AutoCAD" & curver & "" & locale & "\Profiles" & _
  19. cprofile & "\General" & vname, vdata
  20. 'Return the results:
  21. 'MsgBox "The Path for " & vname & vbCrLf & vdata & vbCrLf & "has been written to" & vbCrLf & _
  22. '"AutoCAD - " & curver & "," & vbCrLf & "Profile - " & cprofile
  23. End Sub
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 16:45:45 | 显示全部楼层
只需使用该类…
根据您的需要调整默认路径和键(我已将其用于网络注册)
顺便说一句:基思=基思·布朗
认真考虑一下杰夫·米什勒的建议(他就在我列表中的神奇骆驼R下方…顺便问一下,溺水猫发生了什么事?)
I类'我贴的是一个万能的东西。它速度快,可以写入注册表中的任何章节
如API和039所述;s看起来确实很难,但它们通常只是具有速度优势的函数
我个人赢了't深入VB脚本,因为我预见了VB.NET/ASP。NET将是VBA和VB脚本的后续。但我'我以出错而出名
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 16:58:22 | 显示全部楼层

杰夫,我以前一定错过了
嘘!这太有道理了;这就是我错过它的原因
因此,只要我打开该类型库,我就可以了,你的代码做得很好,但是我发布的代码将获取上次访问和安装的ACAD版本和当前配置文件
因此,如果你尝试我发布的代码,你不需要硬编码下面的信息,它会自动提取
  1. R16.2\ACAD-4008:409\Profiles\Profile Name
我希望在不久的将来将其扩展到同时写入所有配置文件,而不仅仅是当前配置文件,或者至少可以选择这样做
非常感谢
标记
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2007-6-13 17:33:31 | 显示全部楼层
你'欢迎你,马克。是的,我用了一些和你相似的东西。第一段代码只是为了展示如何使用它。我也测试了你的。它工作得很好,以至于我忘记保存现有路径,现在它可以读取您的代码;幸运的是你没有't实现了一次设置所有配置文件,需要注意的另一件事是:
,因为我正在绘制一张旧图纸(R2002),该图纸'这就是我测试VBA代码的地方。然而,我'd早些时候一直在使用C3D2008,并已将其关闭。您的代码对C3D2008配置文件进行了更改,我想这是可以的,除非您想更改当前打开/正在使用的配置文件。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 19:43 , Processed in 1.155571 second(s), 72 queries .

© 2020-2025 乐筑天下

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