Cómo puedes automatizar Excel e incrustarlo en VB 6
A los desarrolladores de VB se les hace pan comido incrustar una hoja de cálculo de Excel existente en un formulario y luego automatizarlo, todo gracias al empleo del componente Edraw Office Viewer.
En el evento de carga del formulario, los desarrolladores pueden valerse del método Open para adjuntar los archivos *.xls, *.xlsx, *.xslm o *.cvs desde el disco duro o el servidor y abrirlos en un área del formulario. El archivo de Excel puede ser únicamente para lectura, edición completa o prohibido de guardar acorde a diferentes requisitos. Del mismo modo, los desarrolladores pueden automatizar su hoja de cálculo fácilmente con el componente de Excel.
Pulsa aquí para descargar el componente Office Viewer: Soporta VB6, proyecto vb.net para Word, Excel, PowerPoint, Visio y Project
Cómo puedes incrustar el componente de Excel en un formulario VB 6
Usa nuestro artículo como una guía paso por paso para que sepas cómo incrustar la ventana de Excel en un formulario VB.
En primera instancia debes instalar el paquete del archivo officeviewer.ocx, en caso de no tenerlo.
Empieza con Visual Basic y créate un nuevo proyecto estándar. Form1 o formulario No. 1 se crea de forma predeterminada.
En el panel de la Caja de herramientas, haz clic derecho en la región en blanco. Procede pulsando el "Componente...".
Debes fijar el componente Edraw Office Viewer, ubicado en el cuadro de diálogo emergente.
Presiona el botón de Aceptar.
Ahora podrás ver que el componente Office Viewer se agregó en la ventana de la barra de herramientas.
Cámbiate a un formulario VB 6, luego agrégale el componente.
El componente incorpora una buena cantidad de métodos, eventos y propiedades para que personalices la ventana de Excel.
El desarrollador tiene la opción de aprovechar el siguiente código para abrir un archivo de Excel en el evento Form_Load.
Private Sub Form_Load()
EDOffice1.OpenFileDialog
'EDOffice1.OpenWord "d:\test.xlsx"
'EDOffice1.Open "d:\test.xls", "Excel.Application"
End Sub
A propósito de que protejas la hoja de cálculo de Excel de la modificación por parte del usuario final, como desarrollador tienes que añadir el siguiente código en el evento DocumentOpened.
Private Sub EDOffice_DocumentOpened()
EDOffice1.ProtectDoc 1 ' XlProtectTypeNormal
End Sub
Existen ciertas formas envueltas de automatización de Excel disponibles para crear o modificar datos en dicha hoja de cálculos.
bool ExcelAddWorkSheet(long Index);
bool ExcelDeleteWorkSheet(long Index);
bool ExcelActivateWorkSheet(long Index);
long ExcelGetWorkSheetCount();
bool ExcelSetCellValue(long Column, long Row, BSTR Value);
BSTR ExcelGetCellValue(long Column, long Row);
bool ExcelSetRowHeight(long Row, double Height);
bool ExcelSetColumnWidth(long Column, double Width);
afx_msg bool ExcelDeleteRow(long Row);
bool ExcelDeleteColumn(long Column);
bool ExcelInsertRow(long Row);
bool ExcelInsertColumn(long Column);
bool ExcelInsertPageBreakInRow(long Row);
bool ExcelInsertPageBreakInColumn(long Column);
bool ExcelCopyToClipboard();
bool ExcelPasteStringToWorksheet(BSTR bstText);
Cómo puedes manipular Excel usando la automatización de Visual Basic
Presiona donde diga Proyecto y continúa haciéndole clic a Referencias. Te aparecerá el cuadro de diálogo de Referencias. Desliza hacia abajo en la lista hasta que halles la biblioteca de objetos de Microsoft Excel (Biblioteca de objetos de Microsoft Excel xx.x) y prosigue seleccionando el elemento para agregar una referencia a Excel. En caso de que la biblioteca de objetos adecuada para tu versión de Excel no aparece en la lista, ten la certeza de tener instalada correctamente tu versión de Excel.
Haz clic en Aceptar para cerrar el cuadro de diálogo Referencias.
Agrega un CommandButton a Form1.
En la ventana de código de Form1, inserta el siguiente código:
Private Sub Command1_Click()
Dim oXL As Excel.Application
Set oXL = EDOffice1.GetApplication()
Dim oWB As Excel.Workbook
Set oWB = EDOffice1.ActiveDocument()
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
Set oSheet = oWB.ActiveSheet
oSheet.Cells(1, 1).Value = "Primer nombre"
oSheet.Cells(1, 2).Value = "Apellido"
oSheet.Cells(1, 3).Value = "Nombre completo"
oSheet.Cells(1, 4).Value = "Salario"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = xlVAlignCenter
End With
' Crea una matriz para establecer varios valores a la vez.
Dim saNames(5, 2) Como hilo
saNames(0, 0) = "John"
saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
' Rellena A2:B6 con una matriz de valores (Nombres y Apellidos).
oSheet.Range("A2", "B6").Value = saNames
' Rellena C2:C6 con una fórmula relativa (=A2 & " " & B2).
Set oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Rellena D2:D6 con una fórmula (=RAND()*100000) y aplica el formato.
Set oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
Set oRng = oSheet.Range("A1", "D1")
oRng.EntireColumn.AutoFit
oXL.UserControl = True
End Sub
Presiona F5 para ejecutar el proyecto. La automatización de Excel completará las celdas de Excel.
Una cosa a tener en cuenta al automatizar Excel es la Grabadora de macros de Excel. Todavía está allí en Word 2007, pero está oculto en la barra de cinta del desarrollador. Un poco extraño, ya que la grabadora de macros siempre fue la forma más sencilla de automatizar Excel para el usuario promedio y, por lo general, no tienen la cinta de desarrollador visible.
Incrustación de MS Word en VB6 y haciendo automación de Word
Incrustación de MS Office en el programa ASP.NET