Vba 在文件目录中循环检查文件是否存在,如果不创建新文件,则增加版本号

Vba 在文件目录中循环检查文件是否存在,如果不创建新文件,则增加版本号,vba,for-loop,increment,powerpoint,Vba,For Loop,Increment,Powerpoint,有人能帮我找到一种方法,在当前文件的目录中循环并搜索该文件,看看它是否存在,如果存在,然后计算已经有版本号的文件的数量,并增加下一个数字,如果不存在,则像平常一样创建该文件 基本上,我有一个vba宏,允许您从“主模板”中提取幻灯片包,它们都存储在主模板中。用户单击他们想要的包,包被提取并保存到同一目录中。我的问题是没有版本控制或文件保护设置。有人能帮我解决如何循环和增加版本号吗 选项显式 公共子CreatePack(控件作为IRIBOnControl) 像细绳一样的小包裹 将计数设置为整数 选择

有人能帮我找到一种方法,在当前文件的目录中循环并搜索该文件,看看它是否存在,如果存在,然后计算已经有版本号的文件的数量,并增加下一个数字,如果不存在,则像平常一样创建该文件

基本上,我有一个vba宏,允许您从“主模板”中提取幻灯片包,它们都存储在主模板中。用户单击他们想要的包,包被提取并保存到同一目录中。我的问题是没有版本控制或文件保护设置。有人能帮我解决如何循环和增加版本号吗

选项显式
公共子CreatePack(控件作为IRIBOnControl)
像细绳一样的小包裹
将计数设置为整数
选择Case control.Id
案例“打包按钮B1”
packName=“B1”
案例“打包按钮”
packName=“B2”
案例“打包按钮”
packName=“TSD”
结束选择
'注意:尝试删除文件系统不友好的字符
将标题设置为字符串
如果ActivePresentation.Slides(1).Shapes.Count>=9,则
Title=Trim(ActivePresentation.Slides(1)、Shapes(9)、TextEffect.Text)
如果Title=”“,则MsgBox“警告:幻灯片1中未输入项目标题。”
其他的
Title=“(项目名称未知)”
MsgBox“标题幻灯片已删除,无法检测到项目名称。”
如果结束
标题=替换(替换)(替换(替换)(替换(替换)(替换(替换(标题),/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
将路径设置为字符串
path=ActivePresentation.path
如果Len(Dir(路径&“\”&packName&“幻灯片包-”&Title&“.pptx”))>0,则“文件”存在
'如果MsgBox(“这将在一个单独的PowerPoint文件中生成一个文件包。在提取该文件包之前,请确保您已经实现了一个版本号,否则您的更改可能会被覆盖。”&vbCrLf&vbCrLf&“您当前的文件将保持打开状态,并且任何挂起的更改都不会自动保存。”,vbOKCancel,“幻灯片管理器-创建文件包”)=vbOK那么
MsgBox(“文件存在,文件名版本号将增加”)
复制幻灯片演示文稿包
Application.ActivePresentation.SaveAs路径和“\”&packName和“幻灯片包-”&Title&Count+1,ppSaveAsOpenXMLPresentation
ActivePresentation.Save
其他的
MsgBox(“这将在一个单独的PowerPoint文件中生成一个包。”&vbCrLf&vbCrLf&“当前文件将保持打开状态,任何挂起的更改将不会自动保存”)
复制幻灯片演示文稿包
Application.ActivePresentation.SaveAs路径和“\”&packName和“幻灯片包-”&Title,ppSaveAsOpenXMLPresentation
ActivePresentation.Save
如果结束
端接头
非常感谢您的帮助

问候,,
Ben

如果我正确理解你的问题,你的循环应该是这样的

Dim fileNoVersion作为字符串
fileNoVersion=path&“\”&packName&“幻灯片包-”&Title
将计数设置为整数
计数=1
While Dir(fileNoVersion&count&“.pptx”)
计数=计数+1
温德
这将检查存在版本1、版本2、版本3…的文件,并返回下一个未使用的编号