Tag: filesystemobject

VBA – Excel无法增加文件大小

这个让我疯狂。 任何帮助是受欢迎的。 我有一个数字模拟不断写入到一个文本文件。 文件大小不断增加。 我需要报告文件大小,并检查它是否仍在增加或者是否已经停止增长。 VBA似乎无法检测到文件的增加的大小,它保持注册相同的大小。 但是,如果我有文件夹中的Windows资源pipe理器操作,并按F5,在VBA中的大小增加。 我需要知道它是否应该这样工作,因为Windows索引文件或者如果我做错了什么。 我已经使用filelen() , filesystemobject.filezise() , datelastmodified() , datelastacessed()和没有… 我已经find了一个workarround:如果我将有问题的文件复制到临时文件,然后读取临时文件大小,我可以检测到大小的变化。 但这是一个丑陋的解决scheme。 我非常想检查文件大小,并得到正确的结果。 对不起,如果不是很清楚。 如果有必要,我会很乐意进一步澄清。 这里是我一直在使用的代码,但要testing它,你将不得不模仿文件的写作情况,如在video编码,例如,因为如果你用记事本编辑的文本文件,它的行为也更新信息到vba。 Public fileSizeLastStep as long Public Sub sizeWatch() dim fso as new fileSystemObject dim fileToMeasure as File dim fileSizeNow as long Set fileToMeasure = fso.GetFile("C:\filename.txt") fileSizeNow = fileToMeasure.Size If fileSizeNow <> fileSizeLastStep Then fileSizeLastStep = […]

使VB脚本中的目录相对于运行macros的工作簿

我正在使用以下来创build一个文件夹: Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") ' Create a new folder oFSO.CreateFolder "C:\MyFolder" 但是我希望文件夹位置与运行代码的excel工作簿位于相同的位置。

使用VBA FileSystemObject,指定文件的文件扩展名

