Vba excel открыть файл в фоновом режиме Excelka.ru - все про Ексель

Vba excel открыть файл в фоновом режиме

Vba excel открыть файл в фоновом режиме

Шустрый

Профиль
Группа: Участник
Сообщений: 84
Регистрация: 10.10.2005
Где: Москва

Репутация: 1
Всего: 1

У меня есть макрос.
Где открываются файлы на сервере, из них считывается информация и записывается в ячейки.
Все файлы xls.

Как мне открывать файлы в фоновом режиме. А то при открытии последовательном более 100 файлов получается, что на панели задач постоянное мигание )))

Опытный

Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15

Код я не тестил, но должно работать

Добавлено через 1 минуту и 10 секунд
Пардон, не заметил, что 2007-й офис. Я с ним не работал, только с 2003-м.

Профиль
Группа: Участник
Сообщений: 47
Регистрация: 30.3.2006

Репутация: нет
Всего: нет

В 2007 работает
Как вариант , не открывать файл локально а дать ссылку на ячейку этого файла

Это сообщение отредактировал(а) temr — 16.1.2009, 11:12

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль «Помогите!» таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в «Книге отзывов о работе администрации»
  • А вот тут лежит FAQ нашего подраздела

Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

Работа с внешним Excel файлом из VBA

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

Открытие файла Excel

В первой строке запускаем новый Excel, затем делаем его невидимым, в 3-й строке открываем файл fname. В последней строке получаем первый лист открытого excel-кого файла.

Альтернативный вариант открытия файла

При открытии файла можно использовать доп.параметры (приведу некоторые):

UpdateLinks — обновлять или нет внешние ссылки при открытии файла;
ReadOnly — открытие в режиме только для чтения;
Format — используемый при открытии разделитель (1 — символ tab, 2 — запятые, 3 — пробелы, 4 — точка с запятой, 5 — без разделителя, 6 — пользовательский разделитель, заданный в Delimiter);
Delimiter — пользовательский разделитель (в случае, если Format = 6);
Origin — тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);
Local — использование в Excel языка такого же, как в открываемом файле.

Читать еще:  Среднее арифметическое в excel

Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.

Записать книгу и закрыть

Для записи текущей книги (где находится макрос), можно использовать:

Чтобы сохранить или перезаписать книгу Excel без вопросов, можно применить такой вариант:

У метода SaveAs есть несколько параметров сохранения, с ними можно ознакомиться на сайте Microsoft.

Если нужно, можно закрыть книгу Excel без сохранения изменений таким образом:

Vba excel открыть файл в фоновом режиме

Спасибо! В конечном виде сделал это так:

Dim wb As Workbook

Set wb = Workbooks.Open(«Путь к файлу»)
wb.Windows(1).Visible = False

Эти макросом в фоновом режиме открыл конечную книгу, и теперь при любых изменениях в исходной книге (конечно при условии, что конечная книга открыта этим макросом) связь между ячейками не теряется. Спасибо всем! Вопрос закрыт, по-другому тут никак не сделать видимо — всё перекопали.

Ещё нашёл такой выход: запуск конечных документов (в данном случае, Книги2), в фоновом режиме, чтобы ничего видимого не висело в икселе. Тогда всё будет обновляться.
А после закрытия всех документов иксель нужно просто сохранить все книги (в том числе и скрытые).

Sub start_background()
With GetObject(«C:UsersDesktopКнига1.xlsx»)
End With
End Sub

где, «C:UsersDesktopКнига1.xlsx» — путь к файлу, который мы хотим запустить в фоновом режиме

Откройте книгу в фоновом режиме VBA Excel

Я пытаюсь использовать этот код для открытия книги в фоновом режиме.

Я получаю имя файла из текстового поля.
Моя проблема в том,:

I get a crash at the next step

Я думаю, что книга в фоновом режиме не является активным .. но как его активировать?

Но мне нужно только имя файла .. не весь путь и имя файла.
Или есть другой способ обратиться к файлу?

Читать еще:  Эксель убирает ноль перед числом

