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

Переводы статьи Переводы статьи
Код статьи: 302094 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

В статье описывается способ автоматизации приложения 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

Свойства

Код статьи: 302094 - Последний отзыв: 29 декабря 2007 г. - Revision: 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

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com