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

时间:2010-02-22 22:38:40

标签: vba excel-vba networking excel

excel测试我的excel项目存储在网络驱动器上的网络连接速度有什么好方法?

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

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

关于我如何做到这一点的任何建议?

谢谢, 丹

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

3 个答案:

答案 0 :(得分:2)

我怀疑问题不在于您的Excel应用程序本身。无论是xls还是xla,文件都会被加载到客户端计算机上的RAM中。问题是800磅的大猩猩。

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

一些建议:

1)记录查询执行前后的时间,并将结果写入中心文本文件。这仅用于识别最慢的查询。先修复他最坏的罪魁祸首。

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

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

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

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

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

一切顺利

答案 1 :(得分:0)

尝试将固定数量的字符写入存储工作簿的同一目录(Workbook.Path)。在for循环中执行此操作,并重复它以便写入10,000个字符(或您选择的任何数字)。做一个时间表之前和之后。找出适当截止的位置,以秒为单位,并为超过截止时间的任何人显示消息。

答案 2 :(得分:0)

您可以使用ICMP Echo。 Microsoft拥有VisualBasic版本http://support.microsoft.com/kb/300197的代码,可以适用于VBA。