Vba excel переключение между книгами

Обновлено: 07.07.2024

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

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

ну насколько я понял, это винда виновата, а не Excel (мож я ошибаюсь)

ну насколько я понял, это винда виновата, а не Excel (мож я ошибаюсь) Nic70y

Скрины не о чём - я могу такие же сделать, и переключаться обоими способами, как угодно.
В чём проблема? Может поменялась версия Excel?
Или система? У меня сейчас на работе актуальны оба способа, а дома 3055776.jpg не всегда срабатывает, даже может вообще не срабатывает (точно не скажу).
Дома Вин10 и XL2010, на работе Вин7 и офис360.

Скрины не о чём - я могу такие же сделать, и переключаться обоими способами, как угодно.
В чём проблема? Может поменялась версия Excel?
Или система? У меня сейчас на работе актуальны оба способа, а дома 3055776.jpg не всегда срабатывает, даже может вообще не срабатывает (точно не скажу).
Дома Вин10 и XL2010, на работе Вин7 и офис360. Hugo

Hugo, стоит вин 8.1. свежеустановленная , свежеустановленный офис 2010 , 2 дня работало обоими способами нормально , а теперь только первым можно переключить , тоесть когда курсор наводишь вниз на панель задачь на книгу , там она только 1а находиться , другие не видит , а раньше все прекрасно видело как на рисунке 3055776.jpg..в этом то и проблема, что это как то можно сделать чтоб всегда снизу показывались все книги при наведении курсором, а то очень неудобна когда много книг переключаться как на первой картинке.проблема точно не в винде.

Hugo, стоит вин 8.1. свежеустановленная , свежеустановленный офис 2010 , 2 дня работало обоими способами нормально , а теперь только первым можно переключить , тоесть когда курсор наводишь вниз на панель задачь на книгу , там она только 1а находиться , другие не видит , а раньше все прекрасно видело как на рисунке 3055776.jpg..в этом то и проблема, что это как то можно сделать чтоб всегда снизу показывались все книги при наведении курсором, а то очень неудобна когда много книг переключаться как на первой картинке.проблема точно не в винде. Nikadim

Переход между книгами при активной UserForm VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB
Не знаю, может вопрос глупый но я в затупе!
Есть база, при открытии книги запускается форма (их там много).
В эти формы по мере необходимости надо заносить (копировать) из различных excel документов данные . Но при активной UserForm нет никакой возможности не то что бы запустить но и даже активировать раннее открытый другой excel файл.
есть ли выход У формы есть свойство ShowModal
Значение этого свойства по умолчанию - TRUE
Установите это свойство в FALSE, и проблема исчезнет.

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216

Точно .
Спасибо большое!- не знал!!
Теперь другая проблема, появился доступ к листам самой базы- а это не хорошо.Я специально поставил на всех формах запрет закрытия по крестику и пароль который убирается со всех листов книги при открытии книги(чтобы не мешал работе макросов) и одновременном запуске главной формы а при закрытии (закрыть можно только с главной) происходит установка пароля на все листы и автозакрытие книги. Таким образом я не давал возможность юзеру попасть на листы этой базы, даже если он в момент запуска отключит макросы можно только полистать листы - пароль снят не будет. Тоесть в Вашем предложенном варианте появляется доступ к листам базы тогда когда уже пароль снят и там можно накуралесить делов тока держись - кладовщицы народ шустрый .
Наверно в таком случае мне надо подумать над другим способом защиты листов базы, чоб макрос работал а ручки нет. А как на счет скрытых листов.
На тулбаре "Элементы управления" есть кнопка "Свойства".
Стоя на листе в свойстве Visible можно установить значение 2, и тогда лист нельзя будет сделать видимым даже при помощи Формат/Лист/Показать (только из редактора VBA)
Тогда может и заморочки с паролями не понядобятся? Спасибо!
Мысль конешно интересная но как это сделать в моём случае?
число листов в базе колеблется в районе 200 и самое интересное их число непрерывно (в процессе работы с базой) изменяется программно, как добавляются так и удаляются, а пользователь видит только первый лист за формой которому я просто поставил зелёный фон и ярлычки от листов которые он не может активировать(поэтому он и не видит что происходит на рабочих листах). Если бы это сделать как с установкой/снятием паролей одновременно на все листы сколько бы их там не было который я использую

Нет ничего проще

If Sh.Index>1 then Sh.Visible=2

. и спрятали всё, кроме первого

Действительно! Что то я протупил.
но теперь другое, иногда программе надо выбрать лист (например перед загрузкой диапазона в комбобокс из 6 колонок), метод селект завершен неверно, наверно надо перед этим на время делать так Sh.Visible=-1 а потом Sh.Visible=2
Я на верном пути ? Или есть другой выход?
Большой спасибо за помощь!

Для подобных задач можно придумать несколько вариантов реализации.

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

полностью откажитесь от использования методов Select и Activate в своём коде.
В 95 % случаев их использование не требуется, и только замедляет выполнение кода.

В любом случае, для записи в комбобокс использование метода Select не требуется.

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216

Существующая книга открывается из кода VBA Excel с помощью метода Open:

В кавычках указывается полный путь к открываемому файлу Excel. Если такой файл не существует, произойдет ошибка.
Проверить существование файла можно с помощью функции Dir:

