Visual Basic - importal un archivo .xls

Life is soft - evento anual de software empresarial
 
Vista:

importal un archivo .xls

Publicado por Merlin (1 intervención) el 27/09/2003 01:22:03
estimados amigos programadores quisiera saber como pueda llenar una tabla de una base de datos acces con un archivo .xls usando codigo de visual basic. les agradezca me ayuden de eso depende mi estabilidad laboral.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:importal un archivo .xls

Publicado por Gustavo V (53 intervenciones) el 27/09/2003 20:05:21
Lamento que tu establidad dependa de esto, te adjunto un código que uso y que espero te ayude a mantener tu trabajo

Public Sub LeerHojaDeTareo(cn As ADODB.Connection, idobra As String, fec As Variant, narch As String)
\'OBJETIVO: Leer archivo Excel y completar información de avance por dpto
\'PARÁMETROS idobra: Id de la Obra
\' Fec: Fecha de proceso del tareo
\' narch: Nombre de archivo EXCEL que contiene data
Dim APPEXCEL As New Excel.Application
Dim WBKEXCEL As Excel.Workbook
Dim SHTEXCEL As Excel.Worksheet
Dim idEd As Byte
Dim i As Byte
Dim j As Byte
Dim k As Byte
Dim idAct As Long
Dim totedif As Byte
Dim totpisos As Byte
Dim totdptos As Byte
Dim colactual As Byte
Dim y As Range
Dim r As Range
Dim avance As Double
Screen.MousePointer = vbHourglass
APPEXCEL.Workbooks.Open narch
Set WBKEXCEL = APPEXCEL.ActiveWorkbook
totedif = NumEdificiosProyecto(cn, idobra)
For i = 1 To totedif
colactual = 3
APPEXCEL.Sheets(i).Activate
Set SHTEXCEL = APPEXCEL.ActiveSheet
Set y = SHTEXCEL.UsedRange
idEd = SHTEXCEL.Cells(1, 2)
totpisos = NumPisosPorEdificio(cn, idobra, i)
For j = 1 To totpisos
totdptos = NumDptosPorPisos(cn, idobra, i, j)
For k = 1 To totdptos
For Each r In y.Rows
idAct = SHTEXCEL.Cells(r.Row, 2)
If r.Row > 3 Then
If SHTEXCEL.Cells(r.Row, colactual) <> \"\" Then
ActualizarAvanceActividad idobra, fec, idAct, i, j, k, SHTEXCEL.Cells(r.Row, colactual)
\'Debug.Print shtExcel.Cells(r.Row, colactual)
End If
End If
Next r
colactual = colactual + 1
Next k
Next j
Next i
End Sub

Public Sub ActualizarAvanceActividad(idobra As String, fec As Variant, idActividad As Long, idEd As Byte, np As Byte, dp As Byte, avance As Double)
Dim rs1 As ADODB.Recordset
Dim cn As ADODB.Connection
CreaConexion cn

Set rs1 = New ADODB.Recordset
With rs1
Set .ActiveConnection = cn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Source = \"SELECT PorcAvance FROM tblActividadesxEjecutar WHERE idObra=\'\" & idobra & \"\' AND CONVERT(DATETIME,FecActividad,112)=\'\" & Format(fec, \"yymmdd\") & \"\' AND idActividad=\" & idActividad & _
\" AND idEdif=\" & idEd & \" AND npiso=\" & np & \" AND idDpto=\" & dp
.Open
End With
If rs1.BOF Then
Screen.MousePointer = vbDefault
MsgBox \"No existe ninguna planificación\" & vbCrLf & \"para la fecha indicada\", vbInformation, \"PROCESO TERMINADO\"
Exit Sub
End If
If rs1.RecordCount > 1 Then
Do Until rs1.EOF
rs1!porcAvance = avance / 2
rs1.Update
rs1.MoveNext
Loop
Else
rs1!porcAvance = avance
rs1.MoveNext
End If
Set rs1.ActiveConnection = Nothing
rs1.Close
Set rs1 = Nothing
Cierraconexion cn
Screen.MousePointer = vbDefault
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar