Обращение эта книга excel

Открытие книги Excel из кода VBA. Проверка существования книги. Создание новой книги, обращение к открытой книге и ее закрытие. Методы Open, Add и Close.

Открытие существующей книги

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

Workbooks.Open Filename:=«D:test1.xls»

или

Workbooks.Open («D:test1.xls»)

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

Проверка существования файла

Проверить существование файла можно с помощью функции Dir. Проверка существования книги Excel:

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    MsgBox «Файл существует»

End If

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

If Dir(«D:test1.xls») = «» Then

    MsgBox «Файл не существует»

Else

    Workbooks.Open Filename:=«D:test1.xls»

End If

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

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

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

Workbooks.Add

ActiveWorkbook.SaveAs Filename:=«D:test2.xls»

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

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

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

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

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

Workbooks(«test1.xls»)

Workbooks(«test2.xls»)

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

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

Workbooks(«test1.xlsx»).Close

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

Workbooks(«test1.xlsx»).Close  SaveChanges:=False

или

Workbooks(«test1.xlsx»).Close  (False)

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

Workbooks(«test1.xlsx»).Close  SaveChanges:=True

или

Workbooks(«test1.xlsx»).Close (True)


Фразы для контекстного поиска: открыть книгу, открытие книги, создать книгу, создание книги, закрыть книгу, закрытие книги, открыть файл Excel, открытие файла Excel, существование книги, обратиться к открытой книге.


 

SergKh

Пользователь

Сообщений: 4
Регистрация: 01.08.2018

#1

01.08.2018 12:59:02

Выполнение последней строки ниже в 64-разрядной среде вызывает ошибку

Run-time error ‘9’:
Subscript out of range

Код
Private Sub Имя()

Dim dtLast_day As Date
Dim strFileName As String, strFilePath As String, strFullFileName As String
Dim strFilePath_i As String, strSheetName  As String
Dim l As Integer
    strFilePath = "K:UPKпуть..."
    Workbooks("Сбор статистики авт.").Sheets("Дата актуальности").Activate


В 32-разрядной среде все нормально (открывается ОДИН и ТОТ же сетевой файл). Почему это — здесь нет ни Declare, ни Long, которые надо редактировать для 64-разрядной среды ???

Изменено: SergKh01.08.2018 22:45:54

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

Быть может стоит указать и расширение книги.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Код в сообщении нужно оформлять с помощью кнопки <…>

 

SergKh

Пользователь

Сообщений: 4
Регистрация: 01.08.2018

skais675, у книги нет расширения. Расширение есть у файлов. Но я тем не менее попробовал и конечно не помогло.

vikktur, исправил.

Изменено: SergKh01.08.2018 15:01:20

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

#5

01.08.2018 15:13:13

Цитата
SergKh написал:
у книги нет расширения

Проверьте. Откройте любую книгу и выполните макрос

Код
Sub test()
  MsgBox ActiveWorkbook.Name
End Sub

Пример из #1 не понятен. В строке 8 активируется книга, открытие которой не показано.
В названии темы упоминание о 64-разрядной среде не при чем.

Владимир

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

#6

01.08.2018 16:06:56

SergKh

Ну до кучи укажите тогда уже и полный путь+файл+расширение.
Ну а также рекомендовал бы сначала

Код
Workbooks("...").Activate

а потом

Код
Sheets("...").Select.

И стало бы ясно в чем проблема.

Изменено: skais67501.08.2018 16:14:30

Мой канал

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

А Sheets(«…»).Select может и не сработать… и не по причине отсутствия такого листа. Кстати, в теме опять нет примера…

 

SergKh

Пользователь

Сообщений: 4
Регистрация: 01.08.2018

sokol92, skais675, вы совершенно правы с именем книги, причина именно в отсутствии расширения. Проблема РЕШЕНА, ОГРОМНОЕ СПАСИБО!

Но только в Office16 похоже расширение является обязательным (и показывается командой MsgBox ActiveWorkbook.Name), его отсутствие вызывает ошибку, а в Office10 — нет (и не обязательно, и не показывается командой MsgBox ActiveWorkbook.Name, поэтому я так и заявил поначалу, и ошибок нет). Вот и получилось — файл работал около года на Office10, но только неделю назад пришлось перейти на Office16 и …

Так что название темы действительно можно поменять, только не знаю как.

Еще раз ОГРОМНОЕ СПАСИБО!

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

#9

01.08.2018 16:21:38

Цитата
Hugo написал:
А Sheets(«…»).Select может и не сработать… и не по причине отсутствия такого листа.

Если книга активирована и он видим, и имя верно, тогда почему?

Мой канал

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

SergKh

, как же Вы пробовали в #4, что потом получилось в #8?

Изменено: skais67501.08.2018 16:23:41

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