Вы могли бы попробовать
book.Sheets(«Start»).select

Я думаю, что лучше использовать оператор with

With book.Sheets(«Start»)
.cells(«A1»).Select
End With

Можно просто использовать book.Activate любой код, который нужно выполнить в новой книге. И обратите внимание, что большинство действий возможно без использования .Select . Дополнительные сведения см. В разделе Как избежать использования макросов Select in Excel VBA.

Всегда избегайте выбора или активации чего-либо, будь то ячейка, диапазон, лист или книга.

При написании кода обратитесь к

Вы также можете использовать команду With, чтобы сделать его короче.

Когда ваш код выполняется, конечный пользователь просто начнет нажимать кнопки, а затем все пойдет не так, потому что то, что вы думаете, что активно, больше не является активным. И то, что вы считаете выбранным, больше не является.

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

И оператор with заставит ваш код работать быстрее. Книга объектов Excel, лист, ячейка и диапазон удивительно медленные для обработки компьютера.

excel vba режиме Открыть файл Excel для чтения с помощью VBA без отображения

vba открыть файл excel для чтения (8)

Я хочу искать через существующие файлы Excel с помощью макроса, но я не хочу отображать эти файлы, когда они открываются кодом. Есть ли способ открыть их «на заднем плане», так сказать?

Откройте их из нового экземпляра Excel.

Вы должны помнить, чтобы очистить после того, как вы закончили.

Если это соответствует вашим потребностям, я просто буду использовать

с дополнительным преимуществом ускорения вашего кода, вместо замедления его использования с помощью второго экземпляра Excel.

Проблема с ответами iDevlop и Ashok заключается в том, что основной проблемой является недостаток дизайна Excel (по-видимому), в котором метод Open не соблюдает параметр Application.ScreenUpdating для False. Следовательно, установка этого параметра в False не принесет пользы этой проблеме.

Читать еще:  Обучение эксель

Если решение Патрика Макдональда слишком обременительно из-за накладных расходов на запуск второго экземпляра Excel, то лучшим решением, которое я нашел, является минимизация времени, в течение которого открытая рабочая книга видна, как можно быстрее активировать исходное окно:

Чтобы открыть книгу как скрытую в существующем экземпляре Excel, используйте следующую команду:

Более простой подход, который не включает в себя управление активными окнами:

Из того, что я могу сказать, индекс Windows в книге всегда должен быть 1 . Если кто-нибудь знает какие-либо условия гонки, которые сделают это неверным, пожалуйста, дайте мне знать.

Не уверен, что вы можете открыть их невидимо в текущем экземпляре excel

Вы можете открыть новый экземпляр excel, хотя, скрыть его, а затем открыть книги

Как и другие опубликованные, убедитесь, что вы очистили после того, как закончите с любыми открытыми книгами

Даже если у вас есть ответ, для тех, кто находит этот вопрос, также можно открыть электронную таблицу Excel в виде хранилища данных JET. Заимствуя строку подключения из проекта, на котором я его использовал, он будет выглядеть следующим образом:

Обратите внимание, что «RegistrationList» — это название вкладки в книге. В Интернете есть несколько руководств, в которых вы можете узнать, что вы можете и не можете сделать доступ к листу таким образом.

Просто подумал, что я бы добавил. 🙂

Откройте книгу как скрытую, а затем установите ее как «сохраненную», чтобы пользователи не запрашивали ее закрытие.

Это несколько является производным от ответа, опубликованного Ашоком.

Делая это таким образом, хотя вам не будет предложено сохранить изменения обратно в файл Excel, в котором вы читаете. Это здорово, если файл Excel, который вы читаете, предназначен как источник данных для проверки. Например, если книга содержит названия продуктов и данные о ценах, она может быть скрыта, и вы можете показать файл Excel, который представляет собой счет-фактуру с выпадающими списками для продукта, который проверяется в этом прейскуранте.

Затем вы можете сохранить прейскурант в общем месте в сети и сделать его доступным только для чтения.

Ссылка на основную публикацию