Remkomplekty.ru

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

Vb net работа с excel

Корпоративный блог Центра Высоких Технологий

Рано или поздно вам потребуется напечатать отчет в формате какого-либо офисного приложения. Так как процент людей, пользующихся StarOffice невелик, то скорее всего это будет всеми любимый Microsoft Office. 😉

Итак, в этой статье мы рассмотрим, как напечатать отчет в формате MS Excel (не забудьте, что для начала в проект необходимо добавить ссылку на соответствующий assembly). Создадим процедуру, которая получает на вход какой-либо объект с данными (в нашем случае это DataGridView), генерирует на их основе ответ и выводит его на печать. Ниже приведен пример с пояснениями:

Private Sub ExportToExcel(ByVal dgv As DataGridView)
Dim ObjExcel As New Microsoft.Office.Interop.Excel.Application() ‘ инициализируем excel-приложение
Dim ObjWorkBook As Microsoft.Office.Interop.Excel.Workbook ‘ создаем объект книги
Dim ObjWorkSheet As Microsoft.Office.Interop.Excel.Worksheet ‘ создаем объект страницы листа

ObjExcel.Visible = False ‘ делаем приложение невидимым пользователю
ObjWorkBook = ObjExcel.Workbooks.Add() ‘ добавляем новую книгу в приложение
ObjWorkSheet = ObjWorkBook.Worksheets(1) ‘ получаем доступ к первой странице

ObjWorkSheet.Columns(1).ColumnWidth = 20 ‘ устанавливаем ширину колонок.

ObjWorkSheet.Columns(2).ColumnWidth = 20
ObjWorkSheet.Columns(3).ColumnWidth = 10
ObjWorkSheet.Columns(4).ColumnWidth = 25
ObjWorkSheet.Columns(5).ColumnWidth = 4
ObjWorkSheet.Columns(6).ColumnWidth = 4
ObjWorkSheet.Columns(7).ColumnWidth = 15
ObjWorkSheet.Columns(8).ColumnWidth = 15

ObjWorkSheet.Rows(1).Font.Bold = True
ObjWorkSheet.Rows(1).font.size = 8 ‘ устанавливаем размер шрифта

ObjWorkSheet.Cells(1, 1).Value = «Direct» ‘ заполняем названия столбцов
ObjWorkSheet.Cells(1, 2).Value = «Reverse»
ObjWorkSheet.Cells(1, 3).Value = «Volume»
ObjWorkSheet.Cells(1, 4).Value = «Instrument Type»
ObjWorkSheet.Cells(1, 5).Value = «Book»
ObjWorkSheet.Cells(1, 6).Value = «Page»
ObjWorkSheet.Cells(1, 7).Value = «Filing Date»
ObjWorkSheet.Cells(1, 8).Value = «Instrument Date»

Dim i As Integer = 2
Dim j As Integer = 0
Dim dr As DataGridViewRow
For Each dr In dgv.Rows ‘ в цикле заполняем таблицу данными
ObjWorkSheet.Cells(i, 1).Value = dr.Cells( «Direct»).Value
ObjWorkSheet.Cells(i, 2).Value = dr.Cells( «Reverse»).Value
ObjWorkSheet.Cells(i, 3).Value = dr.Cells( «Volume»).Value
ObjWorkSheet.Cells(i, 4).Value = dr.Cells( «InstrType»).Value
ObjWorkSheet.Cells(i, 5).Value = dr.Cells( «Book»).Value
ObjWorkSheet.Cells(i, 6).Value = dr.Cells( «Page»).Value
ObjWorkSheet.Cells(i, 7).Value = dr.Cells( «FilingDate»).Value
ObjWorkSheet.Cells(i, 8).Value = dr.Cells( «InsDate»).Value
ObjWorkSheet.Rows(i).font.size = 8
i += 1
Next
ObjWorkSheet.PageSetup.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape ‘ изменяем ориентацию листа
ObjWorkSheet.PrintOut() ‘ выводим на печать
ObjExcel.Quit() ‘ закрываем приложение
ObjWorkSheet = Nothing
ObjWorkBook = Nothing
ObjExcel = Nothing
GC.Collect() ‘ вызываем сборщик мусора
End Sub

Вот вообщем то и всё. О чем надо знать — нумерация строк и колонок начинается с единицы. Отсюда вытекает одна из самых распространенных ошибок — при обращении к первой ячейке (левой-верхняя) программисты используют адрес (0, 0) вместо (1, 1). Стоит также обратить внимание на свойство Range объекта Worksheet — он позволяет получить доступ к набору ячеек. В качестве такого набора может быть одна ячейка, целая строка, ряд или даже таблица ячеек, заданная прямоугольником. Это бывает удобно при заполнении. Из примера так же видно, что можно программно задать расположение листа на странице. Более полный перечень настроек можно получить, обратившись к свойству PageSetup объекта Worksheet. Ну и последнее, о чем хотелось бы сказать — возможность предпросмотра, перед печатью. Для этого достаточно вызвать метод PrintPreview() того же объекта Worksheet.

