Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Ofimática (http://www.forosdelweb.com/f90/)
-   -   Excel VBA (http://www.forosdelweb.com/f90/excel-vba-478079/)

Pepepere 02/04/2007 07:18

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

3pies 02/04/2007 07:51

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

Pepepere 02/04/2007 08:16

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.

3pies 02/04/2007 09:01

Re: Excel VBA
 
Pues creo que no te funcionará.

Tienes que saltar líneas como necesites, hasta llegar a la que desees leer.

cinunezb 21/07/2008 19:33

Respuesta: Excel VBA
 
Holabuen a 3pies, muy aporte pocas veces he visto en foros una respuesta tan clara y concisa....

vbaexcel 27/01/2011 13:49

Respuesta: Excel VBA
 
gracias me ha sido util






http://www.vbaexcel.com/

Jorge Leon 30/04/2012 23:13

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

JoaoM 02/05/2012 09:40

Respuesta: Re: Excel VBA
 
Cita:

Iniciado por 3pies (Mensaje 1952929)
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


Johnnatanfigueroa 10/05/2012 21:55

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

JoaoM 11/05/2012 14:56

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

mrocf 11/05/2012 20:15

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 (Mensaje 4185584)
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 




La zona horaria es GMT -6. Ahora son las 07:45.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.