Перейти к содержимому

Как открыть файл через vba

  • автор:

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

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

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

Set objExcel = New Excel.Application objExcel.Visible = False Set wb = objExcel.Workbooks.Open(fname) Set ws = wb.Sheets(1)

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

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

Set objExcel = New Excel.Application Set wb = objExcel.Workbooks wb.Open fname, local:=True Set ws = wb.Item(1).ActiveSheet

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

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

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

ws.Cells(1, 1).Value = "Test" ws.Cells(1, 1).Font.Size = 18 ' Поменять размер шрифта ws.Cells(1, 1).HorizontalAlignment = xlCenter '

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

wb.Save ' Записать с тем же именем wb.SaveAs Filename:="имя_нового_файла", FileFormat:=xlOpenXMLWorkbookMacroEnabled ' Записать в новый файл wb.Close ' Закрыть книгу

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

ActiveWorkbook.SaveAs

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

Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="c:\Temp\000\1.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled Application.DisplayAlerts = True

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

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

Как открыть конкретную книгу в Excel

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

Как открыть конкретную книгу в Excel

Код макроса

Sub Macro7() 'Шаг 1: Определяем переменную. Dim FName As Variant 'Шаг 2: Метод GetOpenFilename активизирует диалоговое окно. FName = Application.GetOpenFilename( _ 'a – определяем тип файла FileFilter:="Excel Workbooks,*.xl*", _ 'b – заголовок окна Title:="Выбери файл, который надо открыть", _ 'c – множественный выбор MultiSelect:=False) 'Шаг 3: Если был выбран файл, открыть его! If FName <> False Then Workbooks.Open Filename:=FName End If End Sub

Как работает этот код

  1. Первое, что делаем — объявляем переменную типа Variant, будет содержать Имя файла, который пользователь выберет. FName — имя нашей переменной.
  2. На шаге 2 мы используем метод GetOpenFilename, чтобы вызвать диалоговое окно, которое позволяет просмотреть содержимое папки и выбрать нужный нам файл. Метод
    GetOpenFilename поддерживает несколько настраиваемых параметров:
    a. FileFilter параметр позволяет указать Тип файла, который мы ищем.
    b. Title позволяет изменить заголовок, который отображается в верхней части диалогового окна.
    c. MultiSelect — параметр множественный выбор позволяет ограничить выбор в один файл.
  3. Если пользователь выбирает файл из диалогового окна, переменная FName берёт Имя файла, который выбрали. Если переменная не пустая, мы используем метод Open из книг
    объекта, чтобы открыть файл.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.
  5. По желанию, можно назначить макрос к кнопке, чтобы открыть файл.

Как открыть файл через vba

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

Private Sub Workbook_Open()

‘ Открыть файл
Application.Workbooks.Open («C:\Documents and Settings\. \Рабочий стол\Книга4.xlsx»), Password:=»123321″
‘ Закрыть файл
Application.Workbooks.Item(1).Close («C:\Documents and Settings\. \Рабочий стол\Книга4.xlsx»)

Но он, почему-то закрывает файл, с которым нужно работать. Как это исправить?

Как открыть файл через vba

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

подскажите пожалуйста, как открыть файл с которым программа будет работать, если имя файла лежит в переменной без указания его расширения, где лежит файл известно, а расширение «.xls» olgao

Сообщение отредактировал olgao — Воскресенье, 31.03.2013, 16:35

Сообщение подскажите пожалуйста, как открыть файл с которым программа будет работать, если имя файла лежит в переменной без указания его расширения, где лежит файл известно, а расширение «.xls» Автор — olgao
Дата добавления — 31.03.2013 в 16:27

Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Замечаний: 0% ±

2003-2010
Цитата ( olgao )
разрешения

Может расширения, все-таки?!
Цитата ( olgao )
разрешения

Может расширения, все-таки?! KuklP
Цитата ( olgao )
разрешения

Может расширения, все-таки?! Автор — KuklP
Дата добавления — 31.03.2013 в 16:30
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
ну да, опечаталась
ну да, опечаталась olgao
Сообщение ну да, опечаталась Автор — olgao
Дата добавления — 31.03.2013 в 16:31
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Замечаний: 0% ±

2003-2010
workbooks.open «полный_путь\» & переменная & «.xls»
workbooks.open «полный_путь\» & переменная & «.xls» KuklP

Сообщение workbooks.open «полный_путь\» & переменная & «.xls» Автор — KuklP
Дата добавления — 31.03.2013 в 16:49

Группа: Пользователи
Ранг: Новичок
Сообщений: 11

KuklP, большое спасибо)
еще один вопросик возник, как в дальнейшем активировать этот же уже открытый файл, чтобы продолжить с ним работать?

KuklP, большое спасибо)
еще один вопросик возник, как в дальнейшем активировать этот же уже открытый файл, чтобы продолжить с ним работать? olgao

Сообщение KuklP, большое спасибо)
еще один вопросик возник, как в дальнейшем активировать этот же уже открытый файл, чтобы продолжить с ним работать? Автор — olgao
Дата добавления — 31.03.2013 в 17:02

Группа: Пользователи
Ранг: Новичок
Сообщений: 11
все, уже не надо, сама смогла это сделать)
все, уже не надо, сама смогла это сделать) olgao

Сообщение все, уже не надо, сама смогла это сделать) Автор — olgao
Дата добавления — 31.03.2013 в 17:15

Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Замечаний: 0% ±

2003-2010
Он и так станет активным
Он и так станет активным KuklP
Сообщение Он и так станет активным Автор — KuklP
Дата добавления — 31.03.2013 в 17:17
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Цитата ( KuklP )
Он и так станет активным

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

Цитата ( KuklP )
Он и так станет активным

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

Цитата ( KuklP )
Он и так станет активным

если после его открытия активировать другие файлы, то соответственно его надо будет активировать, чтобы опять к нему обратиться Автор — olgao
Дата добавления — 31.03.2013 в 17:41

Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Замечаний: 0% ±

2003-2010
set wb = workbooks.open(«полный_путь\» & переменная & «.xls»)
[/vba]
Дальше к книге обращаемся по псевдониму wb
set wb = workbooks.open(«полный_путь\» & переменная & «.xls»)
[/vba]
Дальше к книге обращаемся по псевдониму wb KuklP

Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Сообщение отредактировал KuklP — Воскресенье, 31.03.2013, 18:06
Сообщение Тогда:
[vba]
set wb = workbooks.open(«полный_путь\» & переменная & «.xls»)
[/vba]
Дальше к книге обращаемся по псевдониму wb Автор — KuklP
Дата добавления — 31.03.2013 в 18:05
Группа: Пользователи
Ранг: Новичок
Сообщений: 11

KuklP, я, к сожалению, не такой большой знаток VBA, поэтому действую только теми способами, которые я знаю тем более у меня и так все заработало, но все равно спасибо за помощь!

KuklP, я, к сожалению, не такой большой знаток VBA, поэтому действую только теми способами, которые я знаю тем более у меня и так все заработало, но все равно спасибо за помощь! olgao

Сообщение KuklP, я, к сожалению, не такой большой знаток VBA, поэтому действую только теми способами, которые я знаю тем более у меня и так все заработало, но все равно спасибо за помощь! Автор — olgao
Дата добавления — 31.03.2013 в 18:19

Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Замечаний: 0% ±

Excel 2003, 2010
Цитата ( olgao )
не такой большой знаток VBA

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

ненужная активация книг, листов и ячеек в коде не нужна (извините за тавтологию) по нескольким причинам:
— это долго (работает)
— это некрасиво (выглядит при работе)
— это долго (писать лишние команды в коде)
— с этим неудобно работать — не всегда очевидно, что в данный момент «активно»
— у этого нет НИКАКИХ преимуществ.

а форумчане вам плохих советов не дадут.
ибо иначе их лишают сладкого

Цитата ( olgao )
не такой большой знаток VBA

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

ненужная активация книг, листов и ячеек в коде не нужна (извините за тавтологию) по нескольким причинам:
— это долго (работает)
— это некрасиво (выглядит при работе)
— это долго (писать лишние команды в коде)
— с этим неудобно работать — не всегда очевидно, что в данный момент «активно»
— у этого нет НИКАКИХ преимуществ.

а форумчане вам плохих советов не дадут.
ибо иначе их лишают сладкого ikki

Цитата ( olgao )
не такой большой знаток VBA

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

ненужная активация книг, листов и ячеек в коде не нужна (извините за тавтологию) по нескольким причинам:
— это долго (работает)
— это некрасиво (выглядит при работе)
— это долго (писать лишние команды в коде)
— с этим неудобно работать — не всегда очевидно, что в данный момент «активно»
— у этого нет НИКАКИХ преимуществ.

а форумчане вам плохих советов не дадут.
ибо иначе их лишают сладкого Автор — ikki
Дата добавления — 31.03.2013 в 19:30

Группа: Пользователи
Ранг: Прохожий
Сообщений: 3

Добрый день,
подскажите как правильно указать/написать, чтоб открыть файл с расширением *.csv

[admin]Тема закрыта. Причина: нарушение правил пп. 4, 5q[/admin]

Добрый день,
подскажите как правильно указать/написать, чтоб открыть файл с расширением *.csv

[admin]Тема закрыта. Причина: нарушение правил пп. 4, 5q[/admin] Lloyd

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

[admin]Тема закрыта. Причина: нарушение правил пп. 4, 5q[/admin] Автор — Lloyd
Дата добавления — 31.07.2013 в 11:34

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar