Macro copiar de un archivo DBF a mi hoja de cálculo

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
rpjulio
Mensajes: 8
Registrado: Sab Ago 21, 2010 2:07 pm

Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por rpjulio »

De antemano mil gracias por la ayuda que me puedan dar tengo un problema la cual me tiene al borde de la desesperacion pues tengo poco tiempo para entregar este trabajo, el asunto es que tengo un archivo que diseñe con la grabadora de macros es un diseño de pedidos para el vendedor esta hecho en Excel 2007 y mi trabajo es pasar todo esto a openoffice calc por suerte logre rehacer parte de este archivo con la macro de openoffice y alguna que otra cosa averiguando por el internet encontre este foro y logre entrar a la plataforma de startbasic para agregar algunas cosas en este modulo, bueno no quiero cansarlos mas con mi problema y voy a ir directo al grano.
Dentro de este archivo tengo 2 bases de datos (formato dbf) que estan amarrados a mi diseño de pedido y con la grabadora de macro hago que mi base de datos que estan guardados en otra carpeta en red se abra en excel lo copio y lo pego a mi diseño de pedido esto lo hago con la finalidad de tener actualizados mi datos pues estos dbf son base de datos de padron de clientes y el otro es el padron de mercaderias, mi gran problema es que en openoffice no lo logro a hacer con la grabadora de macro cada vez que abro la base de datos dbf se desactiva la macro busque por otros medios de hacerlo pero sin exito envio el detalle de la macro que esta en Office 2007 espero me ayuden y apelo al buen corazon y a la noble labor que realizan ayudando con sus conocimientos a gente como yo que tengo poca experiencia en esto, agradecere infinitamente y tal vez algun dia necesiten de mi ayuda con gusto lo hare
un saludo a la distancia y espero pronto respuesta
gracias
MACRO EN EXCEL 2007

Sub BDATOS1()
'
' BDATOS1 Macro
'

'
Workbooks.Open Filename:="\\Juliorp\Editor\MAEART.DBF"
Cells.Select
Selection.Copy
Windows("DISEÑO DE PEDIDO_4.xlsm").Activate
Sheets("MAEART").Select
Cells.Select
ActiveSheet.Paste
Columns("A:A").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
Sheets("MAEART").Select
Columns("B:B").Select
Selection.Copy
Selection.End(xlToRight).Select
Columns("CT:CT").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Columns("H:H").Select
Selection.Copy
Selection.End(xlToRight).Select
Columns("CU:CU").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Columns("A:A").Select
Selection.Copy
Selection.End(xlToRight).Select
Columns("CV:CV").Select
ActiveSheet.Paste

Range("A1").Select
Windows("MAEART.DBF").Activate
Range("A1").Select
ActiveWindow.Close
Sheets("MODULO DE PEDIDO").Select


Workbooks.Open Filename:="\\Juliorp\Editor\MAECLI.DBF"
Cells.Select
Selection.Copy
Windows("DISEÑO DE PEDIDO_4.xlsm").Activate
Sheets("MAECLI").Select
Cells.Select
ActiveSheet.Paste
Range("B1").Select
Windows("MAECLI.DBF").Activate
Range("F4").Select
Application.CutCopyMode = False
ActiveWindow.Close
Sheets("MODULO DE PEDIDO").Select

End Sub


Editado por el administrador (RGB-es) para cambiar el «todo mayúsculas». Si no lo has hecho aún por favor lee la Guía de supervivencia
openoffice 3.2.1 SO linux 10.04 ubuntu
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por mauricio »

Hola...

No, la grabadora de macros de OOo aun no esta lo suficientemente madura para ciertas tareas y el código que genera la grabadora de macros de Excel crea mucho código innecesario. Lo mejor es que reescribas la macro completamente para trabajar en OOo Calc. Los archivos DBF se abren sin problemas en Calc.

Código: Seleccionar todo

	StarDesktop.loadComponentFromURL( ConvertToURL("\\Juliorp\Editor\MAEART.DBF"), "_blank", 0, Array() )
Pero con al línea anterior no tienes una referencia al documento abierto, lo mejor es regresar una variable para poder manipularlo sin estar activandolo:

Código: Seleccionar todo

Option Explicit

Sub Pruebas()
Dim sRuta As String
Dim oDoc As Object

	sRuta = "\\Juliorp\Editor\MAEART.DBF"
	oDoc = AbrirDBF( sRuta )

End Sub

Function AbrirDBF( Ruta ) As Object
Dim sRuta As String
Dim mArg()
Dim oDocumento As Object

	sRuta = ConvertToUrl( Ruta )
	If Dir( sRuta ) <> "" Then
		oDocumento = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mArg() )
		AbrirDBF = oDocumento
	End If

End Function
Veo que haces muchos movimientos con tus datos, la línea:

Código: Seleccionar todo

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
Separa los datos en columnas, pero generalmente la información de un DBF ya viene lista en columnas, abría que ver tu archivo DBF original

Lo demás es copiar y pegar pero si lo migras tal cual, quedará tan ineficiente como el original, lo mejor es que nos expliques a detalles y si es posible con archivos de ejemplo para ayudarte a migrarla y quede de una forma mucho mejor.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
rpjulio
Mensajes: 8
Registrado: Sab Ago 21, 2010 2:07 pm

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por rpjulio »

Mauricio te agradesco mucho la ayuda que me brindas dejame analizar los datos que me enviastes tratare de enviarte los dbf son un poco pesados ojala logre llegarte gracias te respondo en cuanto tenga algun resultado ;)
openoffice 3.2.1 SO linux 10.04 ubuntu
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por mauricio »

Hola...

No es necesario que envíes todo el archivo DBF, con unos cuantos registros que anexes a este tema, son suficientes para ver la estructura que tienen. Desde Base puedes conectarte a los DBF, tal vez deberías considerar esta opción...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
rpjulio
Mensajes: 8
Registrado: Sab Ago 21, 2010 2:07 pm

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por rpjulio »

Hola Mauricio te envio el archivo en ods este es un diseño de pedido donde el vendedor escribe el RUC y automaticamente sale todos los datos del cliente luego marca el tipo de moneda (soles o dolares),luego dar click en condiciones y te sales la opcion (contra entrega,contado,letras) seguidamente en la 1era.columna donde dice codigo se ecribe el codigo de la mercaderia y veras que sale toda la descripcion del producto como tambien el precio, te daras cuenta como juega esta plantilla de pedido si observas a lado izquierdo hay dos hojas llamadas maeart y maecli estas hojas son las que remplazo con las bases de datos dbf es lo unico que me falta hacer con la macro que me copie los dbf en cada hoja donde dice maeart y maecli de mi archivo espero se pueda hacer esta macro y una vez mas te agradesco la ayuda prestada ahh otra cosa he tenido que depurar un poco de datos de las hojas maecli y maeart para que no pese mucho.
En cuanto a tus codigos que me enviastes no logre ejcutarlo y he tratado de interpretarlo pero no domino mucho el startbasic
Adjuntos
DISEÑO DE PEDIDO_4.ods
(98.47 KiB) Descargado 555 veces
openoffice 3.2.1 SO linux 10.04 ubuntu
rpjulio
Mensajes: 8
Registrado: Sab Ago 21, 2010 2:07 pm

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por rpjulio »

Este es el archivo hecho en xlsm donde actualizar y envio almacen son mi dolor de cabeza gracias
saludos
Julio R.
Adjuntos
DISEÑO DE PEDIDO_4.xlsm
(106.35 KiB) Descargado 483 veces
openoffice 3.2.1 SO linux 10.04 ubuntu
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por mauricio »

El DBF tiene la misma estructura de la hoja MAEART?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
rpjulio
Mensajes: 8
Registrado: Sab Ago 21, 2010 2:07 pm

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por rpjulio »

Asi es Mauricio es la misma estructura solo necesito copiar los dbf a la hoja de maeart y maecli como para probar puedes utilizar un archivo "X" de openoffice calc para ver si funciona, espero hayas comprendido mi problema gracias por tu preocupacion
saludos a la distancia
Julio R.
openoffice 3.2.1 SO linux 10.04 ubuntu
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por mauricio »

Dices que es la misma estructura, pero viendo tu archivo y la macro, casi estoy seguro de que no. Tu hoja MAEART tiene muchas columnas, de las cuales las primeras 10 son: CODART DESCRI UNIDAD IMPBYS COSPRO CANINV PREUNI STOCK CANING IMPING, pero al final de estas se repiten tres: DESCRI | STOCK | CODART, que están en las columnas A, B y H, y que en la macro estas copiando a las columnas CT, CU y CV respectivamente, por lo que deduzco que tu archivo DBF original no tiene la misma estructura. De lo cual deduzco dos cosas: la primera es que deberías revisar el diseño de tu archivo, en una tabla no deberían repetirse los campos, si ya los tienes, solo has la referencia correcta y dos, no entiendo por que no mencionan TODOS los detalles para poder ayudarles, es mucho más sencillo y rápido pues el tiempo lo podemos dedicar a resolver el problema y no a analizar como esta el problema. Te lo mencione en mi primer respuesta, entre más detalles des es más fácil ayudarte. Por favor, vuelve a intentar detallar tu necesidad.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
rpjulio
Mensajes: 8
Registrado: Sab Ago 21, 2010 2:07 pm

Re: Macro copiar de un archivo DBF a mi hoja de cálculo

Mensaje por rpjulio »

Te pido disculpas fui torpe y meresco un jalon de orejas jejeje... me olvide que las columnas que mencionas los adicione con la grabadora de macro copie las columnas DESCRI-STOCK-CODART(COLUMAS B-H-A) en las ´ultimas columnas (CT-CU-CV) por que si te fijas en mi formula de la hoja "MODULO DE PEDIDO" columna "AGENCIA: DESCRPCION" (5ta.columna) da referencia a la "TABLA DE CRITERIOS" y condiciono "SI"y"BUSCARV" a 2 campos en el modulo de pedido, la 1era.condicion es la 1era.columna codigo si el vendedor tiene ese dato automaticamente saldra la descripcion del producto y la 2da.condicion si el vendedor no tiene el codigo puedes poner el modelo mercaderia que es la 4ta.columna de la hoja "MODELO DE PEDIDO" si te vas a la hoja de maeart veras que es la columa "MODMERC"(COLUMNA CS) y es donde termina las columnas de la original base de datos MAEART.DBF ¿por que lo adicione estas columnas al final? por que mis formulas no me votaba el resultado bajo el orden de la base de batos original y por salir del apuro hice este pequeño truco ojala no te hayas mareado con todo este detalle sorry por la torpeza.
Pero viendo bien ya que me mensionas esta observacion solo necesito que la macro me abra el maeart.dbf que esta guardado en una carpeta y lo copie en la hoja de maeart de mi archivo diseño de pedido_4.ods y con la grabadora de la macro adicionar el eliminar las columnas que no necesito para mi modulo de pedido, es lo unico que busco igual es para la base de datos maecli.dbf ojo en maecli si esta bajo la misma estructura de la base de datos original.
Si ves muchas columnas en las bases de datos es por que el programador lo hizo asi fue bajo clipper, espero me tengas paciencia con mi problema y si necesitas mas datos te lo envio si es posible te mando los dbf con pocos datos para que no pesen eso lo trabajo con el DBU.EXE para quitarle los datos y veas la estructura.
Bueno Mauricio un abrazo a la distancia y espero pronta respuesta
chau
openoffice 3.2.1 SO linux 10.04 ubuntu
Responder