[RESUELTO] Extraer un dato de 13200 archivos diferentes
-
- Mensajes: 21
- Registrado: Jue Sep 03, 2020 11:37 pm
[RESUELTO] Extraer un dato de 13200 archivos diferentes
Hola a todos.
Pués tengo un problema mayúsculo.
Resulta que tengo que extraer un dato de una planilla "Cotizaciones_01_01_1973.xls", a una planilla nueva. y Asi sucesivamente con trece mil doscientas planillas (si señor).
Se me ocurrio utilizar copiar y pegar por medio de pegado especial "enlace" y me devolvio el valor 0 (cero).
No me quede conforme y varie el valor de la planilla en c3 y le puse 7 (siete).
No tuve suerte porque de nuevo me devolvió el valor 0 (cero).
Utilice el metodo mas ortodoxo y escribi la siguiente formula: ='file:///home/matias/documentos/nicolas/fwddolar/series/últimos listados/listadosbcra/Cotizaciones_01_01_1971.xls'#$Hoja1.C3
Pero me devuelve el valor cero y en otras planillas me devuelve #¡REF.
La verdad es que no encuentro manera de extraer el dato que necesito y poder automatizar el proceso.
Gracias a todos.
PD: Puse resuelto al hilo, porque los aportes me resultaron , terminé haciéndolo de manera semi automática y logré el objetivo.
Pués tengo un problema mayúsculo.
Resulta que tengo que extraer un dato de una planilla "Cotizaciones_01_01_1973.xls", a una planilla nueva. y Asi sucesivamente con trece mil doscientas planillas (si señor).
Se me ocurrio utilizar copiar y pegar por medio de pegado especial "enlace" y me devolvio el valor 0 (cero).
No me quede conforme y varie el valor de la planilla en c3 y le puse 7 (siete).
No tuve suerte porque de nuevo me devolvió el valor 0 (cero).
Utilice el metodo mas ortodoxo y escribi la siguiente formula: ='file:///home/matias/documentos/nicolas/fwddolar/series/últimos listados/listadosbcra/Cotizaciones_01_01_1971.xls'#$Hoja1.C3
Pero me devuelve el valor cero y en otras planillas me devuelve #¡REF.
La verdad es que no encuentro manera de extraer el dato que necesito y poder automatizar el proceso.
Gracias a todos.
PD: Puse resuelto al hilo, porque los aportes me resultaron , terminé haciéndolo de manera semi automática y logré el objetivo.
Última edición por mmittelbach el Sab Sep 05, 2020 1:56 am, editado 1 vez en total.
Libre Office 6.0.7.3. en Linux Mint 19.3
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Extraer un dato de 13200 archivos diferentes
Hola.
Te damos la bienvenida al Foro y, por favor, no dejes de leer la Guía de supervivencia.
Te adjunto un archivo que es el que utilizo para lo que comentas pero en Windows y con muchos menos archivos a leer.
El archivo contiene una macro que es la que se encarga de recorrer todos los archivos de la carpeta que se le indique y si el archivo tiene extensión "ODS" o "XLS" lee la misma celda de la misma hoja de cada uno de los archivos encontrados y pega la información obtenida en un nuevo archivo ODS mediante un enlace tipo
En mi caso decirte que me funciona (como máximo tengo que leer unos 60 archivos y tarda unos 15 segundos aproximadamente), ahora bien, en tu caso y al ser tantos miles te aconsejo que primero hagas pruebas con 100 o 200 archivos para ver qué tal y el tiempo que emplea en leerlos.
Este es el código:
Por cierto, si un enlace da como resultado #¡REF! es porque, o bien la celda no existe, o bien la hoja no existe. Esto ocurre, por ejemplo, si intentamos leer en un archivo XLS una columna superior a la IV (256) o una fila superior a 65536 o en un archivo ODS una columna superior a la AMJ (1024) o una fila superior a 1048576.
Saludos cordiales.
Te damos la bienvenida al Foro y, por favor, no dejes de leer la Guía de supervivencia.
Te adjunto un archivo que es el que utilizo para lo que comentas pero en Windows y con muchos menos archivos a leer.
El archivo contiene una macro que es la que se encarga de recorrer todos los archivos de la carpeta que se le indique y si el archivo tiene extensión "ODS" o "XLS" lee la misma celda de la misma hoja de cada uno de los archivos encontrados y pega la información obtenida en un nuevo archivo ODS mediante un enlace tipo
Código: Seleccionar todo
='file:///D:/CARPETA/ARCHIVO_PRUEBAS_01.ods'#$Hoja1.A1
Este es el código:
Código: Seleccionar todo
REM *** BASIC ***
Option Explicit
Sub LeerCeldaArchivoCalc()
'Lee la misma celda de la misma hoja de todos los archivos ODS / XLS
'que se encuentren en la carpeta que se le especifique, pegando la
'información obtenida en un nuevo archivo ODS mediante un enlace
'tipo ='file:///D:/CARPETA/ARCHIVO_PRUEBAS_01.ods'#$Hoja1.A1
Dim EsteDoc As Object
Dim EstaHoja As Object
Dim NuevoDoc As Object
Dim NuevaHoja As Object
Dim Carpeta As String
Dim NomHoja As String
Dim NomCelda As String
Dim FilaActual As Long
Dim Archivo As String
Dim Extension As String
On Error Goto TRATAR_ERROR
EsteDoc = ThisComponent
EstaHoja = EsteDoc.CurrentController.ActiveSheet
With EstaHoja
Carpeta = UCase(.getCellRangeByName("B5").String)
NomHoja = UCase(.getCellRangeByName("B8").String)
NomCelda = UCase(.getCellRangeByName("B11").String)
End With
' Comprobamos que no esté vacía la RUTA del archivo
If Trim(Carpeta) = "" Or IsNull(Carpeta) Then
MsgBox "La RUTA de la CARPETA no debe estar VACÍA", 16, "¡Atención!"
Exit Sub
End If
If Right(Carpeta, 1) <> "\" Then
Carpeta = Carpeta & "\"
End If
If Trim(NomHoja) = "" Or IsNull(NomHoja) Then
MsgBox "El NOMBRE de la HOJA no debe estar VACÍO", 16, "¡Atención!"
Exit Sub
End If
If Trim(NomCelda) = "" Or IsNull(NomCelda) Then
MsgBox "La CELDA no debe estar VACÍA", 16, "¡Atención!"
Exit Sub
End If
'Creamos nuevo documento Calc donde se volcarán los resultados
NuevoDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array())
NuevaHoja = NuevoDoc.Sheets(0)
FilaActual = 0
With NuevaHoja
.getCellByPosition(0, FilaActual).String = "ARCHIVO"
.getCellByPosition(1, FilaActual).String = "VALOR"
Archivo = Dir(Carpeta)
Do While Archivo <> ""
Extension = UCase(Right(Archivo, 3))
If (Extension = "ODS") Or (Extension = "XLS") Then
FilaActual = FilaActual + 1
.getCellByPosition(0, FilaActual).String = Carpeta & Archivo
.getCellByPosition(1, FilaActual).Formula = "=" & Chr(39) & "file:///" & Replace(Carpeta, "\", "/") & _
Archivo & Chr(39) & "#$" & NomHoja & "." & NomCelda
End If
' Leer el siguiente archivo
Archivo = Dir()
Loop
End With
MsgBox "Macro finalizada", 64, "¡Atención!"
Exit Sub
TRATAR_ERROR:
' Por si hubiera que tratar los posibles errores
MsgBox "Se ha producido un ERROR en la ejecución de la macro", 16, "¡Atención!"
End Sub
Saludos cordiales.
- Adjuntos
-
- MACRO_CALC_LEER_CELDA_TODOS_ODS_CARPETA.ods
- LibO Calc 6.4.6
- (12.9 KiB) Descargado 128 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
-
- Mensajes: 21
- Registrado: Jue Sep 03, 2020 11:37 pm
Re: Extraer un dato de 13200 archivos diferentes
Muchas gracias Pepe.
Por ahora lo que hice (solución de carpintería) es hacer un formula que concatena varios pedazos de la instrucción de importar el archivo y como no funciona porque parte de la misma se convierte en hiper enlace, le puse un guion al empezar, conclusión copio y pego y luego tengo que utilizar buscar y reemplazar y reemplazo el guión por vació y me trae el resultado de la importación que es el valor de la celda c3 del archivo externo, pero me sale el cartel bendito de "opciones de importación" al que tengo que darle enter para que traiga el valor, imagínate el trabajo chino!!!
Saludos cordiales.
Matias
PD no se como cargarte una imagen, sino te la envío para que veas, porque el archivo es muy pesado para subirlo
Por ahora lo que hice (solución de carpintería) es hacer un formula que concatena varios pedazos de la instrucción de importar el archivo y como no funciona porque parte de la misma se convierte en hiper enlace, le puse un guion al empezar, conclusión copio y pego y luego tengo que utilizar buscar y reemplazar y reemplazo el guión por vació y me trae el resultado de la importación que es el valor de la celda c3 del archivo externo, pero me sale el cartel bendito de "opciones de importación" al que tengo que darle enter para que traiga el valor, imagínate el trabajo chino!!!
Saludos cordiales.
Matias
PD no se como cargarte una imagen, sino te la envío para que veas, porque el archivo es muy pesado para subirlo
Libre Office 6.0.7.3. en Linux Mint 19.3
-
- Mensajes: 21
- Registrado: Jue Sep 03, 2020 11:37 pm
Re: Extraer un dato de 13200 archivos diferentes
Pepe buenas tardes (días). Acabo de porbar la planilla pero no me extrajo datos. sospecho que puede ser porque le pongo mal la direccion de la carpeta del archivo.
Tu me indicas una dirección tipo "windows" (p.e D:/) pero no se como ponerla porque utilizo linux y la dirección mia es:
/home/matias/Documentos/Nicolas/fwddolar/Series/Ultimos Listados/ListadosBCRA
Tu me indicas una dirección tipo "windows" (p.e D:/) pero no se como ponerla porque utilizo linux y la dirección mia es:
/home/matias/Documentos/Nicolas/fwddolar/Series/Ultimos Listados/ListadosBCRA
Libre Office 6.0.7.3. en Linux Mint 19.3
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Extraer un dato de 13200 archivos diferentes
Hola.
Mi conocimiento de Linux es cero.
A ver si algún integrante del Foro que trabaje con Linux puede probar y modificar la macro según convenga para que funcione también en Linux.
Saludos cordiales.
Mi conocimiento de Linux es cero.
A ver si algún integrante del Foro que trabaje con Linux puede probar y modificar la macro según convenga para que funcione también en Linux.
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Extraer un dato de 13200 archivos diferentes
Código: Seleccionar todo
file:///home/USER/PATH
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
-
- Mensajes: 21
- Registrado: Jue Sep 03, 2020 11:37 pm
Re: Extraer un dato de 13200 archivos diferentes
Gracias Mauricio tengo que anteponer triple barra!!. Voy a probar.
Saludos cordiales.
Buen fin de semana
Saludos cordiales.
Buen fin de semana
Libre Office 6.0.7.3. en Linux Mint 19.3
Re: Extraer un dato de 13200 archivos diferentes
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro