通常,我使用这段代码来检索VBA中文件夹的内容。 但这在共享点的情况下不起作用。 我能怎么做 ?

Dim folder As folder

Dim f As File

Dim fs As New FileSystemObject

Set folder = fs.GetFolder("//sharepoint.address/path/to/folder")

For Each f In folder.Files

'Do something

Next f

编辑(在shahkalpesh的好评后):

如果在Windows资源管理器中输入地址,则可以访问共享点。 对共享点的访问需要进行身份验证,但是它是透明的,因为它依赖于Windows登录。

您可以使用Windows资源管理器导航到sharepoint文件夹吗?

是的! 它看起来像一个常规的网络文件夹。

我发现必须在拥有服务器权限的同时使用SharePoint上的文件的唯一方法是将WebDAV文件夹映射到驱动器号。这是实现的示例。

在VBA中添加对以下ActiveX库的引用:

Windows脚本宿主对象模型(wshom.ocx)-用于WshNetwork

Microsoft脚本运行时(scrrun.dll)-FileSystemObject

创建一个新的类模块,将其命名为DriveMapper并添加以下代码:

Option Explicit

Private oMappedDrive As Scripting.Drive

Private oFSO As New Scripting.FileSystemObject

Private oNetwork As New WshNetwork

Private Sub Class_Terminate()

UnmapDrive

End Sub

Public Function MapDrive(NetworkPath As String) As Scripting.Folder

Dim DriveLetter As String, i As Integer

UnmapDrive

For i = Asc("Z") To Asc("A") Step -1

DriveLetter = Chr(i)

If Not oFSO.DriveExists(DriveLetter) Then

oNetwork.MapNetworkDrive DriveLetter &":", NetworkPath

Set oMappedDrive = oFSO.GetDrive(DriveLetter)

Set MapDrive = oMappedDrive.RootFolder

Exit For

End If

Next i

End Function

Private Sub UnmapDrive()

If Not oMappedDrive Is Nothing Then

If oMappedDrive.IsReady Then

oNetwork.RemoveNetworkDrive oMappedDrive.DriveLetter &":"

End If

Set oMappedDrive = Nothing

End If

End Sub

然后可以在代码中实现它:

Sub test()

Dim dm As New DriveMapper

Dim sharepointFolder As Scripting.Folder

Set sharepointFolder = dm.MapDrive("http://your/sharepoint/path")

Debug.Print sharepointFolder.Path

End Sub

映射网络驱动器可能很棘手;我发现如何映射共享点有助于解决此问题。

这段代码看起来很有希望,但是Sub test()为Dim dm as New DriveMapper行抛出了"未定义用户定义类型"的编译错误。也许我缺少DLL参考? Ive添加了Microsoft脚本运行时以及Windows脚本宿主对象模型。使用Excel 2010。

对不起这么晚@ shrout1做出的回应,也许您创建了一个模块而不是一个类?

感谢您的出色解决方法。通过直接连接,我必须先手动"访问"共享点站点,然后才能建立活动连接,但是映射驱动器似乎可以解决该问题。一个问题:如何避免在调用DriveMapper类的代码完成之前取消对驱动器的映射?我还不太熟悉他们的工作方式。

@Trm有人编辑了我的文章,以使用处理方法" Class_Terminate"将代码包装在一个类中,该方法取消了驱动器的映射。当类超出范围时,驱动器将被取消映射。您可以删除" Class_Terminate"方法...

@ChrisHayes是的,我想了很多。我删除了它,然后每次打开连接时都被一堆映射驱动器卡住了。我通过将映射的驱动器号保存到内存并在模块中sub的末尾取消映射来进行了一些解决。不知道它是否是最优雅的解决方案。

使用UNC路径而不是HTTP。此代码有效:

Public Sub ListFiles()

Dim folder As folder

Dim f As File

Dim fs As New FileSystemObject

Dim RowCtr As Integer

RowCtr = 1

Set folder = fs.GetFolder("\\SharePointServer\Path\MorePath\DocumentLibrary\Folder")

For Each f In folder.Files

Cells(RowCtr, 1).Value = f.Name

RowCtr = RowCtr + 1

Next f

End Sub

要获取要使用的UNC路径,请进入文档库中的文件夹,然后下拉"动作"菜单,然后选择"在Windows资源管理器中打开"。复制在那里看到的路径并使用它。

请参阅此以启用FileSystemObject。

此外:

myFilePath = replace(myFilePath,"/","")

myFilePath = replace(myFilePath,"http:","")

还要替换空间:

myFilePath = replace(myFilePath,"","%20")

我把这个问题弄乱了一下,找到了一个非常简单的两行解决方案,只需替换'http'和所有正斜杠,如下所示:

myFilePath = replace(myFilePath,"/","")

myFilePath = replace(myFilePath,"http:","")

它可能不适用于每个人,但它对我有用

如果您使用的是安全站点(或同时考虑到这两个站点),则可能需要添加以下行:

myFilePath = replace(myFilePath,"https:","")

实际上,以上内容对我来说似乎并不完整,应该阅读https :(除了以上代码)myFilePath = Replace(myFilePath, Split(myFilePath,"")(2), Split(myFilePath,"")(2) &"@SSL"),这最终会将https:my.SharePoint.com转换为\\my.SharePoint.com@SSL\(在所有替换之后)。

恕我直言,最酷的方法是通过WebDAV(没有网络文件夹,因为通常不允许这样做)。可以通过这篇优秀文章中介绍的ActiveX Data Objects实现(代码可以直接在Excel中使用,最近使用了此概念)。

希望这可以帮助!

http://blog.itwarlocks.com/2009/04/28/accessing-webdav-in-microsoft-word-visual-basic/

原始链接已失效,但至少文本内容仍在archive.org上可用:

http://web.archive.org/web/20091008034423/http://blog.itwarlocks.com/2009/04/28/accessing-webdav-in-microsoft-word-visual-basic

截至2013年2月7日,本文链接似乎已失效。有谁知道本文是否还在其他地方?

@armstrhb:www.archive.org上有一个副本,但似乎只有文本可用,而没有图形。

我花了一些时间解决这个问题-在打开文件之前,我试图验证文件是否存在。

最终,我想出了一个使用XML和SOAP的解决方案-使用EnumerateFolder方法并提取包含文件夹内容的XML响应。

我在这里写了博客。

驱动器映射到共享点(也是https)

通过映射驱动器将共享点内容迭代为文件系统对象,对我来说很有效。技巧是如何设置映射:

然后复制路径(以http *开头)(请参见下文)

