标签: filesystemobject

如何在VBA中使用FileSystemObject?

有什么我需要参考的吗?我该如何使用:

Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为它无法识别这些对象.

excel vba filesystemobject

105
推荐指数
3
解决办法
33万
查看次数

使用VBA循环遍历所有子文件夹

我正在寻找一个VBA脚本,它将循环遍历指定文件夹的所有子文件夹.当我说所有子文件夹时,我指的是指定文件夹中的每个文件夹,以及其中的每个文件夹,以及其中的每个文件夹...理论上可能存在无限的嵌套子文件夹,但实际上它可能不会超过3或4.我使用VBA脚本运行的对象,所以,一旦我循环到该文件夹​​,我可以检查一些文件的属性(但我知道如何做到这一点的一部分).

谢谢您的帮助!

这个问题与包含已知目录的先前问题中列出的"类似"问题不同,而这里需要找到已知和未知的目录.还需要多层子目录.你们真的应该在解开"重复"之前阅读这个问题.

vba filesystemobject

28
推荐指数
2
解决办法
15万
查看次数

Firefox或Chrome中的ActiveXObject(不是IE!)

我正在尝试创建ActiveXObject(使用FieSystemObject)但它只在IE中支持.

有没有办法让它在Chrome或FF中运行?我需要读取特定给定文件夹中的所有文件,并列出这些文件.

那么,还有另一种方法吗?

javascript filesystemobject activexobject

24
推荐指数
1
解决办法
11万
查看次数

目录文件大小计算 - 如何使其更快?

使用C#,我找到了目录的总大小.逻辑是这样的:获取文件夹中的文件.总结总大小.查找是否有子目录.然后进行递归搜索.

我也尝试了另一种方法:使用FSO(obj.GetFolder(path).Size).这两种方法的时间差别不大.

现在的问题是,我在一个特定的文件夹中有成千上万的文件,它至少需要2分钟才能找到文件夹大小.此外,如果我再次运行程序,它会很快发生(5秒).我认为窗口正在缓存文件大小.

有什么方法可以减少我第一次运行程序时所花的时间吗?

c# windows winapi filesystemobject winforms

19
推荐指数
3
解决办法
2万
查看次数

JavaScript:读取文件夹中的文件

编辑:我正在尝试读取特定文件夹中的所有文件并列出其中的文件,而不是读取特定文件的内容.我只是尝试简单地创建一个FileSystemObject,它也没有做任何事情.我显示一个警告(弹出)beforfe制作FileSystemObject,然后一个警告(未显示).所以问题在于简单地创建对象.

原版的:

我试图使用JavaScript读取文件夹中的所有文件.

它是一个本地HTML文件,它不会在服务器上,所以我不能使用PHP.

现在我正在尝试读取特定给定文件夹中的所有文件,但它在我创建的点上没有做任何事情 FileSystemObject

这是我使用的代码,警报显示到2,然后停止.

    alert('1');
    var myObject, afolder, date;
    alert('2');
    myObject = new ActiveXObject("Scripting.FileSystemObject");
    alert('3');
    afolder = myObject.GetFolder("c:\\tmp");
    alert('4');
    date = afolder.DateLastAccessed;
    alert("The folder"+name+" is a temporary folder.");
Run Code Online (Sandbox Code Playgroud)

我这样做是对的吗?

谢谢!

html javascript directory filesystemobject

11
推荐指数
1
解决办法
9万
查看次数

错误:ActiveX组件无法创建对象Scripting.FileSystemObject

我的驱动器c上有一个简单的vbs文件:包含以下内容:

Set objShell = CreateObject("Scripting.FileSystemObject")
Run Code Online (Sandbox Code Playgroud)

当我试图启动它时,我收到错误

c:\ fso.vbs(1,1)Microsoft VBScript运行时错误:ActiveX组件无法创建对象:'Scripting.FileSystemObject'

我试图以管理员身份登录并执行wscript -regserver,但没有帮助.

有谁可以帮助我吗?

vbscript activex filesystemobject

8
推荐指数
1
解决办法
4万
查看次数

Excel VBA高效获取文件名功能

我需要在excel 2010中使用VBA从远程服务器上的文件夹中获取文件名集合.我有一个有效的功能,在大多数情况下它可以完成这项工作,但远程服务器经常有可怕的,可怕的网络性能问题.这意味着循环说300个文件将他们的名字放入一个集合可能需要10分钟,文件夹中的文件数量可能会增加到数千,所以这是不可行的,我需要一种方法来获取所有的文件名在单个网络请求中而不是循环.我相信它连接到占用时间的远程服务器,因此单个请求应该能够在一次通过中快速获得所有文件.

这是我目前的功能:

Private Function GetFileNames(sPath As String) As Collection
'takes a path and returns a collection of the file names in the folder

Dim oFolder     As Object
Dim oFile       As Object
Dim oFSO        As Object
Dim colList     As New Collection

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(folderpath:=sPath)

For Each oFile In oFolder.Files
    colList.Add oFile.Name
Next oFile

Set GetFileNames = colList

Set oFolder = Nothing
Set oFSO = Nothing

End Function
Run Code Online (Sandbox Code Playgroud)

excel optimization vba excel-vba filesystemobject

8
推荐指数
2
解决办法
4266
查看次数

从pdf(到excel)提取表格,pref.w/vba

我试图用vba从pdf文件中提取表格并将它们导出到excel.如果一切都按照应有的方式进行,它应该全部自动完成.问题是表格没有标准化.

这就是我到目前为止所拥有的.

  1. VBA(Excel)运行XPDF,并将当前文件夹中找到的所有.pdf文件转换为文本文件.
  2. 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
Run Code Online (Sandbox Code Playgroud)

一切都很好.但现在我遇到了从文本文件中提取表格的问题.我想要做的是VBA找到一个字符串,例如"年收入",然后将数据输出到列中.(直到桌子结束.)

第一部分并不是很困难(找到某个字符串),但我将如何处理第二部分.文本文件看起来像这个Pastebin.问题是文本没有标准化.因此,例如,一些表具有3年列(2010 2011 2012),而一些表仅有两个(或1),一些表在列之间具有更多空格,而一些表不包括某些行(例如Capital Asset,net).

我正在考虑做这样的事情,但不确定如何在VBA中进行.

  1. 查找用户定义的字符串 例如."表1:年回报."
  2. 一个.下一行发现年; 如果有两个我们将需要三列输出(标题+,2x年),如果有三个我们将需要四个(标题+,3x年)...等
    b.为每年创建标题列+列.
  3. 到达行尾时,转到下一行
  4. 一个.读取文本 - >输出到第1列
    .b.识别空格(空格> 3?)作为第2列的开头.读取数字 - >输出到第2列
    .c.(如果column = 3)将空格识别为第3列的开头.读取数字 - >输出到第3列
    .(如果column = 4)将空格识别为第4列的开头.读取数字 - >输出到第4列.
  5. 每一行,循环4.
  6. 下一行不包含任何数字 - 结束表.(可能是easiet只是一个用户定义的数字,15个字符后没有数字?结束表)

我将我的第一个版本基于Pdf进行优秀,但在网上阅读的人并不推荐OpenFile,而是FileSystemObject(尽管看起来速度要慢很多).

有什么指示让我开始,主要是在第2步?

pdf excel vba filesystemobject

7
推荐指数
1
解决办法
2万
查看次数

访问具有长路径的文件(超过260)

我正在使用Microsoft Scripting Runtime(FSO)解析文件夹并生成所有内容的列表,文件夹在网络上,结果路径最终超过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
Run Code Online (Sandbox Code Playgroud)

在某个级别StrFolder长度变为259,Set RootFldr ...文件夹行工作但是For Each Fl In RootFldr.Files给出了错误76: Path not found,可能是因为内容导致路径突破260限制.

查看Windows资源管理器时,文件夹中有文件.我正在使用Excel作为此代码的主机,因为我将结果输出到工作簿.

为了清楚地了解我的问题及其背景,我需要使用FSO(很高兴能够显示替代品,如果它们存在)来访问网络路径深度超过260个字符的文件.我需要它作为FSO,因为我的工具是获取文件夹路径和文件路径,名称,大小创建和修改.

excel vba filesystemobject fso

7
推荐指数
2
解决办法
4451
查看次数

从网络共享中删除长路径太长的文件夹

我正在尝试使用 C# 删除网络上共享位置中的文件夹。有些文件夹路径太长,Windows 无法处理。我为此尝试了多种选择。我发现最好的方法是创建一个 FileSystemObject,将 \\?\ 添加到路径中,然后在要删除的路径上调用 DeleteFolder,这适用于我的本地计算机上的太长路径,因为我映射了 C 等驱动器: 和 G: 等,但是当我尝试在网络共享文件夹上使用它时,我得到 HRESULT: 0x800A004C (CTL_E_PATHNOTFOUND) 或值不在预期范围内。

以下是我的代码:

private static void DeletePathWithLongFileNames(string path)
    {
        string tmpPath = @"\\?\" + path;
        FileSystemObject fso = new FileSystemObject();
        fso.DeleteFolder(tmpPath, true);
    }
Run Code Online (Sandbox Code Playgroud)

举例来说,网络+共享文件夹是 \\myServer\mySharedFolder\folder1\etc\etc,这将是我发送到删除函数的路径字符串,然后 tmpPath 显示为“\\\\?\ \\\\myServer\\mySharedFolder\\folder1\\etc\\etc"

我对UNC了解不多,所以我不知道这是否是错误的。我很确定我的 tmpPath 变量有问题,但我又不确定。也许这是一个语法错误,但我一生都无法弄清楚出了什么问题。先谢谢您的帮助

编辑:我相信我已经找到了答案,我现在正在测试它。到目前为止,它对我有用。如果我在以下路径 \\?\UNC\server\sharedFolder\folder1\etc\etc 上运行 DeleteFolder 方法,这似乎有效。现在我只需要弄清楚如何删除所有这些额外的斜杠。

编辑2:这确实有效,在网络上的共享文件夹上进行了测试。这只是因为我不理解 UNC 路径。

c# filesystemobject

7
推荐指数
1
解决办法
802
查看次数