VBA:测试网络驱动器连接速度

VBA:测试网络驱动器连接速度,vba,excel,networking,Vba,Excel,Networking,excel测试网络连接到存储excel项目的网络驱动器的速度的好方法是什么 我的许多客户一直抱怨我的excel项目运行太慢(在网络上运行)。这是因为一些办公室与存储它(及其访问后端)的网络驱动器的连接速度比其他办公室慢 我认为最好尝试编写一个宏来测量与excel工作表运行位置的连接速度,如果连接速度低于某个阈值,我会收到一些警告消息,告诉用户应该在本地下载副本 有没有关于我如何做到这一点的建议 谢谢, 丹 到目前为止,我唯一的想法是将10000个重复字符输出到ActiveWorkbook.Pat

excel测试网络连接到存储excel项目的网络驱动器的速度的好方法是什么

我的许多客户一直抱怨我的excel项目运行太慢(在网络上运行)。这是因为一些办公室与存储它(及其访问后端)的网络驱动器的连接速度比其他办公室慢

我认为最好尝试编写一个宏来测量与excel工作表运行位置的连接速度,如果连接速度低于某个阈值,我会收到一些警告消息,告诉用户应该在本地下载副本

有没有关于我如何做到这一点的建议

谢谢, 丹


到目前为止,我唯一的想法是将10000个重复字符输出到ActiveWorkbook.Path中一个随机命名的文件中,然后将其删除。根据此操作前后的Now()值,我可以估计连接速度。这有很多潜在的问题。。。完整驱动器、写入权限、运行时和准确性之间的平衡。

我怀疑问题不在于Excel应用程序本身。无论是XLS还是XLA,文件都被加载到客户端机器上的RAM中。问题是这只重达800磅的大猩猩

您可能知道,Access不是客户机-服务器数据库,不管MDB可能位于文件服务器上。从客户端运行查询(无论是SQL还是QueryDef)时,查询中所需的所有数据都会传输到客户端。这与真正的客户机-服务器数据库(想想SQL server或Oracle)不同,在该数据库中,查询在服务器上解析,结果只返回给客户机

一些建议:

1) 记录查询执行前后的时间,并将结果写入中心文本文件。这只用于识别最慢的查询。先解决最坏的罪犯

2) 使用MDB的副本,试验表索引。查看where子句中使用的非唯一字段。尽可能减少连接

3) 如果这主要是一个报告工具,您可以对表进行非规范化吗?Access严重受到表深度性能问题的影响

4) 你能在本地缓存数据吗?如果有一个解决方案,我允许用户选择他们需要的数据(通常是整个数据的一小部分),然后将其缓存在他们的C:驱动器上。对本地数据执行了后续查询

5) 您正在使用共享工作簿吗?尽可能避免这种情况

6) 与用户交谈。准确地找出他们发现的慢。什么时候他们采取了什么行动


最好的方法是尝试将固定数量的字符写入工作簿存储的同一目录(workbook.Path)。在for循环中执行此操作,并重复此操作,以便写入10000个字符(或您选择的任何数字)。在之前和之后做一个计时陈述。以秒为单位计算出适当的截止时间,并为超过截止时间的任何人显示一条消息。

您可以使用ICMP Echo。Microsoft有VisualBasic版本的代码,该版本可适用于VBA。

下载本地副本是否一定能解决受影响办公室的速度问题?是的。access后端是800 MB,它使用数据库中的所有表,因此需要大量的速度。我显著地规范了我的数据库,这提供了良好的速度和空间节约。我已经做了很多索引,并且认为我已经为这两个查询做了最好的优化(通过更改where语句)。在这一点上,我不认为它可以得到任何更好的,所以我只是试图找出如何测试网络速度。