ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.01.2026
Просмотров: 281
Скачиваний: 0
СОДЕРЖАНИЕ
11.1.2. Открытие существующей книги
11.1.4. Сохранение открытой книги
11.1.5. Получение и установка пути к файлу книги по умолчанию
11.1.6. Отображение диалогового окна для открытия файлов
11.2.1. Добавление новых листов
11.2.6. Предварительный просмотр и печать листов
11.2.7. Перемещение листов в книгах
11.2.8. Создание и удаление групп на листахExcel
11.2.9. Изменение форматирования строк листа
11.2.10. Копирование данных и форматирование по листам
11.2.11. Проверка орфографии на листах
11.2.12. Программная сортировка данных
11.3.2. Автоматическое заполнение диапазонов
11.3.3. Хранение и извлечение значений дат в диапазонах
11.3.4. Применение стилей к диапазонам и их отмена
11.3.5. Поиск текста в диапазоне ячеек
11.3.6. Применение цвета к тексту в диапазоне ячеек
11. Объектная модель Excel
(http://msdn.microsoft.com/ru-ru/library/wss56bz7.aspx)
Подключение пространства имен с объектами продуктов Microsoft Office:
Imports Microsoft.Office.Interop
Объекты, составляющие объектную модель Excel, предоставлены следующими классами:
– Microsoft.Office.Interop.Excel.Application – приложение;
– Microsoft.Office.Interop.Excel.Workbook – рабочая книга;
– Microsoft.Office.Interop.Excel.Worksheet – рабочий лист;
– Microsoft.Office.Interop.Excel.Range – диапазон.
11.1. Работа с книгами
Таблица 1. Основные методы, свойства и события класса Workbook(http://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.workbook_members.aspx)
|
Имя |
Описание |
|
Методы |
|
|
Activate |
Активирует первое окно, связанное с книгой |
|
Close |
Закрывает книгу |
|
DeleteNumberFormat |
Удаляет настраиваемый формат числа из книги |
|
ExclusiveAccess |
Назначает монопольный доступ к книге, открытой как общий список, текущему пользователю |
|
ExportAsFixedFormat |
Сохраняет книгу в формате PDF или XPS |
|
NewWindow |
Создает новое окно |
|
PrintOut |
Выполняет печать книги |
|
PrintPreview |
Отображает окно предварительного просмотра объекта в том виде, как он будет выглядеть при печати |
|
Protect |
Защищает книгу от изменений |
|
ProtectSharing |
Сохраняет книгу и защищает ее для совместного использования |
|
ResetColors |
Возвращает настройки цветовой палитры к стандартным цветам |
|
Save |
Сохраняет изменения в книге |
|
SaveAs |
Сохраняет изменения в книге в другой файл |
|
SaveAsXMLData |
Экспортирует данные, соотнесенные указанной XML-схеме, в XML-файл данных |
|
SaveCopyAs |
Сохраняет копию книги в файл, но не изменяет открытую книгу в памяти |
|
Unprotect |
Удаляет защиту из книги. Если в книге отсутствует защита, этот метод не работает |
|
UnprotectSharing |
Отключает защиту для совместного использования и сохраняет книгу |
|
UpdateFromFile |
Обновляет книгу, предназначенную только для чтения, из версии книги, сохраненной на диске, если версия на диске является более новой, чем копия книги, загруженная в память. Если копия на диске не изменялась со времени загрузки книги, копия книги, хранимая в памяти, повторно не загружается |
|
WebPagePreview |
Отображает окно предварительного просмотра книги в том виде, как она будет выглядеть при сохранении в качестве веб-страницы |
|
XmlImport |
Выполняет импорт XML-файла данных в текущую книгу |
|
XmlImportXml |
Выполняет импорт потока XML-данных, предварительно загруженных в память |
|
Свойства |
|
|
ActiveChart |
Получает объект Microsoft.Office.Interop.Excel.Chart, представляющий активную диаграмму (внедренную диаграмму либо лист диаграммы). Внедренная диаграмма считается активной, если она выбрана или активирована. При отсутствии активной диаграммы это свойство возвращает значение nullNothingnullptr ссылка null (Nothing в Visual Basic) |
|
ActiveSheet |
Получает активный лист (лист сверху) |
|
Application |
Получает объект Microsoft.Office.Interop.Excel.Application, представляющий приложение Microsoft Excel или автора листа |
|
Charts |
Получает коллекцию Microsoft.Office.Interop.Excel.Sheets, представляющую все листы диаграмм в книге |
|
Colors |
Возвращает или задает цвета в палитре для книги |
|
Container |
Получает объект, представляющий приложение-контейнер для книги |
|
CreateBackup |
Получает значение, указывающее на необходимость создания файла резервной копии при сохранении файла |
|
Creator |
Получает приложение, в котором была создана книга |
|
DefaultTableStyle |
Возвращает или задает стиль таблицы из свойства TableStyles, который используется в качестве стандартного стиля для таблиц в книге |
|
DisplayDrawingObjects |
Возвращает или задает режим отображения фигур |
|
FileFormat |
Получает формат файла и тип книги |
|
ForceFullCalculation |
Возвращает или задает значение, которое указывает на необходимость принудительного полного вычисления книги |
|
Password |
Возвращает или задает пароль, который должен быть введен для открытия книги |
|
Path |
Получает полный путь к приложению, за исключением заключительного разделителя и имени приложения |
|
PrecisionAsDisplayed |
Возвращает или задает значение, указывающее, будут ли вычисления в этой книге выполняться с помощью только точности чисел в том виде, в каком они выводятся на экран |
|
ProtectStructure |
Получает значение, которое указывает на наличие защиты порядка листов в книге |
|
ReadOnly |
Получает значение, которое указывает на открытие книги в режиме "только для чтения" |
|
Saved |
Возвращает или задает значение, указывающее на отсутствие изменений, внесенных в книгу со времени последнего сохранения |
|
SaveLinkValues |
Возвращает или задает значение, определяющее, будет ли Microsoft Excel сохранять значения внешних ссылок вместе с книгой |
|
Sheets |
Получает коллекцию Microsoft.Office.Interop.Excel.Sheets, представляющую все листы в книге |
|
Styles |
Получает коллекцию Microsoft.Office.Interop.Excel.Styles, представляющую все стили в книге |
|
TableStyles |
Получает коллекцию стилей таблицы, используемых в книге |
|
Title |
Возвращает или задает заголовок веб-страницы при сохранении книги в качестве веб-книги |
|
WebOptions |
Получает коллекцию Microsoft.Office.Interop.Excel.WebOptions, содержащую атрибуты на уровне книги, которые используются Microsoft Excel при сохранении документа в виде веб-страницы либо при открытии веб-страницы |
|
Worksheets |
Получает коллекцию Microsoft.Office.Interop.Excel.Sheets, представляющую все рабочие листы в книге |
|
WritePassword |
Возвращает или задает пароль записи данных для книги |
|
WriteReserved |
Получает значение, которое указывает на наличие защиты от записи для книги |
|
События |
|
|
ActivateEvent |
Происходит при активации книги |
|
AfterXmlExport |
Происходит после выполнения приложением Microsoft Excel сохранения или экспорта данных из книги в XML-файл данных |
|
AfterXmlImport |
Происходит после обновления существующего подключения XML-данных или после импорта новых XML-данных в книгу |
|
BeforeClose |
Происходит перед закрытием книги. Если в книгу были внесены изменения, данное событие возникает перед предложением сохранить изменения |
|
BeforePrint |
Происходит перед печатью книги (или ее части) |
|
BeforeSave |
Происходит перед сохранением книги |
|
BeforeXmlExport |
Происходит перед выполнением приложением Microsoft Excel сохранения или экспорта данных из книги в XML-файл данных |
|
BeforeXmlImport |
Происходит перед обновлением существующего подключения XML-данных или перед импортом новых XML-данных в книгу |
|
Deactivate |
Происходит при отключении книги |
|
New |
Происходит при создании новой книги |
|
NewSheet |
Происходит при создании нового листа в книге |
|
Open |
Происходит при открытии книги |
|
SheetActivate |
Происходит при активации любого листа |
|
SheetBeforeDoubleClick |
Происходит при двойном щелчке по листу перед вызовом обработчика двойного щелчка по умолчанию |
|
SheetBeforeRightClick |
Происходит при щелчке правой кнопкой мыши любого листа перед вызовом обработчика щелчка правой кнопкой мыши по умолчанию |
|
SheetCalculate |
Происходит после пересчета любого листа или после отображения любых измененных данных в диаграмме |
|
SheetChange |
Происходит при изменении ячейки листа пользователем или внешней ссылкой |
|
SheetDeactivate |
Происходит при отключении любого листа |
|
SheetFollowHyperlink |
Происходит при переходе по любой гиперссылке в книге |
|
SheetSelectionChange |
Происходит при изменении выделенного фрагмента на любом листе. Это событие не возникает, если выделенный фрагмент находится на листе диаграмм |
|
Startup |
Происходит после запуска книги и всех кодов инициализации в сборке |
|
WindowResize |
Происходит при изменении размера любого окна книги |
11.1.1. Создание новой книги
Dim newWorkbook As Excel.Workbook = _
Me.Application.Workbooks.Add()
11.1.2. Открытие существующей книги
Me.Application.Workbooks.Open("C:\YourPath\YourWorkbook.xls")
11.1.3. Закрытие книг
– в проекте уровня документа:
Globals.ThisWorkbook.Close(SaveChanges:=False)
– в проекте уровня приложения:
Me.Application.ActiveWorkbook.Close(SaveChanges:=False)
или
Me.Application.Workbooks("NewWorkbook.xls").Close(SaveChanges:=False)
11.1.4. Сохранение открытой книги
– сохранение книги, которая ранее уже сохранялась, и ее имя и место сохранения изменять не нужно:
'В проекте уровня документа:
Me.Save()
или
'В проекте уровня приложения:
Me.Application.ActiveWorkbook.Save()
– сохранение книги, которая ранее не сохранялась, и при сохранении можно задать имя и место сохранения файла:
'В проекте уровня документа:
Me.SaveAs("C:\Test\Book1.xml")
или
'В проекте уровня приложения:
Me.Application.ActiveWorkbook.SaveAs("C:\Book1.xml")
– сохранение копии книги в файле, не изменяя открытую книгу в памяти:
'В проекте уровня документа:
Me.SaveCopyAs("C:\Test\Book1.xls")
или
'В проекте уровня приложения:
Me.Application.ActiveWorkbook.SaveCopyAs("C:\Book1.xls")
11.1.5. Получение и установка пути к файлу книги по умолчанию
System.Windows.Forms.MessageBox.Show( _
Me.Application.DefaultFilePath) 'Получение
Me.Application.DefaultFilePath = "C:\temp" 'Установка
11.1.6. Отображение диалогового окна для открытия файлов
With Me.Application.FileDialog( _
Microsoft.Office.Core.MsoFileDialogType.msoFileDialogOpen)
.AllowMultiSelect = True
.Filters.Clear()
.Filters.Add("Excel Files", "*.xls;*.xlw")
.Filters.Add("All Files", "*.*")
If .Show = True Then
.Execute()
End If
End With
11.2. Работа с листами
Таблица 2. Основные методы, свойства и события класса Worksheet(http://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.worksheet_members.aspx)
|
Имя |
Описание |
|
Методы |
|
|
Activate |
Делает текущий лист активным |
|
CalculateMethod |
Производит вычисление формул на рабочем листе |
|
ChartObjects |
Возвращает объект, представляющий либо отдельную внедренную диаграмму (объект Microsoft.Office.Interop.Excel.ChartObject), либо коллекцию всех внедренных диаграмм (коллекция Microsoft.Office.Interop.Excel.ChartObjects) на рабочем листе |
|
CheckSpelling |
Проверка орфографии на рабочем листе |
|
CircleInvalid |
Помечает кружками недопустимые значения на рабочем листе |
|
ClearCircles |
Снимает кружки с недопустимых значений на рабочем листе |
|
Copy |
Копирует рабочий лист в другое местоположение в рабочей книге |
|
Delete |
Удаляет базовый объект Microsoft.Office.Interop.Excel.Worksheet, но не удаляет ведущий элемент. Настоятельно рекомендуется не использовать данный метод |
|
ExportAsFixedFormat |
Экспортирует в файл указанного формата |
|
Move |
Перемещает рабочий лист в другое местоположение в рабочей книге |
|
Paste |
Вставляет в рабочий лист содержимое буфера обмена |
|
PasteSpecial |
Вставляет в рабочий лист содержимое буфера обмена с использованием указанного формата. Данный метод используется для вставки данных из других приложений или вставки данных в определенном формате |
|
PrintOut |
Печать рабочего листа |
|
PrintPreview |
Представляет предварительный просмотр рабочего листа, как он бы выглядел при печати |
|
Protect |
Защищает рабочий лист от изменений |
|
ResetAllPageBreaks |
Сброс всех разрывов страницы на указанном рабочем листе |
|
SaveAs |
Сохраняет изменения в рабочем листе в другой файл |
|
Select |
Выделение рабочего листа |
|
SetBackgroundPicture |
Задает фоновое изображение для рабочего листа |
|
ShowAllData |
Делает все строки фильтруемого списка видимыми. Если используется автофильтрация, вызов данного метода приводит к изменению стрелок на стрелки "Все" |
|
ShowDataForm |
Отображение формы данных, связанной с рабочим листом |
|
Unprotect |
Снимает защиту с рабочего листа. Если на рабочем листе нет защиты, этот метод не работает |
|
Свойства |
|
|
Application |
Данное свойство возвращает объект Microsoft.Office.Interop. Excel.Application, представляющий приложение Microsoft Excel |
|
AutoFilter |
Получает значение Microsoft.Office.Interop.Excel.AutoFilter, если фильтрация включена. Получает значение nullNothingnullptrссылкаnull(Nothingв Visual Basic), если фильтрация выключена |
|
AutoFilterMode |
Возвращает или задает значение, определяющее отображение стрелок раскрывающихся списков автофильтрации на рабочем листе |
|
Cells |
Возвращает объект Range, представляющий все ячейки рабочего листа (а не только используемые в данный момент ячейки) |
|
CircularReference |
Возвращает объект Range, представляющий диапазон, который содержит первую циклическую ссылку на рабочем листе, либо возвращает nullNothingnullptr ссылка null (Nothing в Visual Basic), если на рабочем листе нет циклических ссылок |
|
Columns |
Возвращает объект Range, представляющий все столбцы на рабочем листе |
|
ConsolidationFunction |
Возвращает код функции для текущей консолидации |
|
ConsolidationOptions |
Возвращает массив Arrayпараметров консолидации, состоящий из трех элементов |
|
ConsolidationSources |
Возвращает строковый массив Arrayс именами исходных листов и диапазонов для текущей консолидации рабочего листа |
|
Controls |
Получает коллекцию элементов управления, содержащихся на рабочем листе |
|
Creator |
Возвращает значение, указывающее на приложение, в котором был создан рабочий лист |
|
DisplayPageBreaks |
Возвращает или задает значение, определяющее отображение на рабочем листе разрывов страниц (установленных вручную или автоматически) |
|
EnableCalculation |
Возвращает или задает значение, определяющее, будет ли Microsoft Excel производить автоматический перерасчет рабочего листа при необходимости |
|
EnableOutlining |
Возвращает или задает значение, определяющее отображение символов структуры при использовании защиты только пользовательского интерфейса |
|
EnableSelection |
Возвращает или задает значение, определяющее ячейки на листе, которые могут быть выделены |
|
FilterMode |
Возвращает значение, указывающее, находится ли рабочий лист в режиме фильтрации |
|
Hyperlinks |
Возвращает коллекцию Microsoft.Office.Interop.Excel.Hyperlinks, представляющую гиперссылки на диапазон или рабочий лист |
|
Index |
Возвращает номер индекса рабочего листа в пределах коллекции рабочих листов |
|
ListObjects |
Возвращает коллекцию объектов Microsoft.Office.Interop.Excel.ListObjectна рабочем листе |
|
Name |
Возвращает или задает имя рабочего листа |
|
Next |
Возвращает объект Microsoft.Office.Interop.Excel.Worksheet, представляющий следующий лист |
|
Outline |
Возвращает объект Microsoft.Office.Interop.Excel.Outline, представляющий структуру рабочего листа |
|
PageSetup |
Возвращает объект Microsoft.Office.Interop.Excel.PageSetup, содержащий все параметры настройки страницы для рабочего листа |
|
Previous |
Возвращает объект Microsoft.Office.Interop.Excel.Worksheet, представляющий предыдущий лист |
|
ProtectContents |
Возвращает значение, которое указывает на наличие защиты содержимого рабочего листа (отдельных ячеек) |
|
ProtectDrawingObjects |
Возвращает значение, которое указывает на наличие защиты фигур в объекте |
|
Protection |
Возвращает объект Microsoft.Office.Interop.Excel.Protection, представляющий параметры защиты рабочего листа |
|
QueryTables |
Возвращает коллекцию Microsoft.Office.Interop.Excel.QueryTables, представляющую все таблицы запросов на рабочем листе |
|
Range |
Возвращает объект Microsoft.Office.Interop.Excel.Range, представляющий ячейку или диапазон ячеек |
|
Rows |
Возвращает объект Range, представляющий все строки на рабочем листе |
|
ScrollArea |
Возвращает или задает диапазон, в котором разрешена прокрутка, в виде ссылки на диапазон в формате A1 |
|
Shapes |
Возвращает объект Microsoft.Office.Interop.Excel.Shapes, представляющий все фигуры на рабочем листе |
|
Sort |
Возвращает отсортированные значения в текущем рабочем листе |
|
StandardHeight |
Возвращает стандартную высоту (по умолчанию) в пунктах всех строк на рабочем листе |
|
StandardWidth |
Возвращает или задает стандартную ширину (по умолчанию) всех столбцов на рабочем листе |
|
UsedRange |
Возвращает объект Microsoft.Office.Interop.Excel.Range, который представляет все ячейки, содержащие значение на данный момент |
|
Visible |
Возвращает или задает значение Microsoft.Office.Interop.Excel. XlSheetVisibility, указывающее на то, является ли объект видимым |
|
События |
|
|
ActivateEvent |
Происходит при активации рабочего листа |
|
BeforeDoubleClick |
Происходит при двойном щелчке по листу перед вызовом обработчика двойного щелчка по умолчанию |
|
BeforeRightClick |
Происходит при щелчке правой кнопкой мыши любого листа перед вызовом обработчика щелчка правой кнопкой мыши по умолчанию |
|
Calculate |
Происходит после пересчета рабочего листа |
|
Change |
Происходит, когда в ячейки Worksheetвносятся какие-либо изменения |
|
Deactivate |
Происходит при потере фокуса рабочим листом |
|
FollowHyperlink |
Происходит при переходе по любой гиперссылке на рабочем листе |
|
SelectionChange |
Происходит при изменении выделения на рабочем листе |
|
Startup |
Происходит после запуска рабочего листа и всех кодов инициализации в сборке |
11.2.1. Добавление новых листов
– в проекте уровня документа:
Dim newWorksheet As Excel.Worksheet
newWorksheet = CType(Globals.ThisWorkbook.Worksheets.Add(), _
Excel.Worksheet)
– в проекте уровня приложения:
Dim newWorksheet As Excel.Worksheet
newWorksheet = CType(Me.Application.Worksheets.Add(), _
Excel.Worksheet)
11.2.2. Копирование листов
– в проекте уровня документа:
Globals.Sheet1.Copy(After:=Globals.ThisWorkbook.Sheets(3))
– в проекте уровня приложения:
Dim worksheet1 As Excel.Worksheet = CType( _
Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet)
Dim worksheet3 As Excel.Worksheet = CType( _
Application.ActiveWorkbook.Worksheets(3), Excel.Worksheet)
worksheet1.Copy(After:=worksheet3)
11.2.3. Удаление листов из книг
– путем прямой ссылки на ведущий элемент листа в проекте уровня документа:
Globals.Sheet1.Delete()
– обращением к листу через номер индекса коллекции листов книги Excel в проекте уровня приложения:
CType(Me.Application.ActiveWorkbook.Sheets(4), _
Excel.Worksheet).Delete()
11.2.4. Выбор указанного листа
– использованием ведущего элемента листа в проекте уровня документа:
Globals.Sheet1.Select()
– использованием коллекции листов книги Excel в проекте уровня приложения:
CType(Me.Application.ActiveWorkbook.Sheets(1), _
Excel.Worksheet).Select()
11.2.5. Перечисление всех листов в книге
В настройке уровня документа:
Private Sub ListSheets()
Dim index As Integer = 0
Dim NamedRange1 As _
Microsoft.Office.Tools.Excel.NamedRange = _
Globals.Sheet1.Controls.AddNamedRange( _
Globals.Sheet1.Range("A1"), "NamedRange1")
For Each displayWorksheet As Excel.Worksheet In _
Globals.ThisWorkbook.Worksheets
NamedRange1.Offset(index, 0).Value2 = _
displayWorksheet.Name
index += 1
Next displayWorksheet
End Sub
В надстройке уровня приложения:
Private Sub ListSheets()
Dim index As Integer = 0
Dim rng As Excel.Range = Me.Application.Range("A1")
For Each displayWorksheet As Excel.Worksheet In _
Me.Application.Worksheets
rng.Offset(index, 0).Value2 = displayWorksheet.Name
index += 1
Next displayWorksheet
End Sub
11.2.6. Предварительный просмотр и печать листов
1. Предварительный просмотр страницыперед выводом на печать.
– в проекте уровня документа:
Globals.Sheet1.PrintPreview()