Pasar un archivo de word a excel

13 envíos / 0 nuevos
Último envío
dparadap
Imagen de dparadap
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntos
alta: 16/07/2010 - 14:55
Puntos: 260
Pasar un archivo de word a excel

Buenas, tengo un archivo de mediones de obra en word y necesito pasarlo a excel para poder operar con los datos. ¿Hay alguna forma de hacerlo? He intentado a través de archivos xml pero no he sido capaz.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006 - 23:26
Puntos: 4320
Re: Pasar un archivo de word a excel

ufff mediciones en word, mal asunto.

Seguro que ni siquiera está en una tabla ni hay una lógica de párrafos o tabulaciones que ayude.

me temo que va a haber mucha artesanía.

------
Ya sé Excel, pero necesito más ahora en pdf

envios gratis a todo el mundo

dparadap
Imagen de dparadap
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntos
alta: 16/07/2010 - 14:55
Puntos: 260
Re: Pasar un archivo de word a excel

Era lo que me temía. Gracias.

visitante (no verificado)
Imagen de visitante
Re: Pasar un archivo de word a excel

La herramienta más útil que he encontrado yo para las mediciones es este programa.

Wondershare PDF converter.

Es para pasar de PDF a word, excel y varios más. Prueba pasando word a pdf ( guardar como xps o pdf) y luego pasándolo a excel. Es el mejor que he encontrado, y he buscado mucho( de todos modos tendrás que corregir cositas.)

El programa buscalo en TARINGA( viene full)

visitante (no verificado)
Imagen de visitante
Re: Pasar un archivo de word a excel

prueba con este wondershare pdf converter. Es el mejor que he encontrado . Tendrás pasa pdf a excel, word... tendras que pasar el word a pdf( guardar como xls) y luego convertirlo. De todas formas tendrás que modificar cosas. No hay un programa perfecto.

BUSCALO EN TARINGA VIENE FULL

SUERTE.

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 695
Re: Pasar un archivo de word a excel

Supongo que el problema te surge con ficheros RTF (tipo mediciones CLIP). Esto es lo mejor que he encontrado (y puede hacerse programáticamente vía VBA):
- Abres WORD (o una instancia a Word vía VBA).
- Abres el archivo (sin moverte de la primera página, para que no tenga que repaginar) y lo guardas en formato HTML con FILTRO.

La conversión es muy rápida pero poco eficiente, porque probablemente te generará un archivo MUCHO MÁS GRANDE que el RTF original. Yo he llegado a tener 80 MB y puedo asegurarte que Excel los maneja con cierta soltura.

- Abres el archivo con EXCEL (vía MAY+BOTÓN DERECHO --> Abrir con..., vía Excel, o vía VBA). El archivo se importa bien formateado y lo mueve bien (supongo que le hará un filtrado a la información HTML).

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 695
Re: Pasar un archivo de word a excel

La macro para hacerlo (probablemente no funcione sobre Office 2010 64bits, creo, por la función FindWindow...):

'..............................................................................................................................

(Paco... necesitaría ayuda, si sabes, sobre cómo declarar sobre VBA 6.0 el #if cuando hay variables LongPTR, porque me da error en mi office 2003/2007 la declaración PtrSafe)

'..............................................................................................................................
'EN UN MÓDULO VBA:

'Para ejecutar este código, debe establecerse una referencia a la
'Word object library (librería de objetos de Word)
'En el Editor VB --> Tools (herramientas) --> References (referencias)
'Buscar "Microsoft Word n.n Object Library"
'donde "n.n" dependerá de la version de Word que se tenga instalada.

Option Explicit

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Function ComprobarSiAplicacionAbierta(ClassName As String) As Boolean
'Nombre de clase de ventana Programa al que hace referencia
'----------------------------- ------------------------------------
'Omain Microsoft Access
'OpusApp Microsoft Word
'XLMAIN Microsoft Excel
'rctrl_renwnd32 Microsoft Outlook
'MSWinPub Microsoft Publisher
'IEFrame Microsoft Internet Explorer
'Outlook Express Browser Class Outlook Express
'ExploreWClass Explorador de Windows
'WMPAppHost Windows Media Player
'Notepad Bloc de notas
'SciCalc Calculadora
'WordPadClass WordPad
'MsPaintApp Paint

If FindWindow(ClassName, vbNullString) Then ComprobarSiAplicacionAbierta = True

End Function

Public Function SeleccionarDirectorio(Optional ByRef strTitulo As String) As String
If strTitulo = "" Then strTitulo = "Selecciona la ruta"
On Error Resume Next
'evitaría un error en caso de no seleccionar nada o pulsar ESC
With CreateObject("shell.application")
SeleccionarDirectorio = .browseforfolder(0, strTitulo, 0).Items.Item.Path
End With
On Error GoTo 0
End Function

Sub Clip2Excel_Informe()
'Lee un archivo RTF/DOC (tipo mediciones CLIP) y lo convierte en un formato editable de EXCEL
Dim xlInstancia As Excel.Application
Dim xlLibro As Excel.Workbook
Dim xlLibroAuxiliar As Excel.Workbook
Dim strDirectorioBase As String
Dim strNombreHoja As String
Dim lgRespuesta As Long

If ComprobarSiAplicacionAbierta("XLMAIN") = False Then
'comprueba si excel está abierto... que debería estarlo si esta macro corre desde Excel
Set xlInstancia = CreateObject("Excel.Application")
Else
Set xlInstancia = GetObject(, "Excel.Application")
End If

Dim strRuta_y_Nombre_Archivo_Resumen As String
Dim strRuta_y_Nombre_Archivo_RTF_CLIP As String

lgRespuesta = MsgBox("El programa solicita un archivo Excel (que ya exista, o cree uno nuevo con el botón derecho) " & vbNewLine & _
" en el que guardar los datos que importe desde WORD", vbInformation)
strRuta_y_Nombre_Archivo_Resumen = Application.GetOpenFilename("Archivos de excel (*.xls;*.xlsx), *.xls;*.xlsx", _
, "Indique el archivo de resumen de datos CLIP") 'Archivo donde se presentará el resumen de CLIP
If strRuta_y_Nombre_Archivo_Resumen = "Falso" Or strRuta_y_Nombre_Archivo_Resumen = "" Then _
Set xlLibro = xlInstancia.Workbooks.Add
Set xlLibro = xlInstancia.Workbooks.Open(strRuta_y_Nombre_Archivo_Resumen) 'Add
xlInstancia.Visible = True
Dim xlHoja As Excel.Worksheet
Dim xlHojaResumen As Excel.Worksheet

Dim lgFila As Long, lgFilaUltima As Long, lgFilaInicial As Long, lgFilaFinal As Long, lgFilaResumen As Long

Dim lgColumna As Long
Dim strRango As String 'campo nombre para el rango
Dim objRango As Excel.Range
Dim strMensajePrevio_BarraEstado As String

Dim strNombreHojaResumen As String, lgHoja As Long, bExisteHoja As Boolean
Dim bBorrarHoja As Boolean

Dim Columna As Variant
Columna = Array("TODAS", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", _
"AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", _
"BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ")

Dim strRuta_y_Nombre_Archivo As String

lgRespuesta = MsgBox("El programa solicita el directorio en el que estén guardados los archivos RFT/DOC " & vbNewLine & _
"(OJO, porque si encuentra varios los va a importar todos)", vbInformation)
strDirectorioBase = SeleccionarDirectorio("Seleccione el directorio de ubicación de los archivos de mediciones")
strRuta_y_Nombre_Archivo_RTF_CLIP = Dir(strDirectorioBase & "\" & "*.rtf")

Application.ScreenUpdating = False
Application.Calculation = xlManual

Dim lgContador As Long
lgContador = 0
Do While strRuta_y_Nombre_Archivo_RTF_CLIP <> ""
lgContador = lgContador + 1
'Comprobamos si existe la hoja de informe y en caso contrario, la creamos y la asignamos
strNombreHoja = "Mediciones" & "_" & lgContador
For lgHoja = 1 To xlLibro.Worksheets.Count
If xlLibro.Worksheets(lgHoja).Name = strNombreHoja Then
bExisteHoja = True
If MsgBox("Ya existe una hoja de mediciones con el nombre " & "Mediciones" & "_" & lgContador _
& ", ¿desea borrarla para reiniciar el informe? ('No' cancela el programa)", _
vbYesNo, "A D V E R T E N C I A") = vbYes Then
Application.DisplayAlerts = False 'Para que no pregunte confirmación"
xlLibro.Worksheets(lgHoja).Delete
Application.DisplayAlerts = True
bExisteHoja = False
bBorrarHoja = True
Else
Exit Sub
End If
Exit For
End If
Next
If bExisteHoja = False Then xlLibro.Sheets.Add: xlLibro.ActiveSheet.Name = strNombreHoja
Set xlHoja = xlLibro.Worksheets(strNombreHoja)

'MsgBox "1. Copie el contenido del archivo (pulse 'CTRL+E' y luego pulse 'CTRL+C')" & vbCrLf & _
' "2. Cierre WORD (responda SÍ a mantener el contenido en portapapeles)", vbExclamation

strMensajePrevio_BarraEstado = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Por favor, espere..."

Dim wdApp As Word.Application, wdDoc As Word.Document

On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then 'Word no estaba en ejecución
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0

Dim bMuestraAlertas As Boolean
Set wdDoc = wdApp.Documents.Open(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP)

wdApp.Visible = True
wdDoc.Activate

bMuestraAlertas = wdApp.DisplayAlerts
wdApp.DisplayAlerts = False
wdDoc.SaveAs Filename:=Mid(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP, 1, _
Len(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP) - 3) & "htm.xls", _
FileFormat:=wdFormatFilteredHTML, LockComments:=False, Password:="", _
AddToRecentFiles:=False, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False

wdDoc.Close SaveChanges:=wdDoNotSaveChanges
wdApp.DisplayAlerts = bMuestraAlertas
wdApp.Quit

DoEvents
Set xlLibroAuxiliar = _
xlInstancia.Workbooks.Open(VBA.Mid(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP, 1, _
Len(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP) - 3) & "htm.xls")

xlLibroAuxiliar.ActiveSheet.Cells.Copy
DoEvents
xlHoja.Paste
DoEvents
bMuestraAlertas = xlInstancia.DisplayAlerts
xlInstancia.DisplayAlerts = False
xlLibroAuxiliar.Close
Set xlLibroAuxiliar = Nothing
xlInstancia.DisplayAlerts = bMuestraAlertas


'.......................................................................
'Lo que quiera Dios que hagas por en medio, y que quieras programar
'.......................................................................



'Elimina el archivo auxiliar creado
Kill (VBA.Mid(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP, 1, _
Len(strDirectorioBase & "\" & strRuta_y_Nombre_Archivo_RTF_CLIP) - 3) & "htm.xls")
strRuta_y_Nombre_Archivo_RTF_CLIP = Dir 'Siguiente archivo
Loop

Set xlLibro = Nothing
Set xlInstancia = Nothing

End Sub

 

 

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 695
Re: Pasar un archivo de word a excel

Tachán!, ahora sí que conseguí que funcione sin errores. XDDD

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006 - 23:26
Puntos: 4320
Re: Pasar un archivo de word a excel

hola xoan

He llegado tarde, pero creo que tampoco te hubiera podido ser de mucha ayuda.

Imagino que todo esto se basa en que el archivo en word tenga etiquetados los valores entre <pre> o algo por el estilo para que distinga qué irá en cada celda ¿no?

y otra pregunta:

¿por qué defines ese array en la variable columna? da la casualidad que hace unos días tuve que corregir una macro que declaraba algo parecido y aparentemente no lo utilizaba.

------
Ya sé Excel, pero necesito más ahora en pdf

envios gratis a todo el mundo

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 695
Re: Pasar un archivo de word a excel

Hola Paco,

Jeje, "he conseguido que funcione sin errores" el código que posteé, para hacer lo que pedía el primer usuario. 'Sospecho' que no funcionaría en Office 2010 64 bits, pero no lo puedo probar porque no lo uso (como soy tozudo, no me llevo bien con el Ribbon. Si Microsoft no puede adaptarse a lo que yo quiero... ya tendré tiempo de hacer el cambio).

Pero que yo no esté dispuesto a ceder no quiere decir que los demás no lo hagan, y viendo que mis programas recurren a llamadas a APIs, me encuentro con la pega de que no serán compatibles en Office 2010 y se me va la 'estrategia comercial' que tenía en mente... :(((. Por eso la petición de ayuda, no soy capaz de declarar las llamadas a las APIs para 64 bits y 32 bits en el mismo libro.

Respecto a lo del Array... aunque en el código no lo utilizo (al ser un recorte de una macro que uso yo, fue una colada)... es para poder tener el nombre de las celdas por su nombre. Si hago la llamada al objeto Cells(Fila,Columna)... la fila se llama por lo que yo sé, y necesitaba un artificio para que me devolviese rápido el nombre de la columna como yo las veo en la hoja (A,B,C.... AA,AB,... , IV) -sin pensar-. Si entro en un bucle Columna+1, cuando estoy en la iteración 20 ya no sé con qué columna estoy tratando, y así sí, si me posiciono sobre Columna(20) con el código en ejecución, me dirá que es la 'T'... XDD.

No sé si has manejado CLIP/SISPRE, pero los archivos RTF que genera, no hay por donde agarrarlos, 'cochambrosos' a más no poder, imposibles de editar/maquetar. El caso es que hay programas técnicos -no sólo los mencionado- que se empeñan en generar RTF (¿no conocen la versatilidad de XLS/CSV?). Tuve que apañármelas para hacer la conversión desde el RTF, que a la postre es un formato que se maneja extrañamente lento en memoria. Y eso llevó a que encontrase el paso intermedio por HTML como más rápido (y eso que es un paso intermedio adicional).

Saludos

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006 - 23:26
Puntos: 4320
Re: Pasar un archivo de word a excel

No debe de ser sencillo declarar las api's en el mismo libro, porque contínuamente veo complementos con dos versiones, una para 32 y otra para 64.

respecto de los nombres de las columnas, me imaginaba algo así. siempre que puedo me refiero a las posiciones con números Cells(2,3) en vez de con letras, porque así puedo sumar o poner un contador y cosas por el estilo.

En cuanto a Clip/Sispre tampoco te creas que las exportaciones que hacen a Excel son operativas, porque en vez de preocuparse por exportar los datos para poder operar con ellos, prestan más atención a mantener el aspecto, con cosas como filas rellenas de color negro y con muy poca altura, para simular una línea horizontal de separación, por no hablar de las fórmulas, aunque esto se lo puse un una carta abierta: http://www.necesitomas.com/node/166 que supongo que no han leído.

------
Ya sé Excel, pero necesito más ahora en pdf

envios gratis a todo el mundo

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 meses 1 semana
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 695
Re: Pasar un archivo de word a excel

Esa carta, deberías mandarla a... www.fiebdc.org Risa

Lo de las columnas se me ocurrió hace poco, y no es un recurso que use mucho porque es más código y menos eficiente, pero cuando tengo que tratar con CLIP/SISPRE, no hay manera... lo necesito porque me vuelven loco, y hasta que comprendo dónde/cómo ponen cada cosa, esto me resulta de cierta utilidad.

Yo hace tiempo que andaba con lo del Presupuesto en Excel, sabiéndome limitado por las 66356 filas (muy grande tiene que ser el presupuesto para que no entre allí, una carretera de 43 km con varios puentes singulares no llega ni de lejos a esas filas, ni despiezando armadura casi a nivel de barra a barra). Si abro la base de datos de Precio Centro, con sus cientos y pico megas, por supuesto que me hunde el sistema, pero no es el caso... Risa

Detuve el desarrollo cuando me encontré que era prioritario (para poder comer) disponer de un programa de trazado, sobre Excel (para entonces ya era capaz de hacer lo mismo que Bc3toExcel v7, e incluso mover las unidades, generar cuadros de precios y descompuestos... me falta la parte de modificados y certificaciones). El programa de trazado se terminará en 25 días, esto es, antes de año nuevo. El de presupuestos irá después, con otro plazo de ~40 días, espero, con la colaboración, en parte, del señor de www.Mexcel.es (tuvo la deferencia de hacerme visita, XDD), y que tiene ideas que quiero implementar en mi VBA. Espero poder competir de 'tú a tú' con lo más granado del software técnico español en poco tiempo. Y desde Excel, o PlanMaker de SoftMaker/Ashampoo como se sigan poniendo tontos los de Microsoft. Todo se verá...

Me gustaría que trastearas, de conseguir mis propósitos de tener un software estable, y me hicieras críticas (que yo considero que serían todas constructivas).

Un saludo Paco,

Enrique Luengo Corbal

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 3 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 27/12/2006 - 23:26
Puntos: 4320
Re: Pasar un archivo de word a excel

si es para criticar, siempre hay tiempo.

te mando un correo con mi email.

------
Ya sé Excel, pero necesito más ahora en pdf

envios gratis a todo el mundo