我正在遇到文件系统对象可能存在的“问题”,这导致了一个关于VBA中的文件系统对象如何工作的功能等问题与“别的东西”(我不知道)如果有替代方法可以在Excel中使用我正在做的事情.net等我不知道有什么更好的地方可以问,而且我不确定该为自己研究什么.所以我来了!
所以!为了这个问题.简短的解释是我遍历文件夹,收集文件信息(名称,扩展名,完整路径等)并将其放入电子表格中.我最终使用此信息将文件复制到新位置.但是,在大规模(1,000个文件)中,这似乎在本地工作得很好,但在网络位置(在工作中)它相当慢.它将咀嚼1,500个文件,等待一段时间,再做1,500多个等等.列出或复制文件时.同样,在本地完成时不会出现这种情况,它只会毫无问题地运行,所以我可以假设它可能与我的代码无关.这几乎就像网络间歇性地打开和关闭一个门.
或者,从最终用户的角度使用其他程序(我尝试使用我的程序,在我们的工作网络上使用的相同文件),没有任何上述延迟,它会更快.我假设替代程序正在使用某些版本的.net,如果重要的话.长话短说,我不认为我本来可以责怪我们的网络因为我遇到的速度问题.
所以我的问题/好奇心/问题归结为几个关键点:
– VBA中的FSO与.Net中的默认库之间有什么区别?我遇到的问题原因之间的区别是什么?显然,可以比完成这些数据更快地读取此类数据.
– FSO不打算以这种方式使用(通过网络,使用大量远程数据,还是……?)?它只是过时/过时了吗?有没有可以通过VBA使用的替代方案?
– 我只是模糊地了解我们的网络以与本地驱动器不同的方式运行.它存储了数TB的数据等,我不确定访问本地驱动器和网络位置之间的差异是什么.我知道我没有提供可能对诊断非常有益的网络细节,遗憾的是我不知道这些信息.我想我只是问它是否“潜在地”解释了以这种方式使用FSO与某些/所有类型的网络并不是它的意思.是否有可能以这种方式设置网络以限制我尝试与之交互的方式?
– 即使我在本地没有遇到任何问题,我的代码中的某些东西是否可能对网络位置和本地驱动器更加负担?
感谢您提供的任何见解.
Finch042承认,他对于访问网络服务器的文件系统与本地文件系统时的不同之处只是“模糊不清”,他的问题实际上是关于这两种情况之间的相对速度不同.这里的所有其他帖子都假设问题在于他的设计选择和/或编码技术,但我认为基本问题没有得到解答:为什么网络文件操作会慢得多?简短的回答是,网络文件系统位于LAN电缆末端的另一台计算机光盘上(或者更糟糕的是,Wifi信号),并且这种中间技术的数据传输带宽比电路板之间的电子设备更受限制.计算机的处理器及其本地光盘.确实,相对于石器时代而言,现代LAN容量的速度非常快,但它们仍然比PC主板上的光盘接口电子设备慢得多.因此,访问远程文件时,您将始终遇到一定程度的性能下降.
此外,许多现代服务器场系统可能包括用于数据完整性维护的镜像(即存储冗余),并且还可能包括自动版本备份功能,这两者都可以增加对某些服务器操作的访问时间,尤其是在编写新文件或更新现有文件时那些.
至于与服务器之间的数据传输速率的波动,Finch042将其描述为数据流的明显“门控”:无论何时使用通用访问技术,例如LAN系统和共享服务器,通常都是与试图做类似事情的其他人竞争.例如,传统以太网等局域网技术实际上允许各种用户踩踏彼此的传输尝试,当这确实导致尝试失败时,它会重新开始直到成功.这种设计可以简化交易,从而实现最终的整体可靠性,从而实现吞吐速度的(通常)轻微损失.但是当网络需求很高时,它会导致所有用户的吞吐量急剧下降.
类似地,文件服务器具有有限的服务文件系统访问请求的能力,并且它也可能在高需求时变得过载.
我怀疑Finch042的经验可能与这些问题有关,特别是如果他的组织的网络和服务器系统逐渐增长,因此以非优化的方式,长时间,和/或处于或接近其容量限制.他对数据传输速率不一致的经验可能只是普通共享网络/服务器系统的需求起伏不定.
此外,请注意,病毒防护系统可能会干扰文件访问速度,尤其是对于网络服务器文件.