我正在使用下面的代码来从文件夹及其子文件夹中列出所有带有xls,xlsx或xlsm扩展名的文件。 下面的代码工作,但问题是,它列出所有从子文件夹扩展名的文件,但只列出主文件夹中的Excel文件。 我无法弄清楚这个代码有什么问题。 你可以帮我吗? Sub List_XL_Files(ByVal SheetName As String, ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim lRoMa As Long Set FSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = FSO.GetFolder(SourceFolderName) lRoMa = ThisWorkbook.Sheets(SheetName).Cells(Rows.Count, 2).End(xlUp).Row + 1 ReDim arrFolders(ctr) With ThisWorkbook.Sheets(SheetName) […]

VBA Word 2013:Scripting.FileSystemObject:运行时错误424 – 所需的对象

我在VBA中并不是很坚定,而且我一直在尝试在Word中使用我之前在Excel中编写的函数。 (它在哪里工作完美无缺!) 函数遍历一个文本文件,并在某个(寻找)其他string之后返回string: Function keySearch(ByVal sSearch As String) As String Dim fso As New FileSystemObject Dim FileNum Dim DataLine As String Dim posOf_A As Integer Dim filepath As String keySearch = "" 'Create filesystem object Set fso = CreateObject("Scripting.FileSystemObject") 'filepath to textfile filepath = ActiveWorkbook.Path & "\temp.txt" Set FileNum = fso.OpenTextFile(filepath, 1) '<— This is […]

使用文本stream对象来replace带空格的制表符并删除字符

我有超过一千个.s2p文件(由电气testing设备使用的分隔文本文件),这些文件是由VBAmacros编辑的,它在Excel中以制表符分隔的文本文件打开每个原始文件,包含另一个文件的数据列的列,然后以原始格式(.s2p)保存并closures它们。 这是我用来打开每个文件的呼叫: Call Application.Workbooks.OpenText(Filename:=(path & filename & ".s2p"), Origin:="437", DataType:=xlDelimited, ConsecutiveDelimiter:=True, Tab:=True, Space:=True, TextQualifier:=xlTextQualifierNone) 现在,当我在记事本中打开.s2p文件来查看它们时,分隔列的原始单个空格现在是一个完整的选项卡,并且在某些文件标题行中添加了一些双引号(“)字符(尽pipe设置了TextQualifier参数到xlTextQualifierNone …) 因此,我想写另一个macros,可以打开所有这些.s2p文件,循环通过行,并用空格replace任何双引号,任何制表符与单个空格。 我打算在每个文件上使用.OpenAsTextStream ,但似乎TextStream对象不支持覆盖行,但只能写新的行… 有没有更好的方法来实现我所要做的,而不仅仅是读取原始文件中的行,并将它们写入新创build的文件? 我必须将最终文件保存为“.s2p”而不是“.txt”。

FileSystemObject代码已经开始抛出一个错误

不知道为什么,但下面的代码已经开始抛出一个未知的错误。 macros运行时Excel停止响应。 为什么这个错误发生? 什么是具有相同function的替代路线? 此代码位于Windows 7计算机上的Excel 2010 xlsm文件中。 Sub CopyFolderToCasinoDirectory() 'reference Microsoft Scripting Runtime On Error Resume Next Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject fso.CopyFolder _ "\\xxxfileserve\department$\DBA\Opers\All Operators\yyy", _ "\\xxxfileserve\department$\DBA\Cas\yyy", _ True On Error GoTo 0 Set fso = Nothing End Sub 好吧 – 我已经改变了path,试图移动更less的文件 – 它犹豫了,但最终还是贯穿始终。 我怀疑以上是失败的,因为在指定的目录中有太多的文件? 目前有753个文件 – 可能太多了? RonDeBruin给了我很多关于如何testing或改变逻辑的想法。 […]

从pdf中提取表格(excel),pref。 w / vba

我想用vba从pdf文件中提取表格,并将它们导出为ex​​cel。 如果一切按其应有的方式进行,应该全部自动进行。 问题是表格不规范。 这是我迄今为止。 VBA(Excel)运行XPDF ,并将当前文件夹中find的所有.pdf文件转换为文本文件。 VBA(Excel)逐行读取每个文本文件。 和代码: With New Scripting.FileSystemObject With .OpenTextFile(strFileName, 1, False, 0) If Not .AtEndOfStream Then .SkipLine Do Until .AtEndOfStream //do something Loop End With End With 这一切都很好。 但现在我正在从文本文件中提取表的问题。 我想要做的是VBAfind一个string,例如“Year's Income”,然后将数据输出到列中。 (在表格结束之前) 第一部分不是很困难(find一定的string),但是我将如何去做第二部分。 文本文件看起来像这个Pastebin 。 问题是文本不规范。 因此,例如一些表格有3年的列(2010 2011 2012)和一些只有两个(或1),有些表格在列之间有更多的空间,有些不包括某些行(如资本资产,净额)。 我正在考虑做这样的事情,但不知道如何在VBA中去做。 查找用户定义的string 例如。 “表1:几年的回报。” 一个。 下一行find年份; 如果有两个,我们将需要三列输出(标题+,两年),如果有三个,我们将需要四个(标题+,三年)..等 湾 为每年创build标题栏+列。 到达行尾时,转到下一行 一个。 阅读文本 […]

如何在VBA中使用FileSystemObjectreplace一行文本文件中的string?

我正在尝试使用FileSystemObject方法在文本文件中查找特定的行,并在该行内replace特定的string。 我相对比较新,因为我目前的代码有excel打开文本文件,并取代我需要它replace然后保存并closures它。 这种方式不再是一个选项,因为有excel打开文本文件需要很长时间,并支持文件。 这是我到目前为止已经有多远了。 – Sub FindLines() Const ForReading = 1 Set FSO = CreateObject("Scripting.FileSystemObject") Set objFSO = FSO.OpenTextFile("C:\Users\Carella Home\Desktop\boomboom.txt", ForReading, False) Do Until objFSO.AtEndOfStream = True go = objFSO.ReadLine If InStr(1, go, "ant", vbTextCompare) > 0 Then bo = Replace(go, "t", "wow") End If Loop objFSO.Close Set objFSO = FSO.OpenTextFile("C:\Users\Carella Home\Desktop\boomboom.txt", 2) End Sub […]

访问具有长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 […]