Tag: fso

保存现有Excel工作簿的副本而不覆盖它

我正在尝试将文件夹X中的Excel工作簿复制到文件夹Y,并且在文件夹Y中已经存在该文件名的文件时,文件不会被覆盖,而是为新文件提供后缀“ – 复制” ,' – 复制(2)'等 – 基本上重新创build复制和粘贴文件夹中的同一个文件的手动过程。 我会认为会有一个function,让你做到这一点,但我迄今为止所尝试的东西似乎符合确切的要求: Workbook.SaveAs提示信息询问用户是否应该replace文件 Workbook.SaveCopyAs只是在不提示的情况下覆盖文件 FileSystemObject.CopyFile方法有一个'覆盖'参数,但是这只是错误,如果设置为false,并且该文件已经存在,这是根据Microsoft网站 创build一个基于所选文件夹(.xls(1),.xls(2)等)中现有文件数量递增的计数器并不困难,但是我希望可以有一个更直接的方法这个。

FSO没有得到任何文件

我试图让程序复制某些字符的文件。 要复制的文件应该在今天和今天之前的100天之间。 我的程序可以运行,但是新文件夹没有显示。 我确实确定该文件是在这个date之间。 我没有得到任何错误,所以我不知道在哪里修复。 我尝试过其他方法,但都没有工作。 我尝试混合来自http://www.rondebruin.nl/win/s3/win026.htm的代码。 我正在玩它,只有copy_folder()正在工作。 我得到运行时错误“53” – 在Copy_Certain_Files_In_Folder()和Copy_Files_Dates()找不到文件。 无论如何,我的代码有什么问题,如何将FileExt合并到我的代码中? 谢谢! Sub CopyPasteFiles() Dim FSO As Object Dim FromPath As String Dim ToPath As String Dim Fdate As Date Dim FileExt As String Dim objFile As Object Dim objFolder As Object FromPath = "C:\Users\Run" '<< Change ToPath = "C:\Users\Test" '<< Change FileExt = […]

WriteLine行尾字符

我想从Excel写入数据行到一个XML文件。 但是,我需要在提交文件之前validation数据。 我知道WriteLine()有自己的行结束,但我需要将其添加到string中。 所以我想要做这样的事情: strXML = "<BOM>" & {??} _ & "<BOM_NBR>" & p_typBomValues.strParentPNbr & "</BOM_NBR>" & {??} _ & "<DESC>" & p_typBomValues.strParentDesc & "</DESC>" & {??} _ & "<ECO_NBR>" & p_typBomValues.strEcoNbr & "</ECO_NBR>" & {??} _ & "<REV>" & p_typBomValues.strRevision & "</REV>"" & {??} .WriteLine(strXML) …不是这个: .WriteLine ("<BOM>") .WriteLine ("<BOM_NBR>" & p_typBomValues.strParentPNbr & "</BOM_NBR>") […]

Dir()和FSO都丢失1个文件

所有的search尝试find解决这个问题已经拿出了我所期待的相反。 我不需要从一个文件夹中的search中排除文件,但包括所有文件。 我的问题是,我的search正在返回除了1以外的文件夹中的所有文件。每次没有find1文件是完全随机的。 我曾尝试使用Dir()和FSO方法,不同的目录,不同数量的文件等无论我尝试,总是从列表中丢失1个文件。 这里是我的代码简化片段: Dir()版本: FilePath = "C:\Test\" SourceFile = Dir(FilePath & "*.xls*") Do While SourceFile <> "" SourceFile = Dir() ActiveCell.Value = SourceFile ActiveCell.Offset(1, 0).Activate Loop FSO版本: Set FileSystem = CreateObject("Scripting.FileSystemObject") DoFolder FileSystem.GetFolder(FilePath) Sub DoFolder(Folder) Dim SubFolder For Each SubFolder In Folder.SubFolders DoFolder SubFolder Next Dim File For Each File In Folder.Files If […]

Excel VBA – PDF文件属性

第一次海报,但长期在本网站上findVBA和SQL解决scheme的粉丝。 我有一个VBA子程序,旨在查找用户指定的目录中的所有PDF文件。 该程序通过所有子文件夹进行recursion并生成电子表格,如下所示: 列A:完整的文件path(“C:\ Users \ Records \ NumberOne.pdf”) B列:包含文件的文件夹path(“C:\ Users \ Records \”) 列C:文件名称本身(“NumberOne.pdf”) 到目前为止,程序(下面的代码)完美地工作。 我用它来search超过5万个PDF文件的目录,并且每次都成功地生成电子表格(程序总的运行时间通常在大型目录中是5-10分钟)。 问题是我想添加列D来捕获PDF文件的创builddate。 我已经search了这个,花了好几个小时,尝试像FSO.DateCreated等技术,没有任何工作。 如果FSO.DateCreated是我所需要的,我不知道在哪里插入它在我的子程序,使其工作。 通常我得到一个错误,该对象不支持该属性或方法。 是否有人碰巧知道我可以在哪里插入正确的代码来查找每个PDF创build的date并将其放到输出电子表格的D列中? Sub GetFiles() '– RUNS AN UNLIMITED RECURSION SEARCH THROUGH A TARGETED FOLDER AND FINDS ALL PDF FILES WITHIN Application.ScreenUpdating = False Application.DisplayAlerts = False Dim j As Long Dim ThisEntry As String Dim […]

访问具有长path的文件(超过260个)

我正在使用Microsoft Scripting Runtime(FSO)来parsing文件夹并生成其所有内容的列表,这些文件夹位于networking上,所产生的path最终长于260.我拥有的最小代码如下所示: Private Sub ProcessFolder(ByVal StrFolder As String) Dim Fl As File Dim Fldr As Folder Dim RootFldr As Folder Set RootFldr = FS.GetFolder(StrFolder) For Each Fl In RootFldr.Files Debug.Print Fl.Path Next For Each Fldr In RootFldr.SubFolders DoEvents ProcessFolder Fldr.Path Next Set RootFldr = nothing End sub 在一定的级别StrFolder长度变为259, Set RootFldr …文件夹行工作,但For Each Fl In […]