Matt__W 发表于 2009-7-6 16:44:32

你有目录的写权限吗?

n.yuan 发表于 2009-7-8 14:58:13

我看到了明显的代码错误,尤其是代码中断的错误。查看代码行之间的注释:
&039---------------------------------------------------------------------------------------
&039;模块 :模块get_hyperlink_cut_sheets
&039;日期时间:2009年1月5日13:21;作者 :标记;目的 :该程序将对当前图形模型空格块进行排序&nbsp&nbsp&nbsp&nbsp&nbsp :并找到PDF剪切表的任何相关超链接,然后移动该剪切&nbsp&nbsp&nbsp&nbsp&nbsp :将图纸复制到路径v:\Current\u Project\Cut Sheets\ Directory
&039---------------------------------------------------------------------------------------
选项显式 Dim objBlock As AcadBlockReference作为对象块参考 模糊对象作为身份 暗colHyps作为AcadHyperlinks 将fso设置为文件系统对象&nbsp
&nbsp
 设置fso=New FileSystemObject&nbsp
&039'“以下”;如果…那么…如果结束“;不执行您想要的操作(删除文件夹中的所有PDF文件)
&039'原因是您没有将有效的文件名传递给fso。DeleteFile()方法:没有文件可以是
&039'命名为“*”。pdf;。fso。DeleteFile()一次只删除一个文件。它不会通过接受删除所有文件'类似于*.pdf的通配符文件名模式。您需要反复使用call Dir(path.\*.pdf)获取每个
&039'PDF文件名并逐个删除
 If Len(Dir(ThisDrawing.Path.\Cut Sheets\*.pdf))&lt&燃气轮机;然后为0&nbsp' 检查当前项目剪切表中是否有任何PDF&nbsp&nbsp fso。删除此绘图文件。路径(&P)&引用;\剪切纸张\*。pdf“;,正确&nbsp&nbsp&nbsp' 如果有,请将其删除 如果结束&nbsp
 对于本图纸中的每个对象。模型空间&nbsp&nbsp 如果对象的类型是AcadBlockReference,则&nbsp&nbsp&nbsp&nbsp 设置objBlock=objEnt&nbsp&nbsp&nbsp&nbsp 设置colHyps=objBlock。超链接'这是”的典型用法;错误恢复时;,它向您隐藏错误'因为您没有在代码中确定您肯定会获得有效的文件名'从超链接#039;的Url。自fso以来。复制文件可能会失败(它确实失败了),您应该处理
&039'可能的错误&nbsp&nbsp&nbsp&nbsp 出错时继续下一步&nbsp&nbsp&nbsp&nbsp&nbsp' 如果我们遇到任何不'T有超链接'假设您确实从Url中获得了有效的文件名(您可以添加“Debug.Print colHyps.Item(0)”。URL“
&039'为了验证您是否始终有一个好的文件名),这里,第二个参数传递给fso。FileCopy()'方法肯定是错误的:您无法命名E完全错误:无法将目标文件命名为*.pdf。也就是说*&引用;在中不允许;文件名。我想您真正想做的是将源文件复制到
&039'...\剪切纸张;具有相同文件名的文件夹。因此,您必须从
&039'URL字符串,并将其用作具有新文件夹路径的目标文件名&nbsp&nbsp&nbsp&nbsp fso。CopyFile colHyps。项(0)。URL,ThisDrawing。路径(&P)&引用;\剪切纸张\*。pdf“;,正确&nbsp&nbsp&nbsp&nbsp&nbsp' TRUE选项将自动覆盖具有相同名称的任何现有文件&nbsp&nbsp 如果结束 下一个目标&nbsp
 设置fso=Nothing是另一个问题:强烈建议不要在MS脚本运行时使用FileSystemObject。对于简单的文件复制/删除,VB/A有内置的方法:FileCopy()和Kill()。给程序增加不必要的依赖性是不好的,更不用说根据Windows操作系统版本的不同,有不同版本的脚本运行时,这可能会给程序带来麻烦,尤其是这个问题很容易避免
页: 1 [2]
查看完整版本: 重新访问的超链接文件