使用资源管理器或命令在地图驱动器中使用此路径(即net use N: https:://thepathyoujustcopied)

注意:https在Windows7 / 8上可以正常运行,而在XP上则不能。

这可能对您有用,但由于每台PC的驱动器号不同,因此我更喜欢采用不同的方法。这里的技巧是从共享点开始(而不是从作为Web服务器访问共享点的VBA脚本开始)。

建立与Excel工作表的数据连接

在共享点中,浏览到要监视的视图

将视图导出到excel(2010年:库工具; libarry |导出到Excel)

查看此excel时,您会发现一个数据源设置(选项卡:数据,连接,属性,定义)

您可以在vba中包含此查询,也可以在表中维护数据库链接,以通过VBA在表上进行迭代。请注意:上图没有显示实际的数据库连接(命令文本),它将告诉您如何访问我的共享点。

截至2013年9月10日,以上引用的链接似乎已失效。有机会有更新版本吗?

链接的文件不是我的。我已经在文章中添加了缺少的信息。

尝试将共享点库映射到Windows中的驱动器号。然后在代码中选择驱动器和路径。

vba访问文件服务器,使用Excel VBA获取共享点文件夹的内容相关推荐

  1. 获取AFP共享的文件夹及其权限

    获取AFP共享的文件夹及其权限 获取AFP服务的认证信息后,渗透测试人员就可以使用afp-showmount脚本获取共享的文件夹信息,以及各级用户权限信息.其中,用户包括所有者.组.Everyone和 ...

  2. 服务器文件夹共享到本地,云服务器共享本地文件夹

    云服务器共享本地文件夹 内容精选 换一换 当您成功创建私有镜像后,镜像的状态为"正常",您可以使用该镜像创建服务器实例或云硬盘,也可以将镜像共享给其他帐号,或者复制镜像到其他区域. ...

  3. outlook服务器拒绝访问文件夹,无法打开共享日历文件夹 - Outlook | Microsoft Docs

    尝试在 Outlook for Mac 中打开共享日历文件夹时没有权限错误 2021/4/8 适用于: Outlook 2019 for Mac, Outlook 2016 for Mac, Outl ...

  4. 手机网络邻居访问电脑_一起来看看手机如何访问电脑局域网共享的文件夹

    手机如何访问电脑局域网共享的文件夹?如果想要手机访问电脑局域网中共享的文件夹,那么我们需要电脑和手机同在一个网络中,并组建局域网.以前都是电脑与电脑之间组建局域网,但是今天小编分享的是手机与电脑之间组 ...

  5. android 访问公共文件夹权限_如何访问Android手机上的共享Windows文件夹 | MOS86

    本指南将向您显示在Android手机或平板电脑上访问Windows共享文件夹的方式.您可以通过简单的步骤,轻松地收听音乐,流式传输视频或从Windows(或任何SMB)共享文件夹中复制文件.有效地,这 ...

  6. 解决win10访问linux的smb共享的文件夹,拒绝访问

    问题描述 win10通过网络下自动查到了我一台linux主机所共享的文件夹,但是,没有办法访问, 可以输入凭证后,仍然的显示拒绝访问 参考文章: https://blog.csdn.net/learn ...

  7. 服务器共享目标文件夹访问被拒绝,访问被拒绝尝试在服务器上创建文件夹

    客户端注册系统的每个新项目都会创建一个文件夹来存储位于"\ Images \ Projects {ProjectID}"中的图像,其中{ProjectID}是ID项目.访问被拒绝尝 ...

  8. 获取应用程序文件夹路径的最佳方法

    我看到有一些方法可以获取应用程序文件夹路径: Application.StartupPath System.IO.Path.GetDirectoryName( System.Reflection.As ...

  9. 二级路由器下的pc如何使用映射网络驱动器的方式添加一级路由器下nas共享的文件夹

    求助:二级路由器下的pc如何使用映射网络驱动器的方式添加一级路由器下nas共享的文件夹 如何才能做到这个链接里的效果https://shadowq.com/1/3860.html 使用黑群晖设置软件软 ...

最新文章

  1. The Tail at Scale
  2. Flask练手项目之通讯录
  3. 【Python】画图海龟
  4. lnmp + swoole 安装
  5. windows命令_Windows自带强大的入侵检测工具——Netstat 命令 查询是否中木马
  6. Linux的append函数,linux block层
  7. 开机自动启动程序的操作(就是这么简单)
  8. js 调用谷歌插件截图跨域的iframe---FireShot
  9. android格式化sd卡软件,如何在各种设备中把SD卡格式化?附误格式化数据恢复方法!...
  10. 跑步时戴什么耳机好、最适合跑步用的耳机
  11. WRF学习笔记二:WRF-chem简单入门运行指南
  12. 说完列表说字典,说完字典说集合,滚雪球学 Python
  13. 【转】Mac 下钥匙串不能授权访问怎么解决--不错
  14. nginx服务器404错误页面设置完整版
  15. HDU 3636-Dragon Balls
  16. 谷歌SEO排名受哪些因素的影响?(二)
  17. 网线/双绞线上各标识CAT, AWG, PR, UTP/STP/FTP/SFTP的含义
  18. 移动端如何解决video层级最高的问题
  19. HTB-oscplike-Arctic+Grandpa+Silo
  20. php上传图片模范代码

热门文章

  1. QT 类静态函数作为回调函数
  2. Rootkit:系统灰色地带的潜伏者
  3. Python与人工智能的关系原来是这样的...
  4. 爬爬爬 —— beautifulsoup
  5. 后缀数组的基数排序实现
  6. 关于游戏现状的一点想法
  7. 跨域请求(个人笔记)
  8. otter,阿里巴巴分布式数据库同步系统
  9. 如何为自己的双目系统选取相机?
  10. 数字电子仿真实验资料大全