|
Борьба с эксель
|
|||
---|---|---|---|
#18+
Здравствуйте. Нужно программно открыть-закрыть несколько экселевских файлов. Иногда эксель при этом выкидывает сообщения. Самое популярное: "эта книга содержит связи...". Прога при этом, естественно виснет. Есть ли способ перехватить из VBA это сообщение и обработать его? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 14:35 |
|
Борьба с эксель
|
|||
---|---|---|---|
#18+
l-evgeneвыкидывает сообщения. Самое популярное: "эта книга содержит связи...". Прога при этом, естественно виснет. Метод Workbooks.Open имеет кучу аргументов, в т.ч. UpdateLinks и ReadOnly. Поиграйтесь, возможно помогут. l-evgeneНужно программно открыть-закрыть несколько экселевских файлов. Вы бы объяснили подробнее задачу. Из Акса запросом можно получить данные из любой ячейки или смежного диапазона ячеек с первого листа, даже не зная его имени или с любого листа, если имя известно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 16:03 |
|
Борьба с эксель
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Вы бы объяснили подробнее задачу. Из Акса запросом можно получить данные из любой ячейки или смежного диапазона ячеек с первого листа, даже не зная его имени или с любого листа, если имя известно.Подробнее: 100 файлов нужно открыть, найти в каждом какой-то текст и закрыть. Хочется сделать это в невидимом режиме, чтобы перед глазами не мигало. Но если эксель при этом выдает сообщение или диалоговое окно, прога ждет на него ответа, создается впечатление, что повисла. UpdateLinks помог в одном случае. В другом случае (формат эксель 95) я отключил приглашение сохранить файл (причем для этого использовал и "Workbooks(strИмяФайла).Close acSaveNo" и "Application.DisplayAlerts = False"). Так он без спросу вывалил диалоговое окно "сохранить как". Опять тормоз, народ обижается. Вобщем, первоначальная задача - именно открыть-закрыть 100 файлов и, если в одном из них есть "тормоз", остановить прогу, пусть даже с ошибкой. Чтобы проинформировать юзера, что у него кривой файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 16:49 |
|
Борьба с эксель
|
|||
---|---|---|---|
#18+
l-evgeneесли эксель при этом выдает сообщение или диалоговое окноТак отключить... делов-то. А ещё лучше - обращаться к данным через ОДБЦ, он точно дурацких вопросов не задаёт... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 19:39 |
|
Борьба с эксель
|
|||
---|---|---|---|
#18+
Akinal-evgeneесли эксель при этом выдает сообщение или диалоговое окноТак отключить... делов-то. А ещё лучше - обращаться к данным через ОДБЦ, он точно дурацких вопросов не задаёт...ОДБЦ на самом деле позволяет работать с эксельным файлом, как будто ты его открыл и ручками стучишь? Не подскажете, где почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 21:19 |
|
Борьба с эксель
|
|||
---|---|---|---|
#18+
l-evgene100 файлов нужно открыть, найти в каждом какой-то текст и закрыть. Код: vbnet 1. 2.
Этот код открывает Recordset на основе диапазона ячеек из 20 столбцов и 65000 строк на первом листе в XLX файле. Данные в первой строке используются как имена полей. Незадействованные строки внизу и столбцы справа игнорируются. Для XLSX и XLSM параметр "Excel 8.0" нужно заменить на "Excel 12.0 XML", а для XLSB - на "Excel 12.0". Если все ваши файлы имеют одинаковую структуру и "какой-то текст" ищется в конкретных столбцах, то текст запроса нужно изменить так, что он будет возвращать только нужные поля и добавить условие отбора. Иначе искать значение можно методами FindFirst, FindNext и т.д. Если данные начинаются с 1-й строки, то вместо "HDR=Yes" укажите "HDR=No". Тогда имена полей будут иметь вид F1,F2 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2017, 09:38 |
|
|
start [/forum/topic.php?fid=45&fpage=75&tid=1612408]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 137ms |
0 / 0 |