aca te dejo justo lo que necesitas.
Visual Basic y Office.
L
as aplicaciones de Microsoft Office son aplicaciones ActiveX. Este tipo de aplicaciones está conformada por una serie de objetos los cuales son accesibles desde otras aplicaciones para poder ser utilizados; por ejemplo, desde Visual Basic se puede hacer referencia a Microsoft Excel (o cualquier otro componente de Office) y utilizar sus objetos e inclusive crear ficheros, funciones, gráficos y todo lo que Excel puede hacer. En este caso se dice que Excel es la aplicación Servidor y Visual Basic es la aplicaciónCliente. Los programas que componen Office ya tienen en su menú HERRAMIENTAS, MACRO, EDITOR DE VISUAL BASIC o desde el teclado con Alt + F11, un Editor de Visual Basic para programar su comportamiento y establece procedimientos definidos por el programador. Desde aquí puede usted examinar los diversos objetos que contiene cada aplicación de Office para luego utilizarlos en Visual Basic 6.0.
En este capítulo se demostrará la relación de uno de los componentes de Office, precisamente Microsoft Excel. Se creará una aplicación de ejemplo y se utilizarán algunos objetos, no todos, como demostración de lo que puede hacerse, queda en manos de usted estudiar desde el mencionado Editor de Visual Basic desde el programa de Office correspondiente sus objetos y colecciones, ya que se procede de forma similar para todos ellos.
Cree un nuevo proyecto estándar y vaya al menú PROYECTO, REFERENCIAS y haga una referencia a Microsoft Excel (por ejemplo Microsoft Excel 9.0 Object Library). Una vez hecho esto dispone de todos los objetos para trabajar en Excel.
Acto seguido debe crearse un objeto que represente a la propia aplicación Servidor, o sea, la aplicación Excel, de la siguiente forma:
Private Xls As Excel.Application
Set Xls=CreateObject(“Excel.Application”)
Si en vez de trabajar con Excel se trabajara por ejemplo con Word, habría que utilizar Word.Application en vez de Excel.Application.
Cuando no se necesite más el objeto puede destruirlo con el método Quit del propio objeto Aplicación (Application).
Microsoft Excel trabaja con Libros; un fichero de Excel es un libro el cual podrá tener como mínimo una hoja y ningún, uno o más gráficos. La aplicación Excel puede tener uno o más libros abiertos. Un libro de excel está representado por un objeto de tipo Workbook, contenido en una colección llamada Workbooks. Una hoja de un libro está representado por un objeto de tipo Worksheet contenido en una colección del objeto Workbook denominada Worksheets. Un gráfico es un objeto de tipo Chart contenido en una colección del objeto Workbook denominada Charts.
Para utilizar entonces un libro cree un objeto de tipo Workbook de la siguiente forma:
Dim Wb As Workbook
Set Wb=Xls.Workbooks.Add
Esta forma agrega un nuevo libro a la aplicación y el objeto Wb apunta a él. Otras formas pueden ser las siguientes:
Set Wb=Xls.Workbooks.Item(1)
Set Wb=Xls.Workbooks.Open(Filename As String)
La primer forma hace referencia al primer libro de la aplicación y la segunda forma hace referencia a un libro que se abrirá con la función Open que recibe como argumento una cadena de caracteres con la ruta y nombre del fichero a abrir.
Para cerrar un libro se utiliza el método Close del objeto Workbook. Este método lleva tres parámetros; el primero de tipo Boolean y especifica si se guardará o no el libro (True o False respectivamente) y su valor por defecto es True; el segundo y tercero se utilizarán en caso de que el primer argumento sea True y especifica el nombre y la ruta del fichero, respectivamente.
Una hoja de cálculo se crea de las siguientes formas:
Dim Ws As Worksheet
Set Ws=Wb.Worksheets.Add
Set Ws=Wb.Worksheets.Item(2)
Donde la primer sentencia Set añade una nueva hoja al libro y la segunda apunta a la segunda hoja del libro.
Excel posee otros objetos para el trabajo con los datos de la hoja de cálculo:
Range(Cell1,[Cell2]): este objeto representa un rango de celdas, donde el argumento Cell1 es obligatorio y es la celda de la parte superior izquierda; el argumento Cell2 es opcional y es la celda de la parte inferior derecha del rango, en caso de omitirse el rango será de una única celda definida por Cell1.
o Select: este método selecciona el rango.
o Clear: borra todo el contenido del rango.
o ColumnWidth: establece o devuelve el ancho de las columnas.
o RowHeight: devuelve o establece la altura de las filas.
o BorderAround([LineStyle]): marca un borde en la selección, el borde se especifica en LineStyle.
Borders: este objeto permite definir todo el aspecto del borde del rango. Tiene sus propiedades como Weight que define el grosor del borde; LineStyle define el tipo de línea; Color y ColorIndex definen el color del borde.
Interior: es un objeto que representa el relleno o interior del rango. Tiene las propiedades Color y ColorIndex que definen el sombreado del rango y Pattern establece el diseño del sombreado.
Cells(Fila,Columna): representa una celda, donde fila y columna es el número de fila y de columna que definen la celda.
Excel también dispone de un objeto llamado WorksheerFunction donde están contenidas todas las funciones de Microsoft Excel (Suma, Promedio, etc.).
Los objetos Column y Row representan una columna y una fila, estos se encuentran dentro de una colección llamada Columns y Rows, respectivamente.
Otro objeto contenido en el objeto Workbook es el objeto Chart que representa un gráfico; se encuentra en una colección denominada Charts del objeto Workbook. Se crea de la siguiente forma:
Dim Ch As Chart
Set Ch=Wb.Charts.Add
Set Ch=Wb.Charts.Item(1)
Donde la primera sentencia Set crea un nuevo gráfico y la segunda apunta a uno ya existente. El objeto Chart tiene las siguientes propiedades:
ChartType: define el tipo de gráfico (de barras, líneas, circular, etc.).
SetSourceData: define los datos que se utilizarán para el gráfico y lleva por argumento el objeto Range de una hoja de cálculo y un valor que indica si se representan los datos por columna o por filas.
Location: define si se colocará en una nueva hoja o dentro de una hoja de cálculo existente.
HasTitle: un valor de tipo Boolean que establece si el gráfico tendrá título o no.
Legend: objeto que representa el cuadro con la leyenda.
Charttitle: objeto que representa el título.
Axes: objeto que representa los ejes; Axes(xlCategory) representa el eje X y Axes(xlValue) representa el eje Y.
Excel dispone de muchos otros objetos objetos que corresponde al programador estudiar.
Ejemplo.
Cree un nuevo proyecto estándar y vaya al menú PROYECTO, REFERENCIAS y haga una referencia a Microsoft Excel.
Inserte dos cajas de texto llamadas txtCateg y txtValor. Luego ingrese dos cuadros de lista de nombre List1 y List2. Por último inserte un botón de nombre cmdExcel y establezca su propiedad Caption con Ver en Excel.
Escriba el siguiente código en el formulario:
Option Explicit
Dim Xls As Excel.Application
Private Sub cmdExcel_Click()
Dim x As Integer, Cld As String
Dim Wb As Workbook, Ws As Worksheet, Ch As Chart
Set Xls = CreateObject("Excel.Application")
Set Wb = Xls.Workbooks.Add
Set Ws = Wb.Worksheets.Item(1)
With Ws
[A1] = "Categoría": [B1] = "Valor"
.Range("A1:B1").Interior.Color = vbRed
For x = 0 To List1.ListCount - 1
.Cells(x + 2, 1) = List1.List(x): .Cells _
(2 + x, 2) = List2.List(x)
Next x
End With
Set Ch = Wb.Charts.Add
Cld = "A2:B" & List2.ListCount + 1
With Ch
.SetSourceData Ws.Range(Cld), 0: .ChartType = _
xl3DColumn
End With
Xls.Visible = True
Set Ch = Nothing: Set Ws = Nothing
Set Wb = Nothing
End Sub
Private Sub Form_Load()
txtValor.Text = 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Xls.Visible = False: Xls.Workbooks.Close: Xls.Quit
Set Xls = Nothing
End Sub
Private Sub txtCate_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
txtValor.SetFocus
End If
End Sub
Private Sub txtValor_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
List1.AddItem txtCate.Text: List2.AddItem _
txtValor.Text
txtCate.Text = "": txtValor.Text = 0 txtCate.SetFocus
End If
End Sub
Este modelo es solamente un ejemplo de lo que puede hacerse vinculando Office y Excel u eventualmente, cualquier otra aplicación de Office.
Para consultas :
Elías G. Castillo
gabicas@montevideo.com.uy