skais675,  если код в модуле другой книги. Именно книги, а не в стандартном. А как там по факту — никому неизвестно…
Это если писать раздельно, как Вы подсказали, без явного указания родителя.

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

Hugo

Я ж написал активируем книгу а потом select листа.

Изменено: skais67501.08.2018 16:29:46

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Проверили? Ну ведь точно не проверяли :)

Изменено: Hugo01.08.2018 16:33:58

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

#14

01.08.2018 16:42:08

Цитата
Hugo написал:
Проверили? Ну ведь точно не проверяли

Проверил, все как я и говорил — не понимаю Вас?
Вот пример:

Прикрепленные файлы

  • test2.xlsx (8.3 КБ)
  • test1.xlsm (17.09 КБ)

Изменено: skais67501.08.2018 16:49:53

Мой канал

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#15

01.08.2018 16:49:58

Цитата
skais675 написал:
не понимаю Вас?
Цитата
Hugo написал:
если код в модуле другой книги. Именно книги, а не в стандартном.
 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

Попробовал и в модуль книги, тоже открыл как следует но выдал сообщение «400».

Hugo

Вы бы уже пояcнили почему происходит эта ошибка?

Прикрепленные файлы

  • test2.xlsx (8.3 КБ)
  • test1.xlsm (18.72 КБ)

Изменено: skais67501.08.2018 22:44:23

 

SergKh

Пользователь

Сообщений: 4
Регистрация: 01.08.2018

skais675

на вопрос #10. Первый раз наверное ошибку при проверке допустил, вот и не помогло, то же самое сообщение вылезло. Но когда увидел что написал MsgBox, уже очень внимательно перепроверил. Остальные после #10 вопросы похоже не ко мне, так что не отвечаю.  

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

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

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

#19

01.08.2018 16:59:04

Hugo

однако макрос из модуля книги все делает и лист выделяет из другой книги все как нужно , но вот сообщение выдает. Потому

Цитата
Hugo написал:
Потому что код из модуля ЭтаКнига будет искать лист у себя, а не в активной книге.Точно так же как и код из модуля листа ищет диапазоны только у себя.

не соответствует действительности.
файлы в #17

Изменено: skais67501.08.2018 17:00:39

Мой канал

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#20

01.08.2018 17:05:03

Цитата
skais675 написал:
не соответствует действительности

Соответствует. Мат.часть вещь упрямая и непоколебимая :)
Если Вы в модуле ЭтаКнига пишите Sheets, то эта коллекция по умолчанию относится к той книге, в модуле которой это написано. Т.к. сначала коллекции и методы определяются для модуля класса, в котором записан код.
Если же записать Workbooks(«бла-бла.xls»).Sheets(«name») — то ошибки это не вызовет, т.к. явно указано из какой книги брать коллекцию Sheets.
И еще раз уточним: именно при записи в модуле ЭтаКнига(thisWorkbook). В случае со стандартными модулями коллекции и свойства будут определены для активной книги.

Изменено: Дмитрий(The_Prist) Щербаков01.08.2018 17:05:54

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#21

01.08.2018 17:06:06

Цитата
skais675 написал:
из модуля книги все делает и лист выделяет

— у меня он даже книгу не открывает, ну да это ладно.
Ну а про выделение листа — Вы не пробовали книгу сохранить с другим активным листом? :)

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#22

01.08.2018 17:09:25

Цитата
skais675 написал:
файлы в #17

там даже путь к открываемой книге не указан :) Следовательно если книга 2 не по тому пути, который для Excel является умолчанием — уже ошибка. Но и без этого все равно выдает ошибку на строке Sheets(«Sheet2»).Select, т.к. активна книга test2, а метод Select пытаетесь выполнить для листа книги test1(той, в которой код). Я сейчас про процедуру tt2.

Изменено: Дмитрий(The_Prist) Щербаков01.08.2018 17:10:09

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

Модераторам: Название темы. Как правильно ссылаться на открытую книгу Excel и листы книги в коде VBA

Изменено: sokol9201.08.2018 18:44:54

 

skais675

Пользователь

Сообщений: 2178
Регистрация: 03.06.2014

#24

01.08.2018 19:30:30

Hugo,
Дмитрий(The_Prist) Щербаков

Все верно, невнимателен был с примером

Цитата
Hugo написал:
Вы не пробовали книгу сохранить с другим активным листом?

Спасибо за разъяснения!

Мой канал

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#25

01.08.2018 20:08:40

Цитата
SergKh написал:
Но только в Office16 похоже расширение является обязательным (и показывается командой MsgBox ActiveWorkbook.Name), его отсутствие вызывает ошибку, а в Office10 — нет (и не обязательно, и не показывается командой MsgBox ActiveWorkbook.Name, поэтому я так и заявил поначалу, и ошибок нет). Вот и получилось — файл работал около года на Office10, но только неделю назад пришлось перейти на Office16 и …

Необходимость указывать расширение определяется настройкой системы «скрывать расширения зарегистрированных типов файлов».
На 2016 не пробовал, а в 2010 точно так.
При этом обращение идет к первому файлу с таким именем из коллекции Workbooks (который был открыт раньше).

Nsekins

0 / 0 / 0

Регистрация: 05.10.2020

Сообщений: 12

1

Excel

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

17.03.2021, 17:09. Показов 6036. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем доброго времени суток!
С помощью интернета я смог написать небольшой макрос, задача которого состоит в том, чтобы открыть определенную книгу и с ней сравнить активную.
Макрос работает, но никак не могу исправить одну строчку.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Sravni()
 
Dim i As Long
Set w2 = Workbooks.Open("Y:Мин макс деталиMin_max.xlsx")
 
 
    Application.ScreenUpdating = False
    Workbooks("Spec.xlsx").Sheets(1).Activate
    With Workbooks("Min_max.xlsx").Sheets(1)
        Columns("B").Interior.ColorIndex = xlNone:
        .Columns("A").Interior.ColorIndex = xlNone:
        For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
            If Cells(i, "B") <> "" Then
                If Cells(i, "B") = .Cells(i, "A") Then
                    Cells(i, "B").Interior.ColorIndex = 6: Cells(i, "C") = 0
                    .Cells(i, "A").Interior.ColorIndex = 6: .Cells(i, "C") = 0
                End If
            End If
        Next
    End With
 
Workbooks("Min_max.xlsx").Close False
 
End Sub
Visual Basic
1
Workbooks("Spec.xlsx").Sheets(1).Activate

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



0



малоболт

1143 / 442 / 193

Регистрация: 30.01.2020

Сообщений: 1,095

17.03.2021, 17:34

2

Цитата
Сообщение от Nsekins
Посмотреть сообщение

Workbooks(«Spec.xlsx»).Sheets(1).Activate

Ну, замените на

Код

ActiveWorkbook.Sheets(1).Activate

Но я бы советовал взять 2 переменные, в одну (наприvер назову её aWbSh1) записать проверяемый лист текущей активной книги: aWbSh1=ActiveWorkBook.Sheets(НомерНужногоЛиста)
а в другую (назову например MinMaxWbSh1) MinMaxWbSh1 = Workbooks(«Min_max.xlsx»).Sheets(1)
И дальше обращаясь к Cells указывать конкретно переменную нужного листа, на котором эта ячейка. Поверьте — гораздо удобнее будет и меньше придётся искать почему вдруг перестало работать, хоть до этого работало как часы на другой машине у другого пользователя.



0



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

17.03.2021, 17:39

3

на коленке писано: (не проверено)

Visual Basic
1
2
3
4
5
6
Dim w1 As Workbook
Set w1 = ActiveWorkbook
 
    Set w2 = Workbooks.Open("Y:Мин макс деталиMin_max.xlsx")
    Application.ScreenUpdating = False
    Workbooks(w1.Name).Sheets(1).Activate

Добавлено через 1 минуту
Punkt5,
после этого активной будет вновь открытая книга. ИМХО

Цитата
Сообщение от Nsekins
Посмотреть сообщение

Set w2 = Workbooks.Open

Добавлено через 1 минуту

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Visual Basic
1
Workbooks(w1.Name).Sheets(1).Activate

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



0



0 / 0 / 0

Регистрация: 05.10.2020

Сообщений: 12

17.03.2021, 18:07

 [ТС]

4

Цитата
Сообщение от Punkt5
Посмотреть сообщение

ActiveWorkbook.Sheets(1).Activate

Так я пробовал, у меня была ошибка

Цитата
Сообщение от Alex77755
Посмотреть сообщение

на коленке писано: (не проверено)

и все же оно работает. Спасибо большое, очень выручили!



0



811 / 465 / 181

Регистрация: 09.03.2009

Сообщений: 1,577

17.03.2021, 18:10

5

Зачем вообще активировать? Если открываем по указателям, активная вроде ж не изменится и останется на экране после обработки и закрытия того файла?
Select и Activate при обработке макросом — зло. Исключение — некоторые оконные операции, типа ActiveWindow.Zoom = 85



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

17.03.2021, 18:36

6

Цитата
Сообщение от Zeag
Посмотреть сообщение

Зачем вообще активировать?

Zeag,
Справедливо! Но не на 100%
Некоторые методы не работают



0



811 / 465 / 181

Регистрация: 09.03.2009

Сообщений: 1,577

17.03.2021, 18:50

7

Alex77755, например? Я себе сохраню, чтобы в другой раз не рыпаться. Помню, что на ActiveWindow.Zoom = 85 нарвался и пока не прочел, не работало. А что еще?



