krampaul82 发表于 2013-7-8 10:57:53

代码A修改

感谢Keith,我喜欢下面的代码
有什么方法可以给任何人重新命名吗。准备就绪的pdf文件。pdfold而不删除它们
感谢您的帮助
公共子Gartner\u Get\u Hyperlink\u Main() Dim objBlock As AcadBlockReference作为对象块参考 模糊对象作为身份 暗colHyps作为AcadHyperlinks 将fso设置为文件系统对象&nbsp
&nbsp
设置fso=New FileSystemObject&nbsp
 If Len(Dir(ThisDrawing.Path.\Cut Sheets\*.pdf))&lt&燃气轮机;0然后'检查当前项目剪切表中是否有任何PDF&nbsp&nbsp fso。删除此绘图文件。路径(&P)&引用;\剪切纸张\*。pdf“;,正确'如果有,请将其删除 如果结束&nbsp
&nbsp
&nbsp
&nbsp
&nbsp
&nbsp
 对于本图纸中的每个对象。模型空间&nbsp&nbsp 如果对象的类型是AcadBlockReference,则&nbsp&nbsp&nbsp&nbsp 设置objBlock=objEnt&nbsp&nbsp&nbsp&nbsp 设置colHyps=objBlock。超链接&nbsp&nbsp&nbsp&nbsp 出错时继续下一步'如果我们遇到任何不'T有超链接&nbsp&nbsp&nbsp&nbsp fso。CopyFile colHyps。项(0)。URL,ThisDrawing。路径(&P)&引用;\剪切图纸\“;,正确'TRUE选项将自动覆盖具有相同名称的任何现有文件&nbsp&nbsp 如果结束 下一个目标 设置fso=Nothing

Matt__W 发表于 2013-7-8 14:10:38

这是重命名单个文件的更简单方法
Name "c:\temp\123.pdf" As "c:\temp\123.pdfold"

krampaul82 发表于 2013-7-9 12:05:33

马特
如果Len(Dir(ThisDrawing.Path&Cut Sheets\*.pdf)),这不起作用&lt&燃气轮机;0然后'检查当前项目剪切表中是否有任何PDF&nbsp&nbsp FSO。命名此图形。路径(&P)&引用;\剪切纸张\*。pdf“;,“作为”;\切割旧纸张。pdf“;,正确'如果有,请重命名它们 结束如果我接近了吗
标记

Keith™ 发表于 2013-7-9 16:13:14

如果您只是想将任何现有的.PDF文档重命名为.PDFOLD,这是可能的,但是,我必须提醒您,如果第二次执行该函数时目标名称是现有文件的名称,则会出现问题
例如:
此文件。pdf已重命名为此文件。pdfold之后,创建了一个新的pdf文件,称为thisfile。pdf如果再次调用该函数,它将尝试重命名此文件。pdf文件。pdfold,但是这个文件。pdfold将已经存在,这意味着应用程序将崩溃并烧坏
你可能会发现更好的解决方案是使用一个全局递增且永远不会重复的值。datetime值在这种情况下非常有效。因此,您可以重命名此文件。pdf到thisfile_201309070337.pdfold。这样,下次执行应用程序时,文件名会随着上次运行到现在之间的时间增加
因此,您可能要做的是:
'filter是一个字符串,用于匹配文件,即使用“*”。pdf“;匹配所有PDF文件或;a*。pdf“;匹配所有以“开始”的PDF文件;a“
/p> 您正在硬编码文件的位置,但将其输出到路径参数提供的文件夹中
您更改了日期时间格式字符串,并将其替换为*。pdfold..这不是日期格式字符串。这就是代码将失败的地方,因为它将返回一个既不是.pdfold也不是datetime字符串的字符串
所以…
要使用它,请将它完全按照我提供的那样放在vba代码中,并从应用程序中这样调用它:
重命名文件。pdf“;,此图纸。路径(&P)&引用;\剪切图纸\“&QUOTE;。pdfold“
页: [1]
查看完整版本: 代码A修改