Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

¿Como puedo habrir una hoja Excel desde Visual Basic?

Estas en el tema de ¿Como puedo habrir una hoja Excel desde Visual Basic? en el foro de Visual Basic clásico en Foros del Web. Hola a todo el mundo me pregunta es la siguiente ¿Como puedo habrir una hoja Excel desde Visual Basic? Necesito en una rutina del programa ...
  #1 (permalink)  
Antiguo 20/07/2004, 11:44
 
Fecha de Ingreso: marzo-2003
Mensajes: 524
Antigüedad: 21 años, 1 mes
Puntos: 2
¿Como puedo habrir una hoja Excel desde Visual Basic?

Hola a todo el mundo me pregunta es la siguiente ¿Como puedo habrir una hoja Excel desde Visual Basic?

Necesito en una rutina del programa que llame a Excel y que se habla la Planilla Excel con los datos

Alguien que me pueda ayudar muchas gracias
  #2 (permalink)  
Antiguo 20/07/2004, 15:11
 
Fecha de Ingreso: julio-2004
Mensajes: 30
Antigüedad: 19 años, 9 meses
Puntos: 0
Aqui va desde Access a Excel

Public oExcelApp As excel.Application
Public oWs As excel.Worksheet
Public oWb As excel.Workbook
Public sNewXlsFile As String
Public sOldXlsFile As String
Public sRowData As String
Public cEmpresa As String

Const cNUMCOLS = 13
Const cNUMROWS = 1000
Const cFIXEDROWS = 8
Const cCLIPROWS = 500

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub pbGenerar_Click()

sNewXlsFile = "C:\SQL\Archivo_" & CStr(Year(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Day(Date))
sOldXlsFile = "C:\SQL\Hoja.xls"
Set oExcelApp = CreateObject("EXCEL.APPLICATION")
oExcelApp.Visible = False
oExcelApp.Workbooks.Open FileName:=sOldXlsFile, ReadOnly:=False, ignoreReadOnlyRecommended:=True
Set oWs = oExcelApp.ActiveSheet
Set oWb = oExcelApp.ActiveWorkbook
oWs.SaveAs FileName:=sNewXlsFile, FileFormat:=xlNormal
cEmpresa = "Empresa1 S.A."
A_Excel
oWb.Save
oWb.Saved = True
oExcelApp.Quit
Set oWs = Nothing
Set oWb = Nothing
Set oExcelApp = Nothing
Unload Me

End Sub

Sub A_Excel()
Data1.RecordSource = "SELECT DISTINCT En_CQ.Fecha_Carga, En_Ans.ID_Requerimiento as ANS, En_CQ.ID_Requerimiento, Pais, Cliente, Nombre_Sistema, Tipo_Mant, Prioridad, Propietario, Estado, Fecha_Pedido, Fecha_Primera_Resp, Fecha_Est_Termino, Headline, Submitter"
Data1.RecordSource = Data1.RecordSource & " FROM En_CQ LEFT JOIN En_Ans ON En_CQ.ID_Requerimiento = En_Ans.ID_Requerimiento"
Data1.RecordSource = Data1.RecordSource & " WHERE Cliente='" & cEmpresa & "' and Month(En_CQ.Fecha_Carga)= " & CStr(Month(Date)) & " and Year(En_CQ.Fecha_Carga)= " & CStr(Year(Date)) & " and Day(En_CQ.Fecha_Carga)= " & CStr(Day(Date))
Data1.RecordSource = Data1.RecordSource & " ORDER BY Nombre_Sistema, Tipo_Mant, Prioridad"
Data1.Refresh
sStart = "A" & CStr(cFIXEDROWS + 1)
sLtr = Mid$("ABCDEFGHIJKLMNOPQRSTUVWXYZ", cNUMCOLS + 1, 1)
sEnd = sLtr & CStr(cFIXEDROWS + cNUMROWS + 1)

sSelData = ""
lRowCount = 0
lPasteCount = 0

While Not Data1.Recordset.EOF
sRowData = ""
sRowData = sRowData & IIf(IsNull(Data1.Recordset!ANS), "", "SI") & vbTab
sRowData = sRowData & Data1.Recordset!ID_Requerimiento & vbTab
sRowData = sRowData & Data1.Recordset!Pais & vbTab
sRowData = sRowData & Data1.Recordset!Propietario & vbTab
sRowData = sRowData & Data1.Recordset!Nombre_Sistema & vbTab
sRowData = sRowData & Data1.Recordset!Cliente & vbTab
sRowData = sRowData & Data1.Recordset!Tipo_Mant & vbTab
sRowData = sRowData & Data1.Recordset!Prioridad & vbTab
sRowData = sRowData & Data1.Recordset!Estado & vbTab
cFec_Ped = CStr(Data1.Recordset!Fecha_Pedido)
dFec_Ped = Mid(cFec_Ped, 4, 3) & Mid(cFec_Ped, 1, 3) & Mid(cFec_Ped, 7)
sRowData = sRowData & CDate(dFec_Ped) & vbTab
If Not IsNull(Data1.Recordset!Fecha_Primera_Resp) Then
cFec_Ped = CStr(Data1.Recordset!Fecha_Primera_Resp)
dFec_Ped = Mid(cFec_Ped, 4, 3) & Mid(cFec_Ped, 1, 3) & Mid(cFec_Ped, 7)
sRowData = sRowData & CDate(dFec_Ped) & vbTab
Else
sRowData = sRowData & Data1.Recordset!Fecha_Primera_Resp & vbTab
End If
If IsNull(Data1.Recordset!Fecha_Est_Termino) Then
sRowData = sRowData & Data1.Recordset!Fecha_Est_Termino & vbTab
Else
cFec_Ped = CStr(Data1.Recordset!Fecha_Est_Termino)
dFec_Ped = Mid(cFec_Ped, 4, 3) & Mid(cFec_Ped, 1, 3) & Mid(cFec_Ped, 7)
sRowData = sRowData & CDate(dFec_Ped) & vbTab
End If
sRowData = sRowData & Data1.Recordset!Headline & vbTab
sRowData = sRowData & Data1.Recordset!Submitter & vbTab
sRowData = Left$(sRowData, Len(sRowData) - 1)
sSelData = sSelData + sRowData + vbCrLf
lRowCount = lRowCount + 1

If lRowCount = cCLIPROWS Then
Clipboard.Clear
Clipboard.SetText sSelData
sSelData = ""
With oWs
.Range("A" & CStr(lPasteCount * cCLIPROWS + cFIXEDROWS)).Select
.Paste
.Range("A1").Select
End With
lRowCount = 0
lPasteCount = lPasteCount + 1
End If
Data1.Recordset.MoveNext
Wend

Clipboard.Clear
Clipboard.SetText sSelData
With oWs
.Range("A" & CStr(lPasteCount * cCLIPROWS + cFIXEDROWS)).Select
.Paste
.Range("A1").Select
End With
End Sub
  #3 (permalink)  
Antiguo 20/07/2004, 15:15
 
Fecha de Ingreso: julio-2004
Mensajes: 30
Antigüedad: 19 años, 9 meses
Puntos: 0
El programa anterior traspasa datos de Access a Excel, para ello debe existir una plantilla (que previamente he formateado y me permiten tener varios cálculos automáticos). En este ejemplo, dicha planilla se llama "Hoja.xls".

Una vez abierta la grabo con otro nombre "Archivo_" + Año + "_" + Mes + "_" + Día+ ".xls", donde posteriormente la cargo con los datos.

Atte.
Fernando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:05.