В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету
Войти

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

Поддержка Office 2003 завершена

8 апреля 2014 г. корпорация Майкрософт прекратила поддержку Office 2003. Это повлияло на обновления программного обеспечения и параметры безопасности. Узнайте, что это значит для вас и какие меры по безопасности можно предпринять.

Аннотация
В статье описывается способ автоматизации приложения Microsoft Excel и способ заполнения многоячеечного диапазона с помощью массива значений. Кроме того, в статье показывается процесс извлечения многоячеечного диапазона в качестве массива при помощи автоматизации.
Дополнительная информация
Для заполнения многоячеечного диапазона без поочередного заполнения ячеек можно указать двухмерный массив в качестве значения для свойства Value объекта Range. Аналогично двухмерный массив значений может быть извлечен из нескольких ячеек одновременно с помощью свойства Value. В присведенных нижеь действиях описывается процесс как дляч установки, так и для извлечения данных с помощью двухмерных массивов.

Создание клиента автоматизации для Microsoft Excel

  1. Запустите Microsoft Visual Studio .NET.
  2. В меню Файл выберите команду Создать, а затем — Проект. Выберите из числа проектов Visual Basic тип Приложение Windows. По умолчанию будет создана форма Form1.
  3. Добавьте ссылку на объектную библиотеку Microsoft Excel Object Library. Для этого выполните следующие действия.
    1. В меню Проект выберите команду Добавить ссылку.
    2. На вкладке COM найдите библиотеку Microsoft Excel Object Library и нажмите кнопку Выбрать.

      Примечание. В состав Microsoft Office 2007 и Microsoft Office 2003 входят основные сборки взаимодействия (PIA). Microsoft Office XP не включает эти сборки, но их можно загрузить.

      Для получения дополнительных сведений об основных сборках взаимодействия для Office XP щелкните следующий номер статьи базы знаний Майкрософт:
      328912 Загрузка основных сборок взаимодействия (PIA) для Microsoft Office XP
    3. Для подтверждения сделанного выбора нажмите кнопку OK в диалоговом окне Add References. Если появится запрос на создание оберток для выбранных библиотек, нажмите кнопку Да.
  4. Для отображения панели инструментов выберите в меню Вид команду Область элементов. Добавьте в форму Form1 две кнопки и флажок.
  5. Установите для свойства Name окна значение FillWithStrings.
  6. Дважды щелкните кнопку Button1. Появится окно кода для формы.
  7. Добавьте следующий программный код в верхнюю часть файла Form1.vb:
    Imports Microsoft.Office.Interop					
  8. В окне кода замените также следующий код:
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click    End Sub					
    этим кодом:
        ' Оставить объекты приложения и книги глобальными, чтобы можно было      'получить в методе Button2_Click данные, установленные в методе Button1_Click.    Dim objApp As Excel.Application    Dim objBook As Excel._Workbook    Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click        Dim objBooks As Excel.Workbooks        Dim objSheets As Excel.Sheets        Dim objSheet As Excel._Worksheet        Dim range As Excel.Range        ' Создание нового экземпляра Excel и открытие новой книги.        objApp = New Excel.Application()        objBooks = objApp.Workbooks        objBook = objBooks.Add        objSheets = objBook.Worksheets        objSheet = objSheets(1)        'Получение диапазона, в котором лежит адрес начальной ячейки        'm_sStartingCell, а его размерность равна m_iNumRows x m_iNumCols.        range = objSheet.Range("A1", Reflection.Missing.Value)        range = range.Resize(5, 5)        If (Me.FillWithStrings.Checked = False) Then            'Создание массива.            Dim saRet(5, 5) As Double            'Заполнение массива.            Dim iRow As Long            Dim iCol As Long            For iRow = 0 To 5                For iCol = 0 To 5                    'Запись счетчика в ячейку.                    saRet(iRow, iCol) = iRow * iCol                Next iCol            Next iRow            'Установка значения range для массива.            range.Value = saRet        Else            'Создание массива.            Dim saRet(5, 5) As String            'Заполнение массива.            Dim EmpID As Long            Dim EmpID As Long            For iRow = 0 To 5                For iCol = 0 To 5                    'Запись адреса строки и столбца в ячейку.                    saRet(iRow, iCol) = iRow.ToString() + "|" + iCol.ToString()                Next iCol            Next iRow            'Установка значения range для массива.            range.Value = saRet        End If        'Возврат управления над Excel пользователю.        objApp.Visible = True        objApp.UserControl = True        'Мини-очистка.        range = Nothing        objSheet = Nothing        objSheets = Nothing        objBooks = Nothing    End Sub					
  9. Вернитесь в режим конструктора для файла Form1 и щелкните дважды элемент Button2.
  10. В коне кода замените также следующий код:
        Private Sub Button2_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button2.Click    End Sub					
    этим кодом:
        Private Sub Button2_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button2.Click        Dim objSheets As Excel.Sheets        Dim objSheet As Excel._Worksheet        Dim range As Excel.Range        'Получение ссылки на первый лист рабочей книги.        On Error Goto ExcelNotRunning        objSheets = objBook.Worksheets        objSheet = objSheets(1)ExcelNotRunning:        If (Not (Err.Number = 0)) Then            MessageBox.Show("Невозможно найти книгу Excel.  Попробуйте нажать кнопку Button1 для " + _            "создания книги Excel с данными до нажатия кнопки Button2.", _            "Книги нет?")            'Автоматизировать Excelневозможно, если невозможно найти созданные данные,             'так что выходим из подпрограммы.            Exit Sub        End If        'Получение диапазона данных.        range = objSheet.Range("A1", "E5")        'Получение данных из диапазона.        Dim saRet(,) As Object        saRet = range.Value        'Определение размерностей массива.        Dim iRows As Long        Dim iCols As Long        iRows = saRet.GetUpperBound(0)        iCols = saRet.GetUpperBound(1)        'Построение строки, содержащей данные из массива.        Dim valueString As String        valueString = "Данные массива" + vbCrLf        Dim rowCounter As Long        Dim colCounter As Long        For rowCounter = 1 To iRows            For colCounter = 1 To iCols                'Запись следующего значения в строку.                valueString = String.Concat(valueString, _                    saRet(rowCounter, colCounter).ToString() + ", ")            Next colCounter            'Запись новой строки.            valueString = String.Concat(valueString, vbCrLf)        Next rowCounter        'Выдача значения массива.        MessageBox.Show(valueString, "Значения массива")        'Мини-очистка.        range = Nothing        objSheet = Nothing        objSheets = Nothing    End Sub					

Проверьте клиент автоматизации

  1. Для создания и запуска примера программы нажмите клавишу F5.
  2. Нажмите кнопку Button1. Microsoft Excel запускается, открывая новую книгу, и ячейки A1:E5 первой таблицы заполнены цифровыми данными из массива.
  3. Нажмите кнопку Button2. Программа извлекает данные из ячеек A1:E5 в новый массив и отображает результаты в диалоговом окне.
  4. Выберите FillWithStrings и нажмите кнопку Button1, чтобы заполнить ячейки A1:E5 строковыми данными.
Ссылки
Для получения дополнительных сведений об использовании массивов для установки и извлечения данных Excel с помощью ранних версий Visual Studio щелкните следующие номера статей базы знаний Майкрософт:
186120 Автоматизация Excel и заполнение диапазона ячеек книги с помощью библиотеки классов MFC (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
(данная ссылка может указывать на материал полностью или частично на английском языке)
186122 Автоматизация Excel и извлечение данных из диапазона ячеек книги с помощью библиотеки классов MFC (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
(данная ссылка может указывать на материал полностью или частично на английском языке)
247412 Способы передачи данных из Visual Basic в Excel
xl2002 xl2003 xl2007
Свойства

Номер статьи: 302094 — последний просмотр: 12/29/2007 10:26:00 — редакция: 6.0

  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • kbhowto kbautomation kbexpertisebeginner KB302094
Отзывы и предложения
ndow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");