Actualizar datos

16/03/2006 - 16:51 por luka | Informe spam
Hola a todos
Tengo que actualizar los datos de una hoja que recibo en formato texto y
siempre con el mismo nombre de fichero trabajo.txt

Quería hacer una macro que me permitiese automatizar pero la macro no me
deja ir mas alla de la pantalla de selección del fichero.
Voy a Datos->Actualizar datos y "se fini" después de la pantalla de
seleccion del fichero no graba mas

Cuando voy a ver el código me pone esto
Range("A2").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
¿Que instrucción tendría que poner o que falta o sobra para que no me
pidiese el nombre del fichero y lo cogiese directamente?

Gracias
Javier B.

Preguntas similare

Leer las respuestas

#1 Adolfo
21/03/2006 - 09:12 | Informe spam
Hola Luka,
Si das a grabar macro y despues siguies los siguientes pasos Datos - Obtener
Datos Externos - Importar Archivo de texto. El código que te genera
(dependiendo de las opciones que pulses) es el siguiente:

Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 21/03/2006 por Adolfo
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\Administrador\Mis
documentos\Activescan.txt", _
Destination:=Range("A1"))
.Name = "Activescan"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(80, 3, 19, 20, 4)
.Refresh BackgroundQuery:=False
End With
End Sub

A partir de aqui puedes ir enredando hasta que consigas lo que quieres, el
problema principal es que la ruta del archivo es estatica y te podría dar
errores si no la modificas en otro ordenador, pero bueno eso tambien tiene
solucion. Pruebalo y me cuentas.

Un saludo,
Adolfo
"luka" <luka79arrobatelefonica.net> escribió en el mensaje
news:%23Mc$
Hola Adolfo.

Gracias por el consejo. Como se poco VB lo que hago normalmente cuando
necesito algo es

1º mirar por aquí (solución casi asegurada)
2º grabar un macro y ver algunas instrucciones
3º tirar el ordenador por la ventana.
4º ver si le ha dado a alguien.

Lo que me comentas
A
> Para hacer lo que tu quieres lo mejor es que pruebes a grabar los pasos


de
> importación con el grabador de macros, el código que te genera es
> perfectamente valido (yo lo he probado y funciona) con el tiempo ya iras
> mejorandolo. No te pongo el código porque el que yo tengo es válido para


un
> archivo con unas condiciones, pero si lo generas veras que la macro te
> define una ruta de acceso al archivo y ya no te pide que lo definas.

es lo que hice en este caso pero si te fijas en el primer correo, el
macro deja de grabar cuando se abre la ventana para pedir el nombre del
fichero
>>>> Cuando voy a ver el código me pone esto
>>>> > >>>> Range("A2").Select
>>>> Selection.QueryTable.Refresh BackgroundQuery:=False
>>>> >
Estoy dandole vueltas al asunto a ver si en vez de actualizar el fichero
puedo importar siempre el fichero y darle así los datos de importación.


Gracias nuevamente
Javier B.
Respuesta Responder a este mensaje
#2 luka
21/03/2006 - 20:06 | Informe spam
Hola Adolfo.

Lo que me comentas en el correo era lo que estaba dándole vueltas y no
acertaba. Lo he hecho y me estaba dando un problema ya que me desplazaba
las columnas de la importación anterior a la derecha. Las celdas de esas
columnas no me interesan hasta la fila 3000, pero en adelante necesitaba
las celdas en su sitio.
He ido quitando cosas y mirando en la ayuda y al final para que no se
desplacen las columnas a mi me ha servido cambiando

.RefreshStyle = xlInsertDeleteCells



por
.RefreshStyle = slOverwriteCells

Tengo que seguir mirando para dejar mas pequeño el código pero por ahora
sirve.

Gracias nuevamente
Javier B.


Adolfo escribió:
Hola Luka,
Si das a grabar macro y despues siguies los siguientes pasos Datos - Obtener
Datos Externos - Importar Archivo de texto. El código que te genera
(dependiendo de las opciones que pulses) es el siguiente:

Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 21/03/2006 por Adolfo
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\Administrador\Mis
documentos\Activescan.txt", _
Destination:=Range("A1"))
.Name = "Activescan"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(80, 3, 19, 20, 4)
.Refresh BackgroundQuery:=False
End With
End Sub

A partir de aqui puedes ir enredando hasta que consigas lo que quieres, el
problema principal es que la ruta del archivo es estatica y te podría dar
errores si no la modificas en otro ordenador, pero bueno eso tambien tiene
solucion. Pruebalo y me cuentas.

Un saludo,
Adolfo
"luka" <luka79arrobatelefonica.net> escribió en el mensaje
news:%23Mc$
Hola Adolfo.

Gracias por el consejo. Como se poco VB lo que hago normalmente cuando
necesito algo es

1º mirar por aquí (solución casi asegurada)
2º grabar un macro y ver algunas instrucciones
3º tirar el ordenador por la ventana.
4º ver si le ha dado a alguien.

Lo que me comentas
A
Para hacer lo que tu quieres lo mejor es que pruebes a grabar los pasos




de
importación con el grabador de macros, el código que te genera es
perfectamente valido (yo lo he probado y funciona) con el tiempo ya iras
mejorandolo. No te pongo el código porque el que yo tengo es válido para




un
archivo con unas condiciones, pero si lo generas veras que la macro te
define una ruta de acceso al archivo y ya no te pide que lo definas.


es lo que hice en este caso pero si te fijas en el primer correo, el
macro deja de grabar cuando se abre la ventana para pedir el nombre del
fichero
Cuando voy a ver el código me pone esto
>>>>>> Range("A2").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
>> Estoy dandole vueltas al asunto a ver si en vez de actualizar el fichero








puedo importar siempre el fichero y darle así los datos de importación.


Gracias nuevamente
Javier B.




Respuesta Responder a este mensaje
#3 luka
24/03/2006 - 18:29 | Informe spam
Hola Adolfo, nuevamente yo, Javier
He estado viendo varias opciones que no me había fijado que estaban,
(uno, o sea yo, se pone hacer algo y va a tiro hecho, sin ver todas las
posibilidades) en concreto las opciones que aparecen en Datos -> Obtener
datos externos -> Propiedades del rango de datos. Jugando con ellas
está la explicación (mas o menos) de todas las opciones que pone el macro.
En concreto la de solicitar el nombre del archivo, me parece que es
.TextFilePromptOnRefresh que en False no lo solicita y en True si lo
pide.

Gracias de nuevo y
Un saludo
Javier B.

Adolfo escribió:
Hola Luka,
Si das a grabar macro y despues siguies los siguientes pasos Datos - Obtener
Datos Externos - Importar Archivo de texto. El código que te genera
(dependiendo de las opciones que pulses) es el siguiente:

Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 21/03/2006 por Adolfo
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\Administrador\Mis
documentos\Activescan.txt", _
Destination:=Range("A1"))
.Name = "Activescan"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(80, 3, 19, 20, 4)
.Refresh BackgroundQuery:=False
End With
End Sub

A partir de aqui puedes ir enredando hasta que consigas lo que quieres, el
problema principal es que la ruta del archivo es estatica y te podría dar
errores si no la modificas en otro ordenador, pero bueno eso tambien tiene
solucion. Pruebalo y me cuentas.

Un saludo,
Adolfo
"luka" <luka79arrobatelefonica.net> escribió en el mensaje
news:%23Mc$
Hola Adolfo.

Gracias por el consejo. Como se poco VB lo que hago normalmente cuando
necesito algo es

1º mirar por aquí (solución casi asegurada)
2º grabar un macro y ver algunas instrucciones
3º tirar el ordenador por la ventana.
4º ver si le ha dado a alguien.

Lo que me comentas
A
Para hacer lo que tu quieres lo mejor es que pruebes a grabar los pasos




de
importación con el grabador de macros, el código que te genera es
perfectamente valido (yo lo he probado y funciona) con el tiempo ya iras
mejorandolo. No te pongo el código porque el que yo tengo es válido para




un
archivo con unas condiciones, pero si lo generas veras que la macro te
define una ruta de acceso al archivo y ya no te pide que lo definas.


es lo que hice en este caso pero si te fijas en el primer correo, el
macro deja de grabar cuando se abre la ventana para pedir el nombre del
fichero
Cuando voy a ver el código me pone esto
>>>>>> Range("A2").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
>> Estoy dandole vueltas al asunto a ver si en vez de actualizar el fichero








puedo importar siempre el fichero y darle así los datos de importación.


Gracias nuevamente
Javier B.




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida