Sunteți pe pagina 1din 7

Cómo automatizar Excel desde Visual Basic .

NET para rellenar u


obtener datos de un rango utilizando matrices
Ver los productos a los que se aplica este artículo

Expandir todo | Contraer todo

Resumen

En este artículo se muestra cómo automatizar Microsoft Excel y cómo rellenar un rango de varias celdas con

una matriz de valores. En este artículo se ilustra también cómo recuperar un rango de varias celdas como

una matriz mediante Automatización.


Volver al principio

Más información

Para rellenar un rango de varias celdas sin rellenar las celdas de una en una, puede establecer la propiedad

Value de un objeto Range en una matriz de dos dimensiones. Del mismo modo, es posible recuperar de

una vez una matriz bidimensional de valores para varias celdas utilizando la propiedad Value. En los pasos

siguientes se muestra este proceso tanto para establecer como para recuperar datos utilizando matrices

bidimensionales.

Crear el cliente de Automatización para Microsoft Excel

1. Inicie Microsoft Visual Studio .NET.

2. En el menú Archivo, haga clic en Nuevo y, después, en Proyecto. Seleccione Aplicación para

Windows en los tipos de proyecto de Visual Basic. De forma predeterminada, se crea Form1.

3. Agregue una referencia a la Biblioteca de objetos de Microsoft Excel. Para ello, siga estos

pasos:

1. En el menú Proyecto, haga clic en Agregar referencia.

2. En la ficha COM, busque la Biblioteca de objetos de Microsoft Excel y haga clic en

Seleccionar.

Nota

Microsoft Office 2007 y Microsoft Office 2003 incluye ensamblados de interoperabilidad

primarios (PIA, Primary Interop Assemblies). Microsoft Office XP no incluye PIA, pero se

pueden descargar.
Para obtener información adicional acerca de los PIA de Office XP, haga clic en el

número de artículo siguiente para verlo en Microsoft Knowledge Base:

328912 INFO: Los PIA de Microsoft Office XP ya se pueden descargar

3. Haga clic en Aceptar en el cuadro de diálogo Agregar referencias para aceptar sus

selecciones. Si se le pregunta si desea generar contenedores para las bibliotecas

seleccionadas, haga clic en Sí.

b. En el menú Ver, seleccione Cuadro de herramientas para mostrar el cuadro de herramientas.

Agregue dos botones y una casilla de verificación a Form1.

c. Establezca la propiedad Name de la casilla de verificación en FillWithStrings.

d. Haga doble clic en Button1. Aparecerá la ventana de código del formulario.

e. Agregue lo siguiente al principio de Form1.vb:

f.Imports Microsoft.Office.Interop

g. En la ventana de código, reemplace el código siguiente

h. Private Sub Button1_Click(ByVal sender As System.Object, _


i. ByVal e As System.EventArgs) Handles Button1.Click
j.
k. End Sub

por:

'Keep the application object and the workbook object global, so you can
'retrieve the data in Button2_Click that was set in 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

' Create a new instance of Excel and start a new workbook.


objApp = New Excel.Application()
objBooks = objApp.Workbooks
objBook = objBooks.Add
objSheets = objBook.Worksheets
objSheet = objSheets(1)

'Get the range where the starting cell has the address
'm_sStartingCell and its dimensions are m_iNumRows x m_iNumCols.
range = objSheet.Range("A1", Reflection.Missing.Value)
range = range.Resize(5, 5)

If (Me.FillWithStrings.Checked = False) Then


'Create an array.
Dim saRet(5, 5) As Double

'Fill the array.


Dim iRow As Long
Dim iCol As Long
For iRow = 0 To 5
For iCol = 0 To 5

'Put a counter in the cell.


saRet(iRow, iCol) = iRow * iCol
Next iCol
Next iRow

'Set the range value to the array.


range.Value = saRet
Else
'Create an array.
Dim saRet(5, 5) As String

'Fill the array.


Dim iRow As Long
Dim iCol As Long
For iRow = 0 To 5
For iCol = 0 To 5

'Put the row and column address in the cell.


saRet(iRow, iCol) = iRow.ToString() + "|" +
iCol.ToString()
Next iCol
Next iRow

'Set the range value to the array.


range.Value = saRet
End If

'Return control of Excel to the user.


objApp.Visible = True
objApp.UserControl = True

'Clean up a little.
range = Nothing
objSheet = Nothing
objSheets = Nothing
objBooks = Nothing
End Sub

l. Vuelva a la vista Diseño de Form1 y haga doble clic en Button2.

m. En la ventana de código, reemplace el código siguiente


n. Private Sub Button2_Click(ByVal sender As System.Object, _
o. ByVal e As System.EventArgs) Handles Button2.Click
p.
q. End Sub

por:

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

'Get a reference to the first sheet of the workbook.


On Error Goto ExcelNotRunning
objSheets = objBook.Worksheets
objSheet = objSheets(1)

ExcelNotRunning:
If (Not (Err.Number = 0)) Then
MessageBox.Show("Cannot find the Excel workbook. Try clicking
Button1 to " + _
"create an Excel workbook with data before running Button2.", _
"Missing Workbook?")

'We cannot automate Excel if we cannot find the data we


created,
'so leave the subroutine.
Exit Sub
End If

'Get a range of data.


range = objSheet.Range("A1", "E5")

'Retrieve the data from the range.


Dim saRet(,) As Object
saRet = range.Value

'Determine the dimensions of the array.


Dim iRows As Long
Dim iCols As Long
iRows = saRet.GetUpperBound(0)
iCols = saRet.GetUpperBound(1)

'Build a string that contains the data of the array.


Dim valueString As String
valueString = "Array Data" + vbCrLf

Dim rowCounter As Long


Dim colCounter As Long
For rowCounter = 1 To iRows
For colCounter = 1 To iCols

'Write the next value into the string.


valueString = String.Concat(valueString, _
saRet(rowCounter, colCounter).ToString() + ", ")

Next colCounter

'Write in a new line.


valueString = String.Concat(valueString, vbCrLf)
Next rowCounter

'Report the value of the array.


MessageBox.Show(valueString, "Array Values")

'Clean up a little.
range = Nothing
objSheet = Nothing
objSheets = Nothing
End Sub
Probar el cliente de Automatización

1. Presione F5 para generar y ejecutar el programa de ejemplo.

2. Haga clic en Button1. Microsoft Excel se iniciará con un libro nuevo y las celdas A1:E5 de la

primera hoja se llenarán con datos numéricos de una matriz.

3. Haga clic en Button2. El programa recuperará los datos de las celdas A1:E5 en una nueva

matriz y mostrará los resultados en un cuadro de mensajes.

4. Seleccione FillWithStrings y haga clic en Button1 para rellenar las celdas A1:E5 con los datos

de cadena.

Volver al principio

Referencias

Para obtener información adicional acerca de cómo utilizar matrices para establecer y recuperar datos de

Excel con versiones anteriores de Visual Studio, haga clic en los números de artículo siguientes para verlos

en Microsoft Knowledge Base:

186120 Cómo usar MFC para automatizar Excel y rellenar un rango con una matriz

186122 Cómo usar MFC para automatizar Excel y obtener una matriz desde un rango

247412 INFO: Métodos para transferir datos a Excel desde Visual Basic
Volver al principio

La información de este artículo se refiere a:


Volver al principio

Palabras clave: kbexpertisebeginner kbautomation kbhowto KB302094


Volver al principio

S-ar putea să vă placă și