Importación de un excel a access
Tengo una duda conm respecto a importar un archivo de excel a access
Tengo el siguiente código
Private Sub cm_ObtieneExcel_Click()
On Error GoTo msgboxerror:
Dim myTabla As TableDef
Dim sTablaOrigen$, sTablaDestino$
Dim librocrm$
Dim sConnect As String, sconnect1 As String, sSQL As String
Dim jb As Database, dbActiva As Database, base As Database
Dim PASS As Recordset, PASSS As Recordset, pax As Recordset
Dim intWhere As Integer
Dim WBLIBRO As Object
Set base = CurrentDb ' conecta a base de datos
Application.FileDialog(msoFileDialogOpen).Show
DoCmd.Hourglass True
librocrm = Application.FileDialog(msoFileDialogOpen).SelectedItems(1) ' ABRE VENTANA PARA SELECCIONAR ARCHIVO
LIBRO2 = librocrm ' almacena cadena en cuadro de texto libro2
With LIBRO2
intWhere = InStr(.Value, "SELL IN") ' busca en dicho cuadro la palabra semana
If intWhere Then
.SetFocus
LIBRO2 = "SELL IN" & ".XLSM" ' si la encuentra cambia el valor de libro2 por semana.xls
Else
MsgBox "Alerta, este archivo no es el que nececito para importar", vbCritical, "Error en carga de Archivo" ' si no lo encuentra avisa al usuario que no es el archivo que requiere
End If
End With
If LIBRO2 = "SELL IN.XLSM" Then
OPCIONES = Form.Name
Formulario1 = et_Opc1.Caption
DoCmd.OpenQuery "cn_LimpiaTabSellin", acViewNormal 'Limpia la tabla de paso tab_Sell In
Set WBLIBRO = CreateObject("Excel.Application") ' abre el archivo para verificar y cambiar el formato del concentrado y asi cargar la informacion correctaemtne
'WBLIBRO.Visible = True
WBLIBRO.Workbooks.Open (librocrm)
With WBLIBRO.ActiveSheet
WBLIBRO.Range("a2").Select
lastrow = WBLIBRO.Selection.End(xldown).Row
WBLIBRO.Columns("a").Select
WBLIBRO.Selection.NumberFormat = "#"
WBLIBRO.Columns("b").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("c").Select
WBLIBRO.Selection.NumberFormat = "#"
WBLIBRO.Columns("d").Select
WBLIBRO.Selection.NumberFormat = "dd/mm/yyyy"
WBLIBRO.Columns("e").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("f").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("g").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("h").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("i").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("j").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("k").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("l").Select
WBLIBRO.Selection.NumberFormat = "#"
WBLIBRO.Columns("m").Select
WBLIBRO.Selection.NumberFormat = "#"
WBLIBRO.Columns("n").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("o").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("p").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("q").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("r").Select
WBLIBRO.Selection.NumberFormat = "@"
WBLIBRO.Columns("s").Select
WBLIBRO.Selection.NumberFormat = "@"
End With
WBLIBRO.ActiveWorkbook.Close Savechanges:=True ' cierro libro y guardo cambios
WBLIBRO.Application.Quit 'Con esto cierro el Excel
Set WBLIBRO = Nothing
' Abro la hoja de cálculo
Set jb = OpenDatabase(librocrm, False, False, "Excel 8.0; HDR=Yes;")
sTablaOrigen = "[SELL IN$A1:S" & lastrow & "]"
sConnect = "'" & CurrentProject.Path & "\" & CurrentProject.Name & "'"
sSQL = "INSERT INTO Tab_Temp_Sell_In IN " & sConnect & " SELECT * FROM " & sTablaOrigen ' inserto datos de la hoja seleccionada en stablaorigen en la tabla tabtem_expedientes
jb.Execute sSQL
jb.Close
DoCmd. OpenForm "FRM_TEMPORALEXPORTACION" ' se abre formulario temporal para confirmar datos cargados
Forms![frm_temporalexportacion]![importa] = lastrow - 1
Forms![frm_temporalexportacion]![cve_personal] = cve_personal
Forms![frm_temporalexportacion]![NOMBRETOTAL] = NOMBRETOTAL
Forms![frm_temporalexportacion]![función] = función
If Forms![frm_temporalexportacion]!SELLIN.Form.RecordsetClone.RecordCount <> Forms![frm_temporalexportacion]![importa] Then
MsgBox "Se detecto una diferencia entre la carga que obtuvo el sistema y la cantidad de registros favor de revisar el archivo antes de continuar" & vbCrLf & "Causas probables: " & _
vbCrLf & "El archivo tiene datos con un formato incorrecto use macro para validarlo" & _
VbCrLf & "Hay registros duplicados ver tabla dinamica de archivo",, "Revision de Reportes"
Else
MsgBox NOMBRETOTAL & ". A continuación se ábrira una ventana para ver el resultado de la importación", , "Área Control de reportes"
End If
DoCmd.Hourglass False
End If
Exit Sub
msgboxerror:
Dato = Err
If Dato = 5 Then
MsgBox "Operacion cancelada", , "Revision de reportes"
ElseIf Dato = 3052 Then
MsgBox "El Archivo no se importo por las siguientes causas: " & vbCrLf & " 1 El Archivo no cumple con los requisitos que el sistema necesita " & vbCrLf & " 2 Se ha intentado cargar un segundo archivo despues de haber cargado otro, favor de intentar de nuevo ya que se ocupo cierto espacio de memoria al cargar el primer archivo", , "Revision de Reportes"
Else
MsgBox Err.Description
End If
DoCmd.Hourglass False
End Sub
Mi duda surgue ya que al momento de hacer clic en el botón me ejecuta todo bien hasta que pasa a una tabla temporal onde me arroja que la diferecncia del archivo origen no es igual a la carga ya revise mi archivo y la el total de registros es correcto pero al momento de la importacipn me dice que es menos
Que es lo que esta estoy haciendo mal