Работа с excel: Открытие, чтение, запись, сохранение книги

Открытие книги Excel с паролем
Задал пароль для книги эксель. Пытаюсь подцепить и открыть Книгу в своем проекте и вывести данные.

Чтение и сохранение записи из БД. При загрузке получить последнюю запись в БД
Здравствуйте! Визуал студио бейсик 2010, как при загрузки формы для заполнения базы данных, форма.

Чтение, редактирование и запись данных из MS Excel
Доброго времени суток товарищи! Программирую на VB 2010 не долго, можно сказать на "вы".

Чтение и запись информации с листа Excel
Ребята помогите пожалуста , у меня на форме 2 кнопки , кнопка-read и кнопка-write и ещё textbox.

Решение

Решение

1)Добавляем в референцы ссылку на Microsoft Excel 11 object library

активирует лист за номером 2 в книге.
Все остальное — см члены переменных _excel и _workbook. Плюс пользуйся макрорекордером, встроенным в эксель. Там синтаксис на 90% совпадет, ну разве что по мелочам поменяешь.

Еще: в самом начале мы добавили ссылку на библу экселя. Это называется «раннее связывание».
Можно было не добавлять. Тогда это позднее связывание. Тогда ситуация такая:

А здесь что именно писать?

Добавлено через 6 минут
Нашол где чо, только у меня Microsoft Excel 14 object library или здесь без разницы, прсото версия поновей?

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

это у тебя просо офис поновее. Кажется 2010.

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

Добавлено через 1 час 48 минут
Забыл про обьявления

Памирыч, Добрый день! Очень мало инфы по exel для неопытных пользователей в интернете. Если не затрудник, не могли бы взглянуть на проблему?
с тем как записать и вывести значение + закрывание процесса я разобрался. Но теперь не могу сдеать основное действие.
Нужно найти первую ячейку в столбике B2 по формату( любой цвет который введем, допустим черный)Найти- разукрасить в красный и выдать нам сообщение, причем ячеек может быть не 1 , что мы и спрашиваем в inputbox. В vba у меня получилось, а сюда перенести не могу. Ошибка выскакивает на _Excel.xlFormulas, xlPart, xlByColumns..в общем уточняющих. Как верно нужно объявлять? Он пишет что они не относятся к _Excel

Читать еще:  Excel vba random

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

Экспорт данных в EXCEL средствами VB.NET

Продукты компании Microsoft крепко вошли в нашу жизнь. Не смотря на разные нарекания в сторону самой компании и ее продуктов, мало кто может похвастаться столь функциональными и удобными программами. Даже те кто является ярым приверженцем того что Microsoft это зло и использует, например, сторонние операционные системы, как бы это не было парадоксально, ставят себе на компьютер эмуляторы Windows и прочие примочки, которые позволяют работать программам от Microsoft или под Microsoft. И Excel и VB.NET вместе со всей студией являются большими, занимающими лидирующие положения программными обеспечениями. Одним пользуетесь Вы, раз читаете статью, другим пользуются ваши заказчики. Очень часто клиенты хотят видеть результаты работы программ, или как их любят называть «АРМ» и «ИС», в виде документов, с которыми они умеют работать, которые можно корректировать, которые берут на себя часть формирования наглядности. И их выбором становиться файлы в формате Excel. И нет ничего проще, чем написать работу в языке программирования от Microsoft c другой программой от той же фирмы, о чем мы и поговорим.

Весь процесс написания экспорта данных из программы в Excel можно свести к нескольким очень простым этапам: Подключения ссылки (Reference) на Excel в IDE студии; организации функции экспорта с объявлением соответствующих объектов, строками вывода и стилизации; эксперименты в самом Excel, а точнее с макросами, для получения значений необходимых констант и отыскания необходимых методов и свойств. Теперь по порядку.

Вначале необходимо подключить к вашему проекту библиотеку (ссылку, reference). Это можно сделать в меню Проект->Добавить ссылку (Project –> Add reference…). После выбора этого пункта меню перед Вами появиться модальное окно, с которым многие из Вас уже знакомы. Для тех, кто видит его впервые, опишу его кратко. В этом окне вы можете подключать к вашему проекту сторонние библиотеки (как правило файлы формата .dll), которые несут в себе какой-либо функционал. Библиотеки написаны на различных языках программирования и с применением различных технологий, но это не мешает их работе в вашем проекте. Особый интерес тут представляют три вкладки, одной из которых мы воспользуемся. Это вкладки .NET, COM, и Browse (Открыть существующие). Назначение последней вкладки понятно из названия. Различия первых двух состоит в различии технологий, которые использовались при написании данных библиотек. Вкладка .NET содержит библиотеки которые написаны с применением технологии .NET, более современной технологии. Библиотеки вкладки COM, это библиотеки написанные по старой технологии, которые не являются родными для студии VS.NET, но которые также могут работать в Вашей программе.

В нашем случае нас интересует вкладка .NET, в списке библиотек которой Вы можете найти Microsoft.Offoce.Interopt.Excel. Если их будет несколько, обратите внимание на версии. После того как вы выберете нужную Вам библиотеку нажмите кнопку Ok, и на этом этап подключения библиотеки будет закончен.

Теперь поговорим о том, как можно написать функции или процедуру для вывода данных в Excel. Я приведу простой пример, который будет заполнять лист Excel абстрактными данными. В Вашем случае вы можете передавать данные в виде параметров метода или получать их прям в самом методе использую расчеты или запросы к базе данных. Содержимое метода выглядит следующим образом (комментарии ниже):

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

Рассмотрим детали кода. Первые три строки объявляют необходимые три объекта для работы с документами Excel. Первая фактически создаёт и запускает копию самого Excel без каких либо открытых книг. Вторая строка создает объект, который является новой книгой в нашей копии программы. Ну и третья строк добавляет один единственный лист в книгу и объявляет объект, при помощи которого мы будем заносить в лист информацию. Четвертая строка, это самая простейшая манипуляция над листом – внесение текстовой информации в ячейку. Последней строкой мы делаем нашу копию Excel видимой. До этого момента она является не видимой с той целью, чтобы пользователи не пугались видя процесс внесения информации (при больших объёмах данных он может быть заметен не вооруженным глазом) и не могли помешать работе функции экспорта.

Читать еще:  Cells find vba excel описание

Многих могут устроить именно эти строки, так как их достаточно для написания собственной функции простейшего вывода. Но более искушенный программист, а что еще хуже заказчик, может иметь желание видеть не просто набор серых данных, а хорошо отформатированную и оформленную структуру, с заголовками, выравниванием, полужирными начертаниями, заданной шириной столбцов, наличием формул и прочего, на что способен настоящий документ Excel. Если описывать все возможности Excel и, соответственно, вашего когда, понадобиться очень много времени, и в итоге получиться большая книга – а это не цель моей статьи. Я расскажу вам как можно, используя макросы Excel получить именно тот результат, которого вы хотите в довольно короткий срок.

Допустим Вы хотите выделить текст одной из ячеек при экспорте данных полужирным начертанием. Делам следующее. Открываем Excel. Пишем в одной из ячеек произвольный текст, кликаем по другой ячейке. После этого необходимо начать запись макроса. Например в 2007 офисе это можно сделать в меню Вид->Макросы->Запись макроса, после чего появиться окно, в котором необходимо поставить любую букву в поле «Сочетание клавиш» и в списке «Сохранить в» выбрать «Эта книга», нажать кнопку Ок. После этого Excel начнет записывать в макрос в виде строк кода на языке VBA (Visual Basic for Application) все то, что Вы будете проделывать с листами и книгой. Выделите ячейку с произвольным текстом, при помощи меню сделайте ее начертание полужирным. Excel моментально запишит строчки кода в макрос. Чтобы сильно не мусорить в макросе по возможности больше ничего не делайте с ячейками, листами и книгой. Пройдите в меню Вид->Макросы->Остановить запись. Далее в меню Вид->Макросы[->Макросы] выберете последнее из списка и нажмите кнопку изменить. Откроется окно с кодом макроса примерно такого содержания:

Используя этот код можно модифицировать нашу первую функцию экспорта. Теперь она будет выглядеть следующим образом:

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

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

VBA Excel. Начинаем программировать с нуля

Первое знакомство с редактором VBA Excel, создание процедур (подпрограмм) и написание простейшего кода, работающего с переменными и ячейками рабочего листа.

Знакомство с редактором VBA

  1. Создайте новую книгу Excel и сохраните ее как книгу с поддержкой макросов с расширением .xlsm. В старых версиях Excel по 2003 год – как обычную книгу с расширением .xls.
  2. Нажмите сочетание клавиш «левая_клавиша_Alt+F11», которое откроет редактор VBA. С правой клавишей Alt такой фокус не пройдет. Также, в редактор VBA можно перейти по ссылке «Visual Basic» из панели инструментов «Разработчик» на ленте быстрого доступа. Если вкладки «Разработчик» на ленте нет, ее следует добавить в настройках параметров Excel.

