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

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

Dim app As New Excel.Application
app.Visible = False
Dim book As Excel.Workbook
Set book = app.Workbooks.Add(UserForm1.TextBox1.Text)

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

Я получаю сбой на следующем шаге

Sheets("Start").select

Думаю, рабочая книга в фоновом режиме не активна... но как я могу ее активировать?

Моя идея была:

Workbooks(UserForm1.TextBox1.Text).Activate

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

3 ответа

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

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

Когда вы пишете свой код, обращайтесь к

Workbooks("freds wrk").Worksheets("Start").Cells(1, 1)
Workbooks("freds wrk").Worksheets("Start").Range("A1")

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

With Workbooks("freds wrk").Worksheets("Start")
    .Cells(1, 1)
    .Range("A1")
end with

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

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

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

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

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

With book.Sheets("Start") .cells("A1").Select End With

Другие вопросы по тегам