Или, если файл существует, можно сразу его открыть:

Создание новой книги

Новая рабочая книга Excel создается в VBA с помощью метода Add:

Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:

В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».

Обращение к открытой книге

Обращение к активной книге:

Обращение к книге с выполняемым кодом:

Обращение к книге по имени:

Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.

Как закрыть книгу Excel из кода VBA

Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:

Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:

Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:

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

30 комментариев для “VBA Excel. Рабочая книга (открыть, создать новую, закрыть)”

Если речь идет об обновлении связей между книгами, то попробуйте так:

Здравствуйте, Вячеслав!
Для выбора книги в определённой папке используйте Стандартный диалог выбора файлов Application.GetOpenFilename.

закрывает саму книгу, но при этом сама прога остаётся висеть со своим интерфейсом. Можно нажать Ctlr+O и открыть какой-нибудь xls-файл.
При этом на компе могут быть открыты другие файлы, поэтому команда

не допустима.
Что делать?

Сергей, используйте глобальные переменные, если файл Excel открывается и закрывается разными процедурами (переменные позволят закрыть тот самый файл и тот самый экземпляр приложения, в котором открыт файл):

Set myWorkbook = myExcel . Workbooks . Open ( "C:\Users\. xlsx" )

А как открывать книгу, если имя файла совпадает с названием из массива.
То есть есть массив переменных которые записаны в столбец начиная с столбца А строки 2. Названия всегда разные.но совпадают с названием файла. Можно ли поочередно открыть их для редактирования через VBA

Привет, YAN!
Используйте следующий код для открытия по очереди файлов Excel, имена которых записаны в первый столбец со второй ячейки:

Workbooks . Open ( " C : \ Users \ Public \ " & Cells ( n + 2 , 1 ) )

Объявление глобальной переменной n размещено в разделе Declarations программного модуля. Число 15 соответствует номеру строки последней ячейки диапазона с именами рабочих книг.

имеется 2 книги (обе открытые)

Используя ссылку (без ручного ввода) надо обратиться Книга 2, скопировать 5 строк ниже ссылки (строка6:строка10) и вставить в рабочую книгу(Книга 1)

Этот код VBA копирует пять строк под указанной ячейкой из открытой книги Excel по адресу из ячейки D4 Листа1 текущей книги и вставляет их в текущую книгу в пять строк под ячейкой D4 Листа1:

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

Проблема в том, что когда я добираюсь до части .Activate, Excel читает, что индекс находится вне диапазона.

Что же мне делать?

1 ответ

Я использую Apache POI для создания excel листов (формат. xls) и использовал следующий фрагмент кода для создания гиперссылок, которые ссылаются на другой лист в том же document/workbook. HSSFSheet summarySheet = workbook.createSheet(Target Sheet); Hyperlink targetLink =.

я боролся с этим в течение нескольких часов, и я хотел бы попросить вас о помощи, какой код VBA и как я должен это реализовать, поскольку у меня есть около 30 вкладок, и я хотел бы создать своего рода выпадающий список, чтобы упростить переключение между вкладками. Смотрите изображение ниже:

Похоже , что вы оба проходите через r , используя for , и увеличиваете r в своем for . Я также нигде не вижу c , пока он не будет использован.

Кроме того, вместо использования Active / Select , как уже указывалось BruceWayne, явно определите свои листы и диапазоны.

То же самое для ws2 и ThisWorkbook.Sheets("Compiled Data") .

Наконец, вместо того, чтобы устанавливать переменные, почему бы просто не ввести данные прямо?

Похожие вопросы:

Фон: У меня есть файл excel с двумя листами, а именно 'sheet1' и 'sheet2'. Оба листа имеют одинаковые заголовки. Лист1 - заголовок начинается с columnB, а Лист2 - с columnA. Первый заголовок(на.

У меня есть один лист с кодом VBA со многими переменными и константами, и я хотел бы использовать эти переменные даже в коде VBA другого листа. К сожалению, код разделен между листами и требует.

Я хочу сравнить два листа в excel, и если vba найдет дубликаты, он их удалит. Я искал некоторое время и, наконец, нашел здесь то, что мне нужно. Как быстро удалить дубликаты между двумя excel.

Я использую Apache POI для создания excel листов (формат. xls) и использовал следующий фрагмент кода для создания гиперссылок, которые ссылаются на другой лист в том же document/workbook. HSSFSheet.

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

Поэтому я пытаюсь выполнить сложную передачу данных между одним листом master и несколькими листами sub. Сегодня мой первый день с Excel VBA, так что я довольно потерялся, ха-ха. Я решил начать с.

У меня в трудовой книжке два разных листа. Лист 1 и лист 2. Мне нужно сделать vlookup между этими двумя листами (столбец на обоих листах), и если лист 1 содержит какой-либо элемент из листа 2, то.

Всем привет и заранее спасибо. В настоящее время у меня есть VBA в моей книге, чтобы скопировать строки из Demand Log в Change Log, когда ячейки в столбце O имеют определенное значение. VBA работает.

Я пытаюсь написать макрос, который меняется между активными листами только через заданное количество времени. У меня есть несколько скрытых листов, и в настоящее время этот код приведет меня к.

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

Читайте также: