Importar archivos dbf

30/06/2005 - 03:09 por Luis Verme | Informe spam
Al abrir un archivo dbf en Excel, automáticamente se genera un rango que
incluye todos los datos, llamado "Base de Datos". El problema ocurre que
cuando quiero seleccionar ese nombre aparece un error ya que todos los
nombres no deben tener espacios en blanco. Esto es un error del Excel ya que
debería generar automáticamente un nombre "Base_de_Datos" para que trabaje
correctamente. En la versión en inglés no hay problema ya que genera el
nombre "Database". Creo que un pequeño parche de Microsoft corregiría el
problema.

Saludos

Luis Verme

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
30/06/2005 - 09:38 | Informe spam
hola, Luis !

... abrir un archivo dbf en Excel... genera un rango... llamado "Base de Datos"
... seleccionar ese nombre... error ya que... los nombres no deben tener espacios en blanco
... es un error del Excel... que deberia generar automaticamente un nombre "Base_de_Datos"
... la version en ingles... genera el nombre "Database"
... un... parche de Microsoft corregiria el problema.



[hasta donde se, y segun parece... 'efectivamente']... se trata de un 'error' en excel que...
-> sucede SOLO con las versiones 'NO-USA/ingles'... Y con la propiedad 'NameLocal'
[ya que 'el mismo' nombre tiene una propiedad 'Name' que 'devuelve'... 'Database']
-> 'se mantiene'... por 'cuestiones de compatibilidad' -???- [con dBase o...]
[con aplicaciones como 'lotus-123' que SI permitian la generacion y uso de nombres 'con espacios']
-> desde la interfase de usuario... es posible eliminar/modificar/... dicho nombre 'auto-generado' [localmente]
ya que por codigo NO se puede eliminar/modificar/... el nombre [NI Name NI NameLocal]... SOLO 'ocultarlo' :-(
[lo que se podria 'aprovechar' si por codigo quisieras 'crear' uno 'compatible' y ocultar el 'ofensivo'] ;)
-> te expongo un ejemplo al final <- :)) [o... trabajarlo desde la interfase del usuario] :-(
-> otra [posible] alternativa es utilizar/crear/... una consulta de datos externos y abrir el archivo .dbf [p.e.]
[menu] datos / obtener datos externos... / crear nueva consulta... -> y abrir el 'susodicho' archivo
lo que dejaria una consulta externa 'refrescable' y con un nombre 'auto-generado' del tipo: 'DatosExternos1'
-> por lo anterior... no se si este 'planeada' una correccion o parche para solucionar esta [quizas molesta} situacion :-(

comentas?
saludos,
hector.
en un modulo de codigo 'normal' y con el archivo .dbf recien abierto ==Sub Corrige_Nombre_de_Archivos_dBase()
Dim Nombre As String, Formula As String
With Names(1)
Nombre = Application.Substitute(.NameLocal, " ", "_")
Formula = .RefersTo: On Error Resume Next: .Delete
End With
If Names(1).Visible Then Names(1).Visible = False
With Names.Add( _
Name:=Nombre, _
RefersTo:=Formula)
End With
End Sub
Respuesta Responder a este mensaje
#2 Luis Verme
30/06/2005 - 19:00 | Informe spam
Muchas gracias por tu email Héctor Miguel. Podrías explicarme como es que
funciona tu rutina. Yo tengo conocimientos básicos de VBA.
He copiado tu rutina en el archivo dbf y no funciona.

Saludos

Luis Verme

"Héctor Miguel" escribió en el mensaje
news:#
hola, Luis !

> ... abrir un archivo dbf en Excel... genera un rango... llamado "Base de


Datos"
> ... seleccionar ese nombre... error ya que... los nombres no deben tener


espacios en blanco
> ... es un error del Excel... que deberia generar automaticamente un


nombre "Base_de_Datos"
> ... la version en ingles... genera el nombre "Database"
> ... un... parche de Microsoft corregiria el problema.

[hasta donde se, y segun parece... 'efectivamente']... se trata de un


'error' en excel que...
-> sucede SOLO con las versiones 'NO-USA/ingles'... Y con la propiedad


'NameLocal'
[ya que 'el mismo' nombre tiene una propiedad 'Name' que 'devuelve'...


'Database']
-> 'se mantiene'... por 'cuestiones de compatibilidad' -???- [con dBase


o...]
[con aplicaciones como 'lotus-123' que SI permitian la generacion y


uso de nombres 'con espacios']
-> desde la interfase de usuario... es posible eliminar/modificar/...


dicho nombre 'auto-generado' [localmente]
ya que por codigo NO se puede eliminar/modificar/... el nombre [NI


Name NI NameLocal]... SOLO 'ocultarlo' :-(
[lo que se podria 'aprovechar' si por codigo quisieras 'crear' uno


'compatible' y ocultar el 'ofensivo'] ;)
-> te expongo un ejemplo al final <- :)) [o... trabajarlo desde la


interfase del usuario] :-(
-> otra [posible] alternativa es utilizar/crear/... una consulta de datos


externos y abrir el archivo .dbf [p.e.]
[menu] datos / obtener datos externos... / crear nueva consulta... ->


y abrir el 'susodicho' archivo
lo que dejaria una consulta externa 'refrescable' y con un nombre


'auto-generado' del tipo: 'DatosExternos1'
-> por lo anterior... no se si este 'planeada' una correccion o parche


para solucionar esta [quizas molesta} situacion :-(

comentas?
saludos,
hector.
en un modulo de codigo 'normal' y con el archivo .dbf recien abierto


==> Sub Corrige_Nombre_de_Archivos_dBase()
Dim Nombre As String, Formula As String
With Names(1)
Nombre = Application.Substitute(.NameLocal, " ", "_")
Formula = .RefersTo: On Error Resume Next: .Delete
End With
If Names(1).Visible Then Names(1).Visible = False
With Names.Add( _
Name:=Nombre, _
RefersTo:=Formula)
End With
End Sub


Respuesta Responder a este mensaje
#3 Héctor Miguel
30/06/2005 - 23:14 | Informe spam
hola, Luis !

... podrias explicarme como es que funciona tu rutina... tengo conocimientos basicos de VBA.
... he copiado tu rutina en el archivo dbf y no funciona.



el funcionamiento esta basado en la suposicion de que al abrir un archivo .dbf se genera un solo nombre [con espacios]
y el procedimiento es cambiar los espacios por un guion_bajo para 'generar' un [nuevo] nombre que sea 'compatible'
[ademas estoy 'aprovechando' que] existe una forma de 'simular' que es el usuario el que actua en la interfase grafica
[lo anterior para 'lograr' que sea por codigo la 'eliminacion' del nombre auto-generado que resulta 'ofensivo'/inutilizable] ;)

sigue los siguientes pasos y... si cualquier duda... comentas?
saludos,
hector.
=1) inicia excel o... aprovecha un libro 'en blanco' o... cualquiera que tengas abierto y...
2) inicia el editor de vba [menu] herramientas / macro / editor de vb ... {Alt}+{F11}
3) inserta un modulo de codigo 'normal' [menu] insertar / modulo...
4) copia/pega en ese modulo creado las siguientes lineas...
Sub Corrige_Nombre_de_Archivos_dBase()
Dim Nombre As String, Formula As String
Nombre = Application.Substitute(Names(1).NameLocal, " ", "_")
Formula = Names(1).RefersTo
SendKeys "{tab} +{tab}+{tab} {esc}"
Application.Dialogs(xlDialogDefineName).Show
Names.Add Name:=Nombre, RefersTo:=Formula
End Sub
4) [opcional] cierra el editor de vba {Alt}+Q y/o... 'regresa' a excel
5) abre de manera 'normal' el archivo .dbf
6) una vez abierto... ejecuta la macro anterior..
-> [menu] herramientas / macro / macros... o... {Alt}+{F8}
-> selecciona el nombre de la macro ->Corrige_Nombre_de_Archivos_dBase<- y 'ejecutala'
7) ahora ya podras utilizar en excel el nombre [NO... Base de datos sino... Base_de_datos] ;)
Respuesta Responder a este mensaje
#4 Luis Verme
01/07/2005 - 03:11 | Informe spam
Muchas gracias por tu respuesta Héctor.
Inserté tu rutina y ya no existió el error. El problema es que yo agrego los
datos desde Excel al archivo dbf, creo un nuevo rango llamado
"Base_de_Datos" con los datos antiguos y nuevos pero al guardarlos no los
actualiza ya que sólo actualiza los datos que están en el rango que genera
originalmente Excel (Base de Datos). Estoy seguro que si pudiera llamar el
nuevo rango "Base de Datos", si lo guardaría completo.

Alguna idea.

Saludos

Luis Verme
PD ¿Cúal es el uso de Application.Dialogs(xlDialogDefineName).Show
en tu rutina? Yo la tuve que quitar para que funcione bien.


"Héctor Miguel" escribió en el mensaje
news:
hola, Luis !

... podrias explicarme como es que funciona tu rutina... tengo
conocimientos basicos de VBA.
... he copiado tu rutina en el archivo dbf y no funciona.



el funcionamiento esta basado en la suposicion de que al abrir un archivo
.dbf se genera un solo nombre [con espacios]
y el procedimiento es cambiar los espacios por un guion_bajo para
'generar' un [nuevo] nombre que sea 'compatible'
[ademas estoy 'aprovechando' que] existe una forma de 'simular' que es el
usuario el que actua en la interfase grafica
[lo anterior para 'lograr' que sea por codigo la 'eliminacion' del nombre
auto-generado que resulta 'ofensivo'/inutilizable] ;)

sigue los siguientes pasos y... si cualquier duda... comentas?
saludos,
hector.
=> 1) inicia excel o... aprovecha un libro 'en blanco' o...
cualquiera que tengas abierto y...
2) inicia el editor de vba [menu] herramientas / macro / editor de vb
... {Alt}+{F11}
3) inserta un modulo de codigo 'normal' [menu] insertar / modulo...
4) copia/pega en ese modulo creado las siguientes lineas...
Sub Corrige_Nombre_de_Archivos_dBase()
Dim Nombre As String, Formula As String
Nombre = Application.Substitute(Names(1).NameLocal, " ", "_")
Formula = Names(1).RefersTo
SendKeys "{tab} +{tab}+{tab} {esc}"
Application.Dialogs(xlDialogDefineName).Show
Names.Add Name:=Nombre, RefersTo:=Formula
End Sub
4) [opcional] cierra el editor de vba {Alt}+Q y/o... 'regresa' a
excel
5) abre de manera 'normal' el archivo .dbf
6) una vez abierto... ejecuta la macro anterior..
-> [menu] herramientas / macro / macros... o... {Alt}+{F8}
-> selecciona el nombre de la
macro ->Corrige_Nombre_de_Archivos_dBase<- y 'ejecutala'
7) ahora ya podras utilizar en excel el nombre [NO... Base de datos
sino... Base_de_datos] ;)

Respuesta Responder a este mensaje
#5 Héctor Miguel
01/07/2005 - 10:15 | Informe spam
hola, Luis !

... problema... yo agrego los datos desde Excel al archivo dbf
... creo un nuevo rango llamado "Base_de_Datos" con los datos antiguos y nuevos pero al guardarlos no los actualiza
... solo actualiza los datos que estan en el rango que genera originalmente Excel (Base de Datos)
... si pudiera llamar el nuevo rango "Base de Datos", si lo guardaria completo [...]



1) [me temo que] la 'nueva situacion a la inversa'... [pasar de excel al archivo dbf]... 'nos deja... [justo] como al principio' :))
a) los nombres con espacios [auto-generados]... no son 'manipluables' en excel [al menos... de manera 'transparente'] :(
b) [resultan ser] un requisito 'indispensable'... para la actualizacion del archivo dbf de 'nuevos/modificados' datos-excel -?-
2) la [unica] solucion [que le veo] de momento... es 'conservar' el nombre original [con espacios] y...
a) aunque no es 'manipulable' desde excel [si estas dispuesto a no poder seleccionarlo 'directamente por su nombre']...
b) SI puedes modificar sus 'dimensiones' [insertar/eliminar filas/columnas]... 'desde el centro... hacia afuera' -?-
[es decir]... las filas/columnas que insertes/elimines ->en/desde la parte central<- del rango... 'permitiran' que...
el rango [que seguira teniendo el mismo nombre] sera 'ajustado' a sus nuevas dimensiones [con lo cual]...
podras agregar/eliminar/modificar/... los datos anteriores a/con los datos nuevos y... 'regresarlos al archivo dbf ;)
[probablemente] podras -tambien- 'encimarle' un nombre [nuevo] 'Base_de_datos' para 'trabajar/seleccionar' desde excel ;)

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida