VBA: проверить скорость подключения сетевого диска - PullRequest
1 голос
/ 23 февраля 2010

Какой хороший способ для Excel проверить скорость сетевого подключения к сетевому диску, на котором хранится мой проект Excel?

Многие из моих клиентов жаловались на то, что мой проект Excel работает слишком медленно (работает из сети). Это связано с тем, что некоторые офисы имеют более медленные соединения, чем другие, с сетевым диском, на котором он (и его серверная часть доступа) хранятся.

Я думаю, что было бы лучше попытаться написать макрос, который измеряет скорость соединения с тем местом, из которого выполняется лист Excel, а затем, если он ниже определенного порога, у меня будет какое-то предупреждение, сообщающее Пользователь должен загрузить копию локально.

Любые рекомендации, как я могу это сделать?

Спасибо, Dan

Пока моя единственная идея - вывести 10000 повторяющихся символов в файл со случайным именем в ActiveWorkbook.Path, а затем удалить его. На основании Now () до и после этой операции я могу оценить скорость соединения. У этого есть много потенциальных проблем ... полный диск, права на запись, баланс между временем выполнения и точностью.

Ответы [ 3 ]

2 голосов
/ 23 февраля 2010

Я подозреваю, что проблема не в вашем приложении Excel как таковом. Будь то xls или xla, файл загружается в RAM на клиентском компьютере. Проблема в горилле на 800 фунтов.

Как вы, возможно, знаете, Access не является базой данных клиент-сервер, несмотря на то, что MDB может находиться на файловом сервере. Когда вы запускаете запрос (SQL или QueryDef) от клиента, все данные, необходимые в запросе, передаются клиенту. Это отличается от истинной клиент-серверной базы данных (например, SQL Server или Oracle), где запрос разрешается на сервере и только результаты возвращаются клиенту.

Некоторые предложения:

1) Запишите время до и после выполнения запроса и запишите результаты в центральный текстовый файл. Это служит только для выявления самых медленных запросов. Сначала исправь худших преступников.

2) Используя копию MDB, поэкспериментируйте с индексированием таблиц. Посмотрите, какие неуникальные поля используются в предложениях where. Уменьшите количество соединений как можно больше.

3) Если это в основном инструмент отчетности, можете ли вы денормализовать таблицы? Доступ сильно страдает из-за проблем с глубиной таблицы.

4) Можете ли вы кэшировать данные локально? В качестве одного из решений я позволил пользователям выбирать, какие данные им требуются (обычно часть целого), а затем кэшировать их на диске C :. Последующие запросы были выполнены к локальным данным.

5) Вы используете общую книгу? Избегайте этого, если это возможно.

6) Поговорите с вашими пользователями. Узнайте точно, что они находят медленными. Когда. Какие действия они предпринимали.

Всего наилучшего

0 голосов
/ 30 июля 2013

Вы можете использовать ICMP Echo. У Microsoft есть код для VisualBasic версии http://support.microsoft.com/kb/300197, который может быть адаптирован для VBA.

0 голосов
/ 02 апреля 2010

Попробуйте записать фиксированное количество символов в один и тот же каталог, в котором хранится книга (Workbook.Path). Сделайте это в цикле for и сделайте так, чтобы было написано 10 000 символов (или любое другое число, которое вы выберете). Сделайте заявление о сроках до и после. Выясните, где соответствующая отсечка находится в секундах, и отобразите сообщение для всех, кто занял больше времени, чем ваша отсечка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...