В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.

  1. Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.

После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.

Первая программа на VBA Excel

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

  1. Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

В результате откроется окно добавления шаблона процедуры (Sub).

  1. Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.

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

  1. Вставьте внутрь шаблона процедуры следующую строку: MsgBox «Привет» .

Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».

  1. Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.


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

Читать еще:  Vba excel добавить лист с именем

Работа с переменными

Чтобы использовать в процедуре переменные, их необходимо объявить с помощью ключевого слова «Dim». Если при объявлении переменных не указать типы данных, они смогут принимать любые доступные в VBA Excel значения. Комментарии в тексте процедур начинаются со знака «’» (апостроф).

Пример 2
Присвоение переменным числовых значений:

Редактор Visual Basic в Excel

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

Запуск редактора Visual Basic

Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже. Имейте ввиду, что окно Excel остается открытым и находится позади окна редактора.

Окна редактора Visual Basic

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

Окно проекта (Project)

Окно Project открывается в левой части редактора VBA (показано на картинке выше). В этом окне для каждой открытой рабочей книги создаётся проект VBA (VBA Project). Проект VBA – это набор всех объектов и модулей VBA, привязанных к текущей книге. Изначально в него входят:

  • Объект ЭтаКнига (ThisWorkbook), привязанный к книге Excel;
  • Объекты Лист (Sheet), привязанные к каждому листу текущей рабочей книги Excel.

Самостоятельно в проект можно добавить объекты Userform, Module и Class Module. Если Вы посмотрите на картинку выше, то увидите, что в проект VBA для книги Book1.xlsm добавлен объект Module с названием Module1.

Вот как можно создать новый объект Userform, Module или Class Module:

  • В окне Project выберите рабочую книгу, в которую нужно добавить объект, и кликните по ней правой кнопкой мыши.
  • В появившемся меню кликните Insert и в раскрывшемся меню выберите Userform, Module или Class Module.

Для каждого из описанных выше объектов предусмотрено специальное окно, в котором будет создаваться и храниться новый код VBA. Порядок при этом такой:

  • Код, который относится к рабочей книге, должен быть введён в соответствующий объект ЭтаКнига (ThisWorkbook);
  • Код, который относится к рабочему листу, должен быть введён в соответствующий объект Лист (Sheet);
  • Код более общего характера должен быть введён в Module;
  • Код для нового объекта должен быть введён в Class Module;
  • Если нужно создать диалоговое окно для взаимодействия с пользователем, то можно использовать Userform.

Окно кода (Code)

Двойной щелчок мышью по любому объекту в окне Project открывает соответствующее окно Code, предназначенное для ввода кода VBA с клавиатуры. На одном из приведённых выше рисунков показано окно кода для Module1.

По мере ввода кода VBA в окно Code, редактор Visual Basic следит за правильностью ввода, ищет ошибки в коде и выделяет код, который требует исправления.

Окно свойств (Properties)

В окне Properties перечислены свойства объекта, который в момент создания (не в процессе выполнения программы) выделен в окне проекта. Эти свойства могут быть различными в зависимости от типа выделенного объекта (лист, книга, модуль и другие).

Окно отладчика (Immediate)

Окно Immediate можно отобразить в редакторе Visual Basic через меню View > Immediate Window или нажатием комбинации клавиш Ctrl+G. Это окно помогает при отладке кода. Оно выполняет роль области вывода для отладки выражений и позволяет вычислять отдельные выражения или выполнять строки кода по одной.

Например, введите выражение “?j” и нажмите Enter – в результате будет выведено текущее значение переменной j.

Окно переменных (Locals)

Чтобы открыть окно Locals, нажмите Locals Window в меню View редактора Visual Basic. В этом окне отображаются все переменные, объявленные в текущей процедуре. Окно делится на столбцы, в которых содержатся имя, значение и тип каждой переменной, и эта информация обновляется автоматически в ходе выполнения программы. Окно Locals очень полезно при отладке кода VBA.

Окно отслеживания (Watches)

Окно Watches также очень помогает при отладке кода VBA, так как в нём можно увидеть значение, тип и контекст любого отслеживаемого выражения, которое задаст пользователь. Чтобы открыть окно Watches, нажмите Watch Window в меню View редактора Visual Basic. Также окно Watches будет открыто автоматически, если задать отслеживаемое выражение.

Чтобы задать отслеживаемое выражение, нужно:

  1. Выделить выражение в редактируемом коде VBA.
  2. В меню Debug редактора VBA нажать Quick Watch.
  3. Нажать Add.

Кроме рассмотренных, в меню редактора Visual Basic в Excel существует ещё множество параметров и команд, используемых при создании, выполнении и отладке кода VBA.

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