Excel-Visual basic

Hola, quiero abrir un archivo de excel desde VB y colocar una matriz. Tengo esto que es "crear" archivo...
Dim xlApp As Excel Aplication
XlApp = Ctype(CreateObject("Excel.Aplication"), Excel.aplication
XlApp.Quit()
Y para escribir tengo esto..
xlHoja.Cells(1,2) = 5000
xlHoja.Cells(2,2) = 75
xlHoja.Cells(3,1) = "Total"
¿Me puedes apoyar?
De antemano gracias.
Saludos.

1 Respuesta

Respuesta
1
Más sobre el tema en
http://it.internations.net/codigovb/Ficheros/ExtraerExcel.htm
Simplificaré un poco el código:
Parto de un formulario del que se generarán los sucesivosa EXCEL. En un formulario pongo un Common Dialog para obtener un nombre del fichero y un botón. Al pulsar el botón, llamo a la siguiente función pasándole el Dialog de parámetro (todo esto se puede obviar):
Public Sub grabarEnExcel(comDlg As Control)
Dim i As Integer
Dim j As Integer
Dim sArchivo As String
On Error GoTo DialogError
With comDlg
.CancelError = False
.Filter = "Formato Excel (*.xls)|*.xls"
.FilterIndex = 1
.DialogTitle = "Escriba el nombre del archivo en el que guardará los resultados"
.ShowSave
If .FileName = "" Then
Exit Sub
Else
sArchivo = .FileName
End If
End With
On Error GoTo ErrorGenerando
'Este procedimiento será el siguiente
Call EscribeXls("Informe a " & CStr(Date), sArchivo)
Exit Sub
DialogError:
MsgBox Err.Description
Exit Sub
ErrorGenerando:
MsgBox Err.Description
End Sub
'*******
Private Sub EscribeXls(title1 As String, sArchivo As String)
Dim i As Integer
Dim j As Integer
Dim nws As Integer
Dim counter As Integer
Dim excelapp As Excel.Application
Dim excelsheet As Workbook
On Error GoTo ErrorGrabandoEXCEL
Set excelapp = CreateObject("excel.application")
Set excelsheet = excelapp.Workbooks.Add
nws = (excelsheet.Worksheets.Count)
If nws < 5 Then
nws = 5 - nws
excelsheet.Worksheets.Add Count:=nws
End If
'Proceso de la hoja uno excelsheet.Worksheets(1).Activate
'Luego se llama a este procedimiento
Call ProcesarHojaExcelResultadosSectoriales(excelsheet.Worksheets(1), title1)
'Irían más procedimientos como el anterior, uno por hoja del libro con diferentes datos
'Proceso de la hoja de Componentes Producción
On Error GoTo ControladorErrores
excelsheet.SaveAs sArchivo 'filename was declared in Module1 as a public string
On Error GoTo 0
excelsheet.Worksheets(1).Activate
excelapp.Visible = True
'excelsheet.Application.Quit
Set excelsheet = Nothing
Set excelapp = Nothing
Exit Sub
ErrorGrabandoEXCEL:
MsgBox "Error volcando los datos. " & Err.Description, vbInformation, "Atención"
Exit Sub
ControladorErrores:
MsgBox "Error : " & Err.Description
End Sub
'***********
Este procedimiento escribe muchas más líneas en la hoha EXCEL. Solo he dejado los que se llamarán para ser marcados.
Public Sub ProcesarHojaExcelResultadosSectoriales(xHoja As Excel.Worksheet, title1 As String)
On Error GoTo errorResultadosSectoriales
'Comienzo de la primera hoja
With xHoja
.Name = "Resultados Sectoriales"
.Cells(1, 3).Value = title1
'Procedimiento que formatea celdas
Call pMarcarCelda(.Cells(2, 1), NARANJA, "PRODUCCION")
Call pMarcarCelda(.Cells(3, 1), GRIS, "Rama")
Call pMarcarCelda(.Cells(3, 2), GRIS, "Esc. Base")
Call pMarcarCelda(.Cells(3, 3), GRIS, "Simulación")
Call pMarcarCelda(.Cells(3, 4), GRIS, "Dif % ")
Call pMarcarCelda(.Cells(2, 6), NARANJA, "PRECIOS")
Call pMarcarCelda(.Cells(3, 6), GRIS, "Rama")
Call pMarcarCelda(.Cells(3, 7), GRIS, "Esc. Base")
Call pMarcarCelda(.Cells(3, 8), GRIS, "Simulación")
Call pMarcarCelda(.Cells(3, 9), GRIS, "Dif % ")
.Columns(1).EntireColumn.AutoFit
.Columns(6).EntireColumn.AutoFit
End With
Set xHoja = Nothing
Exit Sub
errorResultadosSectoriales:
MsgBox "Error volcando datos de Resultados Sectoriales." & Err.Description, vbInformation
End Sub
'************
Si tienes cualquier duda o problema no dudes en hacérmelo saber. Muchas gracias de antemano por tu interés.
Public Sub pMarcarCelda(xCelda As Range, iColor As Integer, Optional sTexto As String)
On Error GoTo ErrorMarcandoCelda
xCelda.Select
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.ColorIndex = xlAutomatic
End With
With Selection.Interior
.ColorIndex = iColor
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
If sTexto <> "" Then
xCelda.Value = sTexto
End If
Exit Sub
ErrorMarcandoCelda:
MsgBox "Error marcando celda: " & Err.Description, vbError
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas