Recuperar archivo desde el campo de una planilla excel
Estimado
Espero que me ayuden necesito realizar una macro que puede recuperar y dejar en una carpeta especial archivos desde el campo de una planilla excel te adjunto ejemplo
8 6560598 1 CHL 35 235595 V 35235595 '3523559518493'
18493
N
255
382
AZ_10839_20110301223649.txt
El campo que se necesita para recuperar los archivos esta en la columna AB de la planilla excel y los datos están con negritas.
Esperando una buena acogida de su parte
Atentamente
guttemberg Pincheira
Espero que me ayuden necesito realizar una macro que puede recuperar y dejar en una carpeta especial archivos desde el campo de una planilla excel te adjunto ejemplo
8 6560598 1 CHL 35 235595 V 35235595 '3523559518493'
18493
N
255
382
AZ_10839_20110301223649.txt
El campo que se necesita para recuperar los archivos esta en la columna AB de la planilla excel y los datos están con negritas.
Esperando una buena acogida de su parte
Atentamente
guttemberg Pincheira
1 Respuesta
Respuesta de Enrique Bernal
1
1
Disculpa pero no entiendo tu necesidad, me podrías explicar un poco mejor, es decir, colocando los nombres de las celdas, los valores que tiene cada una, ¿y diciendo en orden que necesitas hacer...?
Hola, mira te cuento tengo en una planilla excel con n datos dentro de ellos tengo un campo en la columna AB, que la información que tiene en el nombre de un archivo de texto, que se encuentra en una carpeta de mi PC y al momento de analizar la información como resultado aparecen diferencias cuando termino de realizar dicho análisis necesito recuperar todos aquellos archivo que tengo en la columna ab por cada fila de información y traspasarlo a una carpeta x.
Lo que aparece con negreta arriba es la estructura del nombre de los archivos
Espero que este más claro, cualquier duda no dudes en preguntar
De antemano
Gracias
G.P.
Lo que aparece con negreta arriba es la estructura del nombre de los archivos
Espero que este más claro, cualquier duda no dudes en preguntar
De antemano
Gracias
G.P.
¿Entonces necesitas una macro que según el nombre del archivo que se encuentra definido en una celda copie el archivo TXT que se encuentra en algún sitio definido de tu PC y lo pase a otra carpeta según lo definas en alguna celda...?
Revisa y me comentas, ya que tienes que adaptar la maro a la direcciones de tus archivos
Sub Copia_Pega()
'
a = Range("AB1").Value 'Esto te determina el nombre del archivo que debe buscar y pegar puedes modificar el rango segùn tus necesidades
Workbooks.OpenText Filename:="C:\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "C:\Nueva direccion"
ActiveWorkbook.SaveAs Filename:="C:\Nueva direccion\" & a, FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook. Sabe
ActiveWindow. Close
End Sub
Sub Copia_Pega()
'
a = Range("AB1").Value 'Esto te determina el nombre del archivo que debe buscar y pegar puedes modificar el rango segùn tus necesidades
Workbooks.OpenText Filename:="C:\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "C:\Nueva direccion"
ActiveWorkbook.SaveAs Filename:="C:\Nueva direccion\" & a, FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook. Sabe
ActiveWindow. Close
End Sub
Se adjunta 2 ejemplo de los problema que se presenta al ejecutar con rango de selección.
Primer caso
Option Explicit
Dim a As Range
Sub copia()
a = Range("AB2:AB10").Value
Workbooks.OpenText Filename:="D:\ARCHIVOS2\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "D:\ARCHIVOS3\"
ActiveWorkbook.SaveAs Filename:="D:\ARCHIVOS3\" & a, FileFormat:=xlText _
, createBackup:=False
ActiveWorkbook. Sabe
ActiveWindow.Close
End Sub
Entrega este error cuando trato de cambiar el rango e probado con range y string en el tipo de variable (a), en error que me entrega es :
"Se ha producido el error 91 n tiempo de ejecuicón variable de objeto o bloque with no establecido"
Segundo caso
Option Explicit
Dim a As String
Sub copia()
a = Range("AB2:AB10").Value
Workbooks.OpenText Filename:="D:\ARCHIVOS2\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "D:\ARCHIVOS3\"
ActiveWorkbook.SaveAs Filename:="D:\ARCHIVOS3\" & a, FileFormat:=xlText _
, createBackup:=False
ActiveWorkbook. Sabe
ActiveWindow.Close
End Sub
Me entrega el error "Se ha producido el error 13 en tiempo de ejecución no coinciden los tipos
Cuando se coloca un solo rango funciona sin ningún problema
Atentamente
G.P.
Primer caso
Option Explicit
Dim a As Range
Sub copia()
a = Range("AB2:AB10").Value
Workbooks.OpenText Filename:="D:\ARCHIVOS2\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "D:\ARCHIVOS3\"
ActiveWorkbook.SaveAs Filename:="D:\ARCHIVOS3\" & a, FileFormat:=xlText _
, createBackup:=False
ActiveWorkbook. Sabe
ActiveWindow.Close
End Sub
Entrega este error cuando trato de cambiar el rango e probado con range y string en el tipo de variable (a), en error que me entrega es :
"Se ha producido el error 91 n tiempo de ejecuicón variable de objeto o bloque with no establecido"
Segundo caso
Option Explicit
Dim a As String
Sub copia()
a = Range("AB2:AB10").Value
Workbooks.OpenText Filename:="D:\ARCHIVOS2\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "D:\ARCHIVOS3\"
ActiveWorkbook.SaveAs Filename:="D:\ARCHIVOS3\" & a, FileFormat:=xlText _
, createBackup:=False
ActiveWorkbook. Sabe
ActiveWindow.Close
End Sub
Me entrega el error "Se ha producido el error 13 en tiempo de ejecución no coinciden los tipos
Cuando se coloca un solo rango funciona sin ningún problema
Atentamente
G.P.
Para ir por partes, se supone que en una sola celda esta el nombre del archivo, ya que la función value, da como resultado el valor de la celda, es decir no puedes valorar un rango de celdas. Por ahí vamos mal, ya que yo entendía que en una sola celda estaba el nombre del archivo, ¿por qué escoges todo un rango?
Disculpa me explique mal son n fila la planilla excel donde cada fila tiene un nombre de archivo en la columna AB
Atentamente
G.P.
Atentamente
G.P.
Para entendernos, en la columna AB desde una rango inicial estático, hasta un numero de filas designadas por ti tienes varios nombres de archivos.txt que deseas sean copiados en otra ubicación...
Si esto es cierto habría que cambiar la programación para hacer un next, es decir, que hará lo que pides archivo por archivo. No se la cantidad de archivos que sean pero tal vez se demore un poco, esto lo menciono porque la macro no es que se sale a un programa y genera un copiado y pegado, si no que desde excel abre el archivo y lo guarda con otro nombre en la ubicación que deseas, por lo que esta acción la debe hacer uno a uno.
Esto te sirve... SI es así para pasarte el cambio...
¿Por qué puede ser que no te sirva?. Porque si son muchos archivos la macro se va a demorar, va a hacer lo que necesitas, pero siempre considero el tema del tiempo que se demora en ejecutar una macro para considerarla buena o mala, al menos así las mido yo, ya que deben disminuir tiempos en mi trabajo, no aumentarlos
Si esto es cierto habría que cambiar la programación para hacer un next, es decir, que hará lo que pides archivo por archivo. No se la cantidad de archivos que sean pero tal vez se demore un poco, esto lo menciono porque la macro no es que se sale a un programa y genera un copiado y pegado, si no que desde excel abre el archivo y lo guarda con otro nombre en la ubicación que deseas, por lo que esta acción la debe hacer uno a uno.
Esto te sirve... SI es así para pasarte el cambio...
¿Por qué puede ser que no te sirva?. Porque si son muchos archivos la macro se va a demorar, va a hacer lo que necesitas, pero siempre considero el tema del tiempo que se demora en ejecutar una macro para considerarla buena o mala, al menos así las mido yo, ya que deben disminuir tiempos en mi trabajo, no aumentarlos
Si me sirve ya que son máximo una 380 filas que se deben buscar cada archivo y copiarlo
Atentamente
G.P.
Atentamente
G.P.
Prueba con esta macro y me comentas
Sub Copia_Pega()
'
a1 = InputBox("Ingrese la fila inicial de la Lista de Archivos a Copiar", "Lista de Archivos")
b1 = InputBox("Ingrese el Número de Archivos que van a ser copiados, es decir, el largo de la lista", "Número de Archivos")
a1 = a1 - 1
For i = 1 To b1
a1 = a1 + 1
a = Range("AB" & a1).Value 'Esto te determina el nombre del archivo que debe buscar y pegar puedes modificar el rango segùn tus necesidades
Workbooks.OpenText Filename:="C:\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "C:\Nueva direccion"
ActiveWorkbook.SaveAs Filename:="C:\Nueva direccion\" & a, FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
Next i
End Sub
Sub Copia_Pega()
'
a1 = InputBox("Ingrese la fila inicial de la Lista de Archivos a Copiar", "Lista de Archivos")
b1 = InputBox("Ingrese el Número de Archivos que van a ser copiados, es decir, el largo de la lista", "Número de Archivos")
a1 = a1 - 1
For i = 1 To b1
a1 = a1 + 1
a = Range("AB" & a1).Value 'Esto te determina el nombre del archivo que debe buscar y pegar puedes modificar el rango segùn tus necesidades
Workbooks.OpenText Filename:="C:\" & a, Origin:=xlMSDOS, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
ChDir "C:\Nueva direccion"
ActiveWorkbook.SaveAs Filename:="C:\Nueva direccion\" & a, FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
Next i
End Sub
- Compartir respuesta
- Anónimo
ahora mismo