Top-office11.ru

IT и мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Создать новую книгу excel vba

Создать новую книгу excel vba

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

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

Помогите, пожалуйста. (В VBA я новичок)

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Public Sub nytfjdkt()

‘——Копирование столбцов из старой книги в новую книгу———-
Range(«A:H,S:S,U:U,W:W,AQ:AQ,AE:AE,AF:AF,AY:AY,BA:BA,BG:BG,BH:BH,BI:BI»).Select
‘ Range( _
«Таблица_beta_newbooksql_Rebus_vwDefect[[#Headers],[Сумма дельта приходная, руб.]]» _
).Activate
Selection.Copy
‘————СОЗДАНИЕ НОВОЙ КНИГИ—————

Dim oExcel As New Excel.Application ‘Запускаем Excel
oExcel.Visible = True ‘Делаем его видимым
Dim oWbk As Excel.Workbook ‘Создаем новую книгу Книга1
Set oWbk = oExcel.Workbooks.Add()
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Item(«Лист1») ‘Находим Лист1
oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»
Dim oRange As Range ‘Находим диапазон A1 в Книга1
Set oRange = oSheet.Range(«A1»)

‘———-На данном этапе я хочу вставить данные из буфера

oRange.Value = «Начиная с этой ячейки я хочу вставить диапазон из буфера» ‘вносим в него данные

[moder]Читаем внимательно правила форума
Особенно п.п.3[/moder]

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

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

Помогите, пожалуйста. (В VBA я новичок)

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Public Sub nytfjdkt()

‘——Копирование столбцов из старой книги в новую книгу———-
Range(«A:H,S:S,U:U,W:W,AQ:AQ,AE:AE,AF:AF,AY:AY,BA:BA,BG:BG,BH:BH,BI:BI»).Select
‘ Range( _
«Таблица_beta_newbooksql_Rebus_vwDefect[[#Headers],[Сумма дельта приходная, руб.]]» _
).Activate
Selection.Copy
‘————СОЗДАНИЕ НОВОЙ КНИГИ—————

Dim oExcel As New Excel.Application ‘Запускаем Excel
oExcel.Visible = True ‘Делаем его видимым
Dim oWbk As Excel.Workbook ‘Создаем новую книгу Книга1
Set oWbk = oExcel.Workbooks.Add()
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Item(«Лист1») ‘Находим Лист1
oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»
Dim oRange As Range ‘Находим диапазон A1 в Книга1
Set oRange = oSheet.Range(«A1»)

‘———-На данном этапе я хочу вставить данные из буфера

oRange.Value = «Начиная с этой ячейки я хочу вставить диапазон из буфера» ‘вносим в него данные

[moder]Читаем внимательно правила форума
Особенно п.п.3[/moder] Дмитрий_С

Сообщение Добрый день!

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

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

Помогите, пожалуйста. (В VBA я новичок)

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
Public Sub nytfjdkt()

‘——Копирование столбцов из старой книги в новую книгу———-
Range(«A:H,S:S,U:U,W:W,AQ:AQ,AE:AE,AF:AF,AY:AY,BA:BA,BG:BG,BH:BH,BI:BI»).Select
‘ Range( _
«Таблица_beta_newbooksql_Rebus_vwDefect[[#Headers],[Сумма дельта приходная, руб.]]» _
).Activate
Selection.Copy
‘————СОЗДАНИЕ НОВОЙ КНИГИ—————

Dim oExcel As New Excel.Application ‘Запускаем Excel
oExcel.Visible = True ‘Делаем его видимым
Dim oWbk As Excel.Workbook ‘Создаем новую книгу Книга1
Set oWbk = oExcel.Workbooks.Add()
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Item(«Лист1») ‘Находим Лист1
oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»
Dim oRange As Range ‘Находим диапазон A1 в Книга1
Set oRange = oSheet.Range(«A1»)

Читать еще:  Excel файл открывается но не отображается

‘———-На данном этапе я хочу вставить данные из буфера

oRange.Value = «Начиная с этой ячейки я хочу вставить диапазон из буфера» ‘вносим в него данные

[moder]Читаем внимательно правила форума
Особенно п.п.3[/moder] Автор — Дмитрий_С
Дата добавления — 14.01.2015 в 12:19

VBA в Excel Объект Excel.Workbook и программная работа с книгами Excel из VBA

10.4 Коллекция Workbooks и объект Workbook, их свойства и методы

Объект Excel.Workbook, программная работа с книгами Excel из VBA, создание и открытие книг Excel

Следующий по иерархии после Application объект в объектной модели Excel — это объект Workbook, который представляет книгу Excel. Можно сказать, что объект Workbook занимает в Excel примерно то же место, что и объект Document в Word — он нужен для получения ссылки на нужную нам книгу в наборе открытых книг Excel, а также для настройки общих свойств и выполнения общих действий со всеми листами книги. Получить этот объект можно очень просто:

  • первый способ — воспользоваться коллекцией Workbooks, которая доступна через свойство Workbooks объекта Application. Впрочем, применять это свойство совершенно не обязательно — коллекция Workbooks в Excel и так постоянно доступна. Найти нужную книгу в этой коллекции можно по ее имени или номеру в коллекции:
  • второй способ — использовать свойство Application.ActiveWorkbook. При помощи этого свойства мы обращаемся к активной в настоящей момент книге:
  • третий способ — использовать свойство Application.ThisWorkbook. При этом мы обращаемся к той книге, которой принадлежит данный программный модуль:

На практике чаще всего нам нужно либо создать в Excel новую книгу, либо открыть существующую книгу (или другой файл в формате, который понимает Excel, например, DBF). Для этой цели используются методы Add() и Open() соответственно. Например, создать новую книгу в Excel можно так:

Dim oWbk As Workbook

Set oWbk = Workbooks.Add()

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

Открытие существующей книги выглядит так:

Dim oWbk As Workbook

Set oWbk = WorkBooks.Open(«C:mybook1.xls»)

Помимо стандартных, в коллекции Workbooks предусмотрено также три специальных метода:

  • OpenDatabase() — открыть базу данных, выполнить к ней запрос (или открыть таблицу/представление напрямую), а результаты запроса поместить как импортированные внешние данные в новую автоматически созданную рабочую книгу Excel;
  • OpenText() — почти то же самое, но в качестве источника здесь выступает текстовый файл. Дополнительные параметры позволяют определять его формат.
  • OpenXML() — в качестве источника данных будет выступать файл в формате XML.

Как и метод InsertDatabase() в Word, эти методы следует использовать только в самых простых случаях. Рекомендуется по возможности использовать более мощные и стандартные средства объектной модели ADO.

Теперь о самых важных свойствах объекта Workbook — самой рабочей книги:

  • Name, CodeName, FullName — разные имена этой книги. Самое простое имя — Name, это имя совпадает с именем файла книги. FullName — это имя файла книги вместе с полным путем к нему в операционной системе. CodeName — как эта книга будет называться в коде. CodeName можно посмотреть в окне Project Explorer или, если открыть свойства книги в окне Properties, кодовое имя книги будет представлено в строке (Name). Все три свойства доступны только для чтения, менять их можно другими способами (например, сохраняя файл под другим именем или прямо в окне Properties).

Определенное отношение к именам имеет также свойство Path (путь к файлу книги) .

  • Charts, Sheets, ActiveChart, ActiveSheet, CustomViews, BuiltinDocumentProperties и CustomDocumentProperties, Windows, WebOptions возвращают одноименные коллекции соответствующих объектов. Некоторые из этих объектов будут рассматриваться ниже.
  • ConflictResolution — как будут разрешаться конфликты изменения данных, если книга открыта несколькими пользователями сразу (shared workbook). Есть возможность сделать так, чтобы локальный пользователь автоматически выигрывал, автоматически проигрывал или возникало диалоговое окно с возможностью разобраться в конфликте вручную. Существует большое количество свойств, которые позволяют настроить параметры совместной работы с книгой, но по причине того, что такая работа не рекомендуется (данные для совместного доступа необходимо переносить в базу данных), рассматриваться они здесь не будут, за исключением:
    • запрещать/разрешать общий доступ к рабочей книге можно при помощи методов SaveAs() или ExclusiveAccess();
    • по умолчанию возможность совместного редактирования для книги отключена (проверить можно при помощи свойства MultiUserEditing);
    • получить список всех пользователей (а также когда они открыли файл и в каком режиме) можно при помощи свойства UserStatus.
  • FileFormat — формат книги (доступен напрямую только для чтения, можно изменять при сохранении). Форматов очень много: множество версий Excel, DBF, Lotus 1-2-3, форматы TXT, CSV, XML — всего несколько десятков.
  • свойство Names возвращает коллекцию всех именованных диапазонов в данной рабочей книге. Получить информацию о всех именованных диапазонах в данной книге можно, например, так:
Читать еще:  Проверка данных в excel не активна

For Each Item In ThisWorkbook.Names

Это свойство удобно использовать для предварительных проверок для устранения потенциальных ошибок времени выполнения.

Методов у объекта Workbook также очень много, однако значения самых употребимых — Activate(), Close(), Save(), SaveAs(), PrintOut(), Protect() и Unprotect() очевидны и действуют аналогично одноименным методам объекта Document в Word.

Макрос на VBA Excel – Формируем документы по шаблону

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

Немного поясню задачу, допустим, нам необходимо сформировать какие-то специфические документы по шаблону массово, т.е. в итоге их получится очень много, как я уже сказал выше, например, по каждому сотруднику. И это нужно сделать непосредственно в Excel, если было бы можно это сделать в Word, то мы бы это сделали через «Слияние», но нам нужно именно в Excel, поэтому для этой задачи мы будем писать макрос.

Мы с Вами уже выгружали данные по шаблону через клиент Access из базы MSSql 2008 в Word и Excel вот в этой статье — Выгрузка данных из Access в шаблон Word и Excel. Но сейчас допустим, у нас данные располагаются в базе, в клиенте которой нельзя или слишком трудоемко реализовать такую задачу, поэтому мы просто выгрузим необходимые данные в Excel и на основе таких данных по шаблону сформируем наши документы.

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

Читать еще:  Впр макросом vba excel

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

И так приступим!

Пишем макрос на VBA Excel по формированию документов

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

Примечание! Программировать будем в Excel 2010.

И для начала приведем исходные данные, т.е. сами данные и шаблон

Данные.

Лист, на котором расположены эти данные так и назовем «Данные»

Шаблон.

Лист, на котором расположен шаблон, тоже так и назовем «Шаблон»

Далее, нам необходимо присвоить имена полей для вставки, так более удобней к ним обращаться чем, например, по номеру ячейки.

Это делается очень просто, выделяете необходимую ячейку или диапазон, и жмете правой кнопкой мыши и выбираете «Присвоить имя», пишите имя ячейки и жмете «ОК»

Свои поля я назвал следующим образом:

  • ФИО – fio;
  • № — number;
  • Должность – dolgn;
  • Адрес проживания – addres;
  • Тел. № сотрудника – phone;
  • Комментарий – comment.

Код макроса на VBA Excel

Для того чтобы написать код макроса, открывайте на ленте вкладку «Разработчик», далее макросы.

Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»

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

После вкладка разработчик станет отображаться на ленте.

Далее, когда Вы откроете вкладку разработчик и нажмете кнопку «Макросы» у Вас отобразится окно создания макроса, Вы пишите название макросы и жмете «создать».

После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код VBA. Ниже представлен код, я его как обычно подробно прокомментировал:

Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:

и после выполнения у Вас в той же папке появится вот такие файлы

Вот с таким содержимым:

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

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