Foros del Web » Soporte técnico » Ofimática »

Excel VBA

Estas en el tema de Excel VBA en el foro de Ofimática en Foros del Web. Cómo es la instrucción para programar en Excel una macro en la que lea una línea concreta de un fichero de texto externo donde tengo ...
  #1 (permalink)  
Antiguo 02/04/2007, 07:18
 
Fecha de Ingreso: abril-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Excel VBA

Cómo es la instrucción para programar en Excel una macro en la que lea una línea concreta de un fichero de texto externo donde tengo unos ciertos datos?

Gracias.
Pepe
  #2 (permalink)  
Antiguo 02/04/2007, 07:51
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Excel VBA

Hola Pepepere. Bienvenido a FdW.

Aquí tienes lo que pides:
Código:
Sub leer_determinada_linea_de_un_fichero()
'Creamos el objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'Abrimos el fichero
Set archivo = fso.OpenTextFile("C\Mis documentos\fichero_que_queremos_leer.txt", 1)
'Cargamos en una variable la línea que queremos leer.
'En el ejemplo, leemos la línea 3, para lo cual nos
'saltaremos las 2 primeras líneas del fichero.
For i = 1 To 2
   'saltamos 2 líneas
    archivo.Skipline
Next
'Leemos la línea
contenido = archivo.readline()
'Cerramos el fichero
archivo.Close
'Limpiamos todo
Set fso = Nothing
Set archivo = Nothing
'Escribimos la línea 3 en la celda A1
Range("A1") = contenido
End Sub
Salu2
  #3 (permalink)  
Antiguo 02/04/2007, 08:16
 
Fecha de Ingreso: abril-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Re: Excel VBA

Gracias.
¿Y qué pasa si quiero leer una linea en cada ciclo "for"? Valdría algo asi como:

archivo.readline(i) ?


o una linea concreta? Valdría algo asi como:

archivo.readline(2793) ?

Pepe.
  #4 (permalink)  
Antiguo 02/04/2007, 09:01
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Re: Excel VBA

Pues creo que no te funcionará.

Tienes que saltar líneas como necesites, hasta llegar a la que desees leer.
  #5 (permalink)  
Antiguo 21/07/2008, 19:33
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Excel VBA

Holabuen a 3pies, muy aporte pocas veces he visto en foros una respuesta tan clara y concisa....
  #6 (permalink)  
Antiguo 27/01/2011, 13:49
 
Fecha de Ingreso: enero-2011
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Excel VBA

gracias me ha sido util






http://www.vbaexcel.com/
  #7 (permalink)  
Antiguo 30/04/2012, 23:13
 
Fecha de Ingreso: diciembre-2003
Ubicación: Chihuahua
Mensajes: 23
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Excel VBA

Hola amigos de LWP, tengo un formulario con varios textbox y en su evento KeyPress les pongo vbUpperCase para que me conviertan todo lo que escribo a mayúsculas..... pero son muchos textbox y aunque estoy copiando y pegando, es demasiado el código...... mi pregunta es si puedo realizar esto a todos los textbox en un solo Sub... algo parecido a los rangos?????? de antemano muchas gracias su amigo Jorge
  #8 (permalink)  
Antiguo 02/05/2012, 09:40
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: Re: Excel VBA

Cita:
Iniciado por 3pies Ver Mensaje
Hola Pepepere. Bienvenido a FdW.


Código PHP:
Set archivo fso.OpenTextFile("C\Mis documentos\fichero_que_queremos_leer.txt"1
Solo hice cambio de ruta y nombre y me presenta el error #76 en tiempo de ejecucion

Dice que no encuentra la ruta de aceso y el archivo está en dicha ruta
Código PHP:
Set archivo fso.OpenTextFile("C\0\Formulas.txt"1
En mi caso debe llevar los : a seguir al C
Probado en W7 y XP con Office 2010 y 2003 y funcionando

Código PHP:
Set archivo fso.OpenTextFile("C:\0\Formulas.txt"1
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #9 (permalink)  
Antiguo 10/05/2012, 21:55
 
Fecha de Ingreso: mayo-2012
Mensajes: 1
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Excel VBA

tengo esta macro pero se tarda mucho tiempo en ejecutar hay alguna manera mas paralela de hacerlo, lo que hace es verificar sie l valor de cada celda en un rango es igual a cero y si es verdadero oculta esa fila completa

Sub plan_p5()
Dim a As Variant
For Each a In Range("c768:c839")
If a.Value = 0 Then
a.EntireRow.Hidden = True
Else
a.EntireRow.Hidden = False
End If
Next
End Sub
  #10 (permalink)  
Antiguo 11/05/2012, 14:56
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 16 años, 8 meses
Puntos: 39
Respuesta: Excel VBA

Coloca al inicio de la macro
Application.ScreenUpdating = False
y al final

Application.ScreenUpdating = True

Quedaria así

Sub plan_p5()
Application.ScreenUpdating = False
Dim a As Variant
For Each a In Range("c768:c839")
If a.Value = 0 Then
a.EntireRow.Hidden = True
Else
a.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub

Prueba
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #11 (permalink)  
Antiguo 11/05/2012, 20:15
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Excel VBA

Hola! Johnnatan.
Quizá notes que la siguiente variante es "rapidita":

Código PHP:
Sub plan_p5()
Dim i As LongVecAs Range
Application
.ScreenUpdating False
With Range
("c768:c839")
  .
Rows.Hidden False
  Vec 
Evaluate("IF(" & .Address " = 0, ROW(" & .Address "))")
  
On Error Resume Next
  i 
WorksheetFunction.Small(Vec1)
  If 
0 Then Exit Sub
  Set C 
Cells(i, .Column)
  For 
2 To .Count
    Set C 
Union(CCells(WorksheetFunction.Small(Veci), .Column))
    If 
Err.Number 0 Then Exit For
  
Next i
  Err
.Clear
End With
C
.Rows.Hidden True
Application
.ScreenUpdating True
End Sub 
Saludos, Cacho R.

Cita:
Iniciado por Johnnatanfigueroa Ver Mensaje
tengo esta macro pero se tarda mucho tiempo en ejecutar hay alguna manera mas paralela de hacerlo, lo que hace es verificar sie l valor de cada celda en un rango es igual a cero y si es verdadero oculta esa fila completa

Código PHP:
Sub plan_p5()
Dim a As Variant
For Each a In Range("c768:c839")
   If 
a.Value 0 Then
      a
.EntireRow.Hidden True
   
Else
      
a.EntireRow.Hidden False
   End 
If
Next
End Sub 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 14:04.