Excel - Error al importar hojas a dbf

   
Vista:

Error al importar hojas a dbf

Publicado por fenix (47 intervenciones) el 12/05/2008 19:58:55
Saludos a tod@s.

Mi problema es bastante raro. Tengo un libro de unas 43 hojas del cual hago copias hoja por hoja y creo un libro por cada hoja, para poder exportarlas a mi manejador de DB. (APPROACH)

Para hacer pruebas siempre les grabo una fila y hasta hoy tengo este problema.
De las 43 hay 3 que generan dificultades al querer migrar. Si tengo solo una fila de datos se presentan dificultades con mi manejador. a)Envia un error en mi manejador, b) lee la hoja(hoja combertida en libro) pero actua como si estubiera vacia.

Con estos libros que me presentan problemas he probado modificado la cantidad de filas por lo que he comprobado que varia asi: El mismo archivo que me genera un error con una fila falla has que le agrego hasta 4 filas entonces no genera error y se migran las cuatro fila.
Debo de tener por lo menos unas 4 filas para que ninguno de ellos falle.

Me pregunto si existe alguna forma de verificar los libros de excell en cuanto a redunciancia etc....

No se que hacer con este problema.
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:Error al importar hojas a dbf

Publicado por Abraham Valencia (2418 intervenciones) el 12/05/2008 22:23:50
y como conviertes a DBF??? alguna macro??? cual es tu macro???? No sera que te falta "normalizar" antes de convertir? en esas hojas con una sola fila, no sera que la toma como encabezados sin datos? etc

Abraham
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

RE:Error al importar hojas a dbf

Publicado por fenix (47 intervenciones) el 12/05/2008 22:54:05
Saludos Abraham.

Para realizar las diferentes copias utilizo codigo, por lo que el tratamiento de los archivos es el mismo. No hago distincion de hojas cuando inicio el proceso de migracion ni tratamiento especial para alguna hoja.

1- Lo que hago primero es que el libro principal lo descompongo en n/libros segun sus hojas y los guardo con el nombre de cada hoja. (agrego el codigo que utilizo).

2- Los datos minimos para migrar a mi manejador de db son tres filas: a)la primera son los nombres de los campos o sea mi encabezado, b)la segunda fila la dejo en blanco para ceparar los datos del encabezado y en la tercera fila inician los datos propiamentedichos.

El manejador reconoce esto e ignora las dos primeras filas, migrando desde la tercerfila en adelante (nota si no le dejo encabezado mi manejador da error).
!Lo curioso es que si a la hoja que me da error por tener una fila le compio la misma fila tres veces mas o cualquier cantidad que pase de cuatro filas, no da el error y es migrada¡.

De este codigo la regla es que todos los archivos son migrados sin problemas. Salvo los archivos del problema. Pero todos son generados en la misma corrida, no estan consecutivos y son siembre los mismos aun que le cambi nombre a las hojas.

Espero que me puedan ayudar.
Gracias.

*------------------------------------------------------
'ESTE ES EL CODIGO QUE UTILIZO que por ciero fue con ayuda de este foro.
Sub MainGrabaFile2()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
respuesta = MsgBox("Haga Click en 'Aceptar' para Iniciar Proceso", vbOKCancel, "Aviso")
If respuesta <> 2 Then

Dim sName$, wbk As Workbook, ws As Worksheet
Crear_carpetas
On Error Resume Next
Windows("SISPS.xls").Activate
Sheets("SPSdtoEMP").Select
ActiveWindow.WindowState = xlMaximized
Set wbk = ActiveWorkbook
For Each ws In wbk.Sheets
With ws
sName = ws.Name
If Is_Valid_File_Name2(sName) Then
.Activate
Range("A3").Select
If ActiveCell <> "" Then
Call Save2(sName)
End If
End If
End With
Next
Set wbk = Nothing
Set ws = Nothing
Sheets("INICIO").Select
Windows("RecuperaSISPS.xls").Activate
'Mostramos el procedimiento
Application.ScreenUpdating = True
MsgBox "Proceso Finalizado Correctamente", vbvbInformation, "Aviso"
End If
End Sub

Private Function Save2(ByVal sFileName As String) As Boolean
Sheets(sFileName).Select
Sheets(sFileName).Copy
ActiveWorkbook.SaveAs Filename:= _
"C:SPSdatmes" & sFileName & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
ActiveWindow.Close

End Function

Private Function Is_Valid_File_Name2(ByVal sName As String) As Boolean
Dim aArray() As String
Dim i&, l&, lCount&, s$, lPos&, sTmp$

Is_Valid_File_Name2 = False

If InStr(1, sName, "") - 1 Then
s = Mid(sName, InStrRev(sName, "") + 1)
Else
s = sName
End If
lPos = InStr(1, s, ".")
If lPos <= 0 Then
s = Trim(s)
sTmp = UCase(s)
Else
sTmp = UCase(Trim(Mid(s, 1, lPos - 1)))
If Len(sTmp) = 0 Then Exit Function
End If
If sTmp = "AUX" Or sTmp = "CON" Or sTmp = "PRN" Then Exit Function
l = Len(s)
If l = 0 Then Exit Function
For i = 1 To l
ReDim Preserve aArray(i)
aArray(i) = Mid(s, i, 1)
Next
If aArray(1) = "." Then Exit Function
lCount = UBound(aArray())
For i = 1 To lCount
If Not aArray(i) Like "[!/:*?""<>|]" Then Exit Function
Next
Erase aArray
Is_Valid_File_Name2 = True
End Function
Sub Crear_carpetas()
'llamamos al objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'pasamos a una variable, la ruta donde se encuentra el
'fichero de excel donde se está ejecutando este código
ruta = ActiveWorkbook.Path
ruta = "C:miCarpeta"
'si el fichero no existe, entonces lo creamos
If Not fso.FolderExists(ruta) Then
fso.CreateFolder (ruta)
End If
If Not fso.FolderExists(ruta & "datmes") Then
fso.CreateFolder (ruta & "datmes")
Else
ruta = "C:miCarpetadatmes"
Kill ruta & "*.xls"
End If
'limpiamos el objeto
Set fso = Nothing
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