0



5 / 5 / 0

Регистрация: 02.09.2020

Сообщений: 32

22.03.2021, 16:21

8

Еще ActiveWorkbook приходится применять после Workbooks(*).Sheets(*).Copy, когда создаётся некий Book1.



0



Содержание

  • 1 Открытие существующей книги
  • 2 Создание новой книги
  • 3 Обращение к открытой книге
  • 4 Как закрыть книгу Excel из кода VBA
    • 4.1 Сохранение всех рабочих книг
    • 4.2 Сохранение и закрытие всех рабочих книг
    • 4.3 Частичное сокрытие элементов рабочего листа
    • 4.4 Синхронизация выделенного диапазона на листах рабочей книги
    • 4.5 Решение(ия):
  • 5 Создать новую книгу в Excel VBA — примеры:
        • 5.0.0.1 Создать новую книгу
        • 5.0.0.2 Создание объекта для вновь созданной книги

Открытие книги Excel из кода VBA. Создание новой книги, присвоение ей имени. Обращение к открытой книге и закрытие. Методы Open, Add и Close объекта Workbooks.

  1. Открытие существующей книги
  2. Создание новой книги
  3. Обращение к открытой книге
  4. Как закрыть книгу Excel из кода VBA

Открытие существующей книги

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

  Workbooks.Open Filename:="D:test1.xls"  

или

  Workbooks.Open ("D:test1.xls")  

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

  If Dir("D:test1.xls") = "" Then      MsgBox "Файл не существует"  Else      MsgBox "Файл существует"  End If  

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

  If Dir("D:test1.xls") = "" Then      MsgBox "Файл не существует"  Else      Workbooks.Open Filename:="D:test1.xls"  End If  

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

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

  Workbooks.Add  

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

  Workbooks.Add  ActiveWorkbook.SaveAs Filename:="D:test2.xls"  

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

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

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

  ActiveWorkbook  

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

  ThisWorkbook  

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

  Workbooks("test1.xls")  Workbooks("test2.xls")  

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

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

  Workbooks("test1.xlsx").Close  

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

  Workbooks("test1.xlsx").Close  SaveChanges:=False  

или

  Workbooks("test1.xlsx").Close  (False)  

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

  Workbooks("test1.xlsx").Close  SaveChanges:=True  

или

  Workbooks("test1.xlsx").Close (True)  

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

Рис. 1. Столбцы и строки скрыты за исключением рабочего диапазона

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

Сохранение всех рабочих книг

Следующая процедура циклически просматривает все рабочие книги в коллекции Workbooks и сохраняет каждый файл, который сохранялся ранее.

Public Sub SaveAllWorkbooks()
    Dim Book As Workbook
    For Each Book In Workbooks
        If Book.Path "" Then Book.Save
    Next Book
End Sub

Обратите внимание на то, как используется свойство Path. Если для какой-либо рабочей книги свойство Path не задано, значит, файл еще не сохранялся (это новая рабочая книга). Данная процедура игнорирует такие рабочие книги и сохраняет только те из них, свойство Path которых имеет ненулевое значение.

Сохранение и закрытие всех рабочих книг

Следующая процедура циклически просматривает коллекцию Workbooks. Программа сохраняет и закрывает все рабочие книги.

Sub CloseAllWorkbooks()
    Dim Book As Workbook
    For Each Book In Workbooks
        If Book.Name ThisWorkbook.Name Then
            Book.Close savechanges:=True
        End If
    Next Book
    ThisWorkbook.Close savechanges:=True
End Sub

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

Частичное сокрытие элементов рабочего листа

В примере из этого раздела скрываются все строки и столбцы рабочего листа за исключением тех из них, которые находятся в текущем выделенном диапазоне (рис. 1).

Sub HideRowsAndColumns()
    Dim row1 As Long, row2 As Long
    Dim col1 As Long, col2 As Long
    If TypeName(Selection) "Range" Then Exit Sub
'   Если последняя строка либо последний столбец скрыты,
'   отобразить все и выйти
    If Rows(Rows.Count).EntireRow.Hidden Or _
        Columns(Columns.Count).EntireColumn.Hidden Then
        Cells.EntireColumn.Hidden = False
        Cells.EntireRow.Hidden = False
        Exit Sub
    End If
    row1 = Selection.Rows(1).Row
    row2 = row1 + Selection.Rows.Count — 1
    col1 = Selection.Columns(1).Column
    col2 = col1 + Selection.Columns.Count — 1
    Application.ScreenUpdating = False
    On Error Resume Next
'   Скрыть строки
    Range(Cells(1, 1), Cells(row1 — 1, 1)).EntireRow.Hidden = True
    Range(Cells(row2 + 1, 1), Cells(Rows.Count, _
        1)).EntireRow.Hidden = True
'   Скрыть столбцы
    Range(Cells(1, 1), Cells(1, col1 — 1)).EntireColumn.Hidden = True
    Range(Cells(1, col2 + 1), Cells(1, _
        Columns.Count)).EntireColumn.Hidden = True
End Sub

Чтобы показать все строки и столбцы, встаньте на перекрестие строк и столбцов (выделено красным на рис. 1), и пройдите по меню: Главная –> Ячейки –> Формат –> Скрыть или отобразить –> Отобразить строки. Повторите этот путь, чтобы отобразить столбцы (рис. 2).

Рис. 2. Показать все строки и столбцы

Если выделенный диапазон включает несвязанные диапазоны, видимым останется только первый из них.

Синхронизация выделенного диапазона на листах рабочей книги

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

  • выделяет тот же диапазон, что и в активном листе;
  • задает ту же левую верхнюю ячейку, что и на активном листе (рис. 3).

Рис. 3. Синхронизация выделенного диапазона на листах рабочей книги

Sub SynchSheets()
'   Дублирование выделенного диапазона активного листа
'   и верхней левой ячейки активного диапазона на всех листах
    If TypeName(ActiveSheet) "Worksheet" Then Exit Sub
    Dim UserSheet As Worksheet, sht As Worksheet
    Dim TopRow As Long, LeftCol As Integer
    Dim UserSel As String
    Application.ScreenUpdating = False
'   Запоминание текущего листа
    Set UserSheet = ActiveSheet
'   Сохранение сведений об активной ячейке
    TopRow = ActiveWindow.ScrollRow
    LeftCol = ActiveWindow.ScrollColumn
    UserSel = ActiveWindow.RangeSelection.Address
'   Циклический обход рабочих листов
    For Each sht In ActiveWorkbook.Worksheets
        If sht.Visible Then ' пропуск скрытых листов
            sht.Activate
            Range(UserSel).Select
            ActiveWindow.ScrollRow = TopRow
            ActiveWindow.ScrollColumn = LeftCol
        End If
    Next sht
'   Восстановление исходного положения
    UserSheet.Activate
    Application.ScreenUpdating = True
End Sub

По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 348–351.

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

Sub Название_Макроса() 'Выделить диапазон который необходимо скопировать Range("A1:F52").Select 'Скопировать то, что выделено Selection.Copy ChDir "путь к папке где лежит файл в который необходимо скопировать" Workbooks.Open Filename:= "Название файла, который находится в папке, путь к которой указан выше" 'Выделить начальную ячейку в которую необходимо вставить скопированные данные Range("A6").Select 'Вставить данные ActiveSheet.Paste 'сохранить текущую книгу ActiveWorkbook.Save 'Закрыть книгу ActiveWorkbook.Close End Sub 

Вариант 2: В открывшейся книге запускаем макрос, чтобы он открыл нужную нам книгу, скопировал от туда нужные нам данные и вставил в нашу открытую книгу, закрыв файл из которого эти данные были скопированы

Sub Название_Макроса2() 'Открываем файл с которого нужно скопировать данные Workbooks.Open Filename:="C:Данные.xlsx"  'Скопировать нужный диапазон в открывшейся книге на листе 1 Workbooks("Данные.xlsx").Worksheets("Лист1").Range("A16:E16").Copy 'Активируем нужную нам книгу Workbooks("Книга1.xlsm").Activate  'Выделяем и вставляем скопированные данные в ячейку А1 ActiveWorkbook.Worksheets("Лист1").Range("A1").Select ActiveSheet.Paste  'Закрываем книгу откуда мы скопировали данные Workbooks("Данные.xlsx").Close End Sub 

Еще пример — Скопировать диапазоны данных из активной открытой книги Excel нескольких листов (в нашем примере 3-х листов) в другую книгу, которая хранится в определенном месте. Данные будут вставлены как значения, плюс будут перенесены форматы ячеек.

Sub Копируем_листы_в_другую_книгу() Dim bookconst As Workbook Dim abook As Workbook Set abook = ActiveWorkbook 'присваиваем перменную активной книге Set bookconst = Workbooks.Open("C:UsersUserDesktop1.xlsx") 'присваиваем перменную книге куда необходимо копировать данные  'переходим в активную книгу откуда необходимо скопировать данные abook.Worksheets("Лист1").Activate Range("A1:I23").Copy 'копируем определенный диапазон листа, укажите свой диапазон bookconst.Worksheets("Лист1").Activate 'активируем лист куда необходимо вставить данные Range("A1:I23").Select 'встаем на ячейку А1 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем только форматы ячеек Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'второй лист abook.Worksheets("Лист2").Activate Range("A1:I23").Copy bookconst.Worksheets("Лист2").Activate Range("A1:I23").Select 'выделяем диапазон Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем только форматы ячеек Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'третий лист abook.Worksheets("Лист3").Activate Range("A1:I23").Copy bookconst.Worksheets("Лист3").Activate Range("A1:I23").Select 'выделяем диапазон Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'вставляем только форматы ячеек Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'сохранить текущую книгу bookconst.Save 'Закрыть книгу bookconst.Close abook.Activate End Sub 

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

Спасибо за внимание.

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

Решение(ия):

  Следующие макросы позволят открыть или создать новую книгу с помощью метода Добавить.

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

  • Создать новую книгу
  • Создание объекта для вновь созданной рабочей книги
Создать новую книгу

  Вы можете использовать следующий код для создания новой книги и сохранения на диске C с помощью метода «Добавить».

Код:

Sub AddNewWorkbook1()  'Добавление новой рабочей книги  Workbooks.Add  'Сохранение рабочей книги  ActiveWorkbook.SaveAs "C:WorkbookName.xls"  'OR  ActiveWorkbook.SaveAs Filename:="C:WorkbookName1.xls"  End Sub  

Объяснение:

  1. Метод добавления рабочей книги  добавит новую книгу
  2. Сохранить как рабочую книгу метод сохранит активную книгу в определенном месте с указанным именем файла

Вывод: Вы должны увидеть недавно открытую книгу вместе с существующей книгой.
как сделать активной книгу excel vba
Инструкции:

  1. Откройте рабочую книгу Excel
  2. Нажмите Alt + F11, чтобы открыть редактор VBA.
  3. Вставьте новый модуль из меню «Вставка»
  4. Создайте приведенный выше код и вставьте в окно кода
  5. Нажмите F5, чтобы увидеть выход
  6. Вы должны увидеть недавно открытую книгу, как показано выше.
  7. Сохраните файл в виде макросъемки
    Создание объекта для вновь созданной книги

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

    Код:

    sub AddNewWorkbook2()  Dim wkb as Workbook  'Добавление новой рабочей книги  Set wkb = Workbooks.Add  'Сохранение рабочей книги  wkb.SaveAs "C:WorkbookName.xls"  'OR  wkb.SaveAs Filename:="C:WorkbookName1.xls"  End Sub  

    Вывод:

      Вы должны увидеть недавно открытую книгу вместе с существующей книгой.

    Инструкции:

    1. Откройте рабочую книгу Excel
    2. Нажмите Alt + F11, чтобы открыть редактор VBA.
    3. Вставьте новый модуль из меню «Вставка»
    4. Создайте приведенный выше код и вставьте в окно кода
    5. Нажмите F5, чтобы увидеть выход
    6. Вы должны увидеть недавно открытую книгу, как показано выше.
    7. Сохраните файл в виде макросъемки

      Содержание

      • Ссылка на ячейку на том же листе
      • Ссылка на ячейку на другом листе
      • Как сослаться на другую книгу в Excel
      • Внешняя ссылка на открытую книгу
      • Внешняя ссылка на закрытую книгу
      • Ссылка на определенное имя (в той же или внешней книге)

      Возможность ссылаться на ячейки и диапазоны — вот что заставляет работать любой инструмент для работы с электронными таблицами. И Excel — лучший и самый мощный из существующих.

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

      Хотя нет большой разницы в том, как это работает, когда вы ссылаетесь на другой лист в том же файле или ссылаетесь на совершенно отдельный файл Excel, формат этой ссылки немного меняется.

      Кроме того, при обращении к другому листу или другим внешним файлам следует помнить о некоторых важных моментах.

      Но волнуйтесь … ничего сумасшедшего!

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

      Давайте начнем!

      Ссылка на ячейку на том же листе

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

      Например, если я нахожусь в ячейке B1 и хочу сослаться на ячейку A1, формат будет следующим:

      = A1

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

      Ссылка на ячейку на другом листе

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

      Sheet_name! Cell_address

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

      Поэтому, если вам нужно обратиться к ячейке A1 на листе 1, вам нужно использовать следующую ссылку:

      = Лист1! A1

      А если вы хотите сослаться на диапазон ячеек на другом листе, вам нужно использовать следующий формат:

      Имя_листа! Первая_ячейка: Последняя_ячейка

      Итак, если вы хотите сослаться на диапазон A1: C10 на другом листе в той же книге, вам необходимо использовать приведенную ниже ссылку:

      = Лист1! A1: C10

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

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

      Если у вас есть пробелы или небуквенные символы (например, @,!, #, — и т. Д.), Вам нужно использовать имя в одинарных кавычках.

      Например, если вы хотите сослаться на ячейку A1 на листе с названием «Данные о продажах», воспользуйтесь следующей ссылкой:

      = "Данные о продажах"! A1

      И в случае, если имя листа — Данные продаж, то для ссылки на ячейку A1 на этом листе вам необходимо использовать приведенную ниже ссылку:

      = "Данные о продажах"! A1

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

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

      Позвольте мне показать вам лучший способ создания ссылок на ячейки в Excel.

      Автоматическое создание ссылки на другой лист в той же книге

      Намного лучший способ создать ссылку на ячейку на другой лист — просто указать Excel на ячейку / диапазон, на который вы хотите создать ссылку, и позволить Excel создать ее сам.

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

      Ниже приведены шаги по автоматическому созданию ссылки на другой лист:

      1. Выберите ячейку в текущей книге, где вам нужна ссылка
      2. Введите формулу, пока вам не понадобится ссылка (или знак равенства, если вам просто нужна ссылка)
      3. Выберите лист, на который нужно сослаться
      4. Выберите ячейку / диапазон, на который вы хотите сослаться
      5. Нажмите Enter, чтобы получить результат формулы (или продолжайте работать с формулой)

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

      Например, если у вас есть данные в ячейке A1: A10 на листе с именем «Данные продаж», и вы хотите получить сумму этих значений на текущем листе, выполните следующие действия:

      1. Введите следующую формулу в текущем листе (где вам нужен результат): = Sum (
      2. Выберите лист «Данные о продажах».
      3. Выберите диапазон, который вы хотите добавить (A1: A10). Как только вы это сделаете, Excel автоматически создаст ссылку на этот диапазон (вы можете увидеть это в строке формул).
      4. Нажмите клавишу ввода.

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

      Когда вы это сделаете, вы заметите, что Excel автоматически вставляет ссылку на лист, на котором у вас есть формула. Хотя это нормально и не вредит, но в этом нет необходимости. В таком случае вы можете сохранить ссылку или удалить ее вручную.

      Еще одна вещь, которую вам нужно знать при создании ссылок путем выбора листа, а затем ячейки / диапазона, заключается в том, что Excel всегда будет создавать относительная ссылка (т.е. ссылки со знаком n0 $). Это означает, что если я скопирую и вставлю формулу (одну со ссылкой на другой лист) в какую-либо другую ячейку, она автоматически откорректирует ссылку.

      Вот пример, объясняющий относительные ссылки.

      Предположим, я использую следующую формулу в ячейке A1 текущего листа (для ссылки на ячейку A1 в имени листа SalesData)

      = Данные о продажах! A1

      Теперь, если я скопирую эту формулу и вставлю ее в ячейку A2, формула изменится на:

      = Данные о продажах! A1

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

      Если я хочу, чтобы эта ссылка всегда ссылалась на ячейку A1 на листе SalesData, мне придется использовать следующую формулу:

      = SalesData! $ A $ 1

      Знак доллара перед номером строки и столбца блокирует эти ссылки, чтобы они не менялись.

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

      Теперь, когда мы рассмотрели, как ссылаться на другой лист в той же книге, давайте посмотрим, как мы можем ссылаться на другую книгу.

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

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

      Итак, давайте посмотрим на различные форматы внешних ссылок на другую книгу в разных сценариях.

      Внешняя ссылка на открытую книгу

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

      Ниже приведен формат, который необходимо использовать при обращении к внешней открытой книге.

      = '[FileName] SheetName! CellAddress

      Предположим, у вас есть книга «ExampleFile.xlsx», и вы хотите сослаться на ячейку A1 в Sheet1 этой книги.

      Ниже приведена ссылка на это:

      = [ExampleFile.xlsx] SalesData! A1

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

      Ниже приведены примеры, в которых имена должны быть заключены в одинарные кавычки:

      = '[Example File.xlsx] SalesData'! A1 = '[ExampleFile.xlsx] Данные о продажах'! A1 = '[Пример файла.xlsx] Данные о продажах'! A1

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

      Опять же, хотя формат хорошо знать, лучше не вводить его вручную.

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

      Например, если у вас есть данные в ячейке A1: A10 в книге с именем «Файл примера» на листе с именем «Данные о продажах», и вы хотите получить сумму этих значений на текущем листе, выполните следующие действия. :

      1. Введите следующую формулу в текущем листе (где вам нужен результат): = Sum (
      2. Перейдите в книгу «Файл примера».
      3. Выберите лист «Данные о продажах».
      4. Выберите диапазон, который вы хотите добавить (A1: A10). Как только вы это сделаете, Excel автоматически создаст ссылку на этот диапазон (вы можете увидеть это в строке формул).
      5. Нажмите клавишу ввода.

      Это мгновенно создаст формулу с правильными ссылками.

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

      Если вы хотите это изменить, вам нужно изменить ссылки вручную.

      Внешняя ссылка на закрытую книгу

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

      Но когда он закрыт, Excel не знает, где искать ячейки / диапазон, на которые вы ссылались.

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

      Ниже приведена ссылка на ячейку A1 на листе Sheet1 в книге Example File. Поскольку этот файл не открыт, он также относится к месту, где файл сохранен.

      = 'C:  Users  sumit  Desktop  [Example File.xlsx] Sheet1'! $ A $ 1

      Приведенная выше ссылка состоит из следующих частей:

      • Путь к файлу — место в вашей системе или сети, где находится внешний файл.
      • Имя файла — имя внешней книги. Это также будет включать расширение файла.
      • Имя листа — имя листа, в котором вы ссылаетесь на ячейки / диапазоны.
      • Адрес ячейки / диапазона — точный адрес ячейки / диапазона, на который вы ссылаетесь.

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

      Влияние изменения расположения файла на ссылки

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

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

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

      Когда вы нажмете «Обновить», отобразится еще одно приглашение, в котором вы можете выбрать параметры для редактирования ссылок (при этом появится диалоговое окно, показанное ниже).

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

      Ссылка на определенное имя (в той же или внешней книге)

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

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

      Например, проще использовать = SalesData вместо = [Example File.xlsx] Sheet1 ′! $ A $ 1: $ A $ 10.

      И в случае, если вы использовали это определенное имя в нескольких формулах, и вам нужно изменить ссылку, вам нужно сделать это только один раз.

      Вот шаги, чтобы создать именованный диапазон для диапазона ячеек:

      1. Выберите все ячейки, которые вы хотите включить в именованный диапазон.
      2. Перейдите на вкладку «Формулы».
      3. Нажмите на опцию Define Name (она находится в группе Defined Names)
      4. В диалоговом окне «Новое имя» дайте этому диапазону имя (в этом примере я использую имя SalesData). Помните, что в названии не должно быть пробелов
      5. Сохраните область действия как рабочую книгу (если у вас нет веских причин сделать ее на уровне листа)
      6. Убедитесь, что ссылка на диапазон верна.
      7. Щелкните ОК.

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

      Например, если я хочу получить сумму всех этих ячеек в диапазоне SalesData, вы можете использовать следующую формулу:

      = СУММ (SalesData)

      А что, если вы хотите использовать этот именованный диапазон в других листах или даже в других книгах?

      Ты можешь!

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

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

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

      Ссылка на определенное имя на том же листе или в книге

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

      Например, если я хочу получить сумму всех ячеек в созданном нами именованном диапазоне (SaledData), я могу использовать следующую формулу:

      = СУММ (SaledData)

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

      Если вы хотите использовать его на другом листе (скажем, Sheet2), вам нужно использовать следующую формулу:

      = СУММ (Лист1! $ A $ 1: $ A $ 10)

      А если в имени листа есть пробелы или буквенно-цифровые символы, вам придется заключить имя листа в одинарные кавычки.

      = СУММ ('Лист 1'! $ A $ 1: $ A $ 10)

      Ссылка на определенное имя в другой книге (открытой или закрытой)

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

      Например, если у вас есть книга Excel с именем ExampleFile.xlsx и именованный диапазон с именем SalesData, вы можете использовать приведенную ниже формулу, чтобы получить сумму этого диапазона из другой книги:

      = СУММ (ExampleFile.xlsx! SalesData)

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

      = СУММ ('Пример File.xlsx'! SalesData)

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

      Ниже приведен пример ссылки на именованный диапазон на уровне листа:

      = СУММ ('[Пример файла.xlsx] Sheet1'! SalesData)

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

      Если вы ссылаетесь на именованный диапазон в закрытой книге, вам также необходимо указать путь к файлу. Ниже приведен пример этого:

      = СУММ ('C:  Users  sumit  Desktop  Example File.xlsx'! SalesData)

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

      Как создать ссылку на именованный диапазон

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

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

      Предположим, вы создали именованный диапазон SalesData, который хотите использовать в формуле для СУММИРОВАНИЯ всех значений в именованном диапазоне.

      Вот как это сделать:

      1. Выберите ячейку, в которую вы хотите ввести формулу.
      2. Введите формулу до точки, в которую нужно вставить именованный диапазон.
      3. Нажмите клавишу F3 на клавиатуре. Откроется диалоговое окно «Вставить имя» со списком всех созданных вами имен.
      4. Дважды щелкните имя, которое хотите вставить.

      Приведенные выше шаги вставят имя в формулу, и вы сможете продолжить работу с формулой.

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

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

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

      Понравилась статья? Поделить с друзьями:
    1. Обращение к ячейки excel
    2. Обращение к ячейке другого листа excel
    3. Обращение к списку в excel
    4. Обращение к серверу за сведениями word
    5. Обращение к программе microsoft word