Archivo TXt y envio por Email

28/02/2004 - 06:19 por jpandiani | Informe spam
Tengo unos archivos en txt que en una determinada posicion
dentro del archivo digamos en la linea 32 tiene el destinatario
quiero enviar este archivo a ese destinatario.

lo que hice fue grabar una macro tomando el archivo , abrirlo con el excel y
evitando que se abra en columnas , luego extraer en una posicion con la
funcion extrae de la linea 32 el nombre del destinatario.
No se como pasar esa variable luego a la macro para que la pase como envio.

Desde ya muchas gracias

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
28/02/2004 - 14:29 | Informe spam
Pienso que es mejor abrir el fichero de texto con la instruccion Open de VBA, ir a la línea 32 y almacenar el texto en una variable, algo como:

Sub prueba()
Dim intFich As Integer, btNúmLínea As Byte, strLínea As String
intFich = FreeFile(0)

Open "C:\Ruta\Fichero.txt" For Input Access Read As intFich 'Ruta y nombre del fichero de texto
While btNúmLínea < 32
Line Input #intFich, strLínea
btNúmLínea = btNúmLínea + 1
Wend

'Ahora la variable strLínea tiene almacenada la línea 32 del fichero .txt
MsgBox strLínea

Close intFich
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"jpandiani" escribió en el mensaje news:OHCOepb$
Tengo unos archivos en txt que en una determinada posicion
dentro del archivo digamos en la linea 32 tiene el destinatario
quiero enviar este archivo a ese destinatario.

lo que hice fue grabar una macro tomando el archivo , abrirlo con el excel y
evitando que se abra en columnas , luego extraer en una posicion con la
funcion extrae de la linea 32 el nombre del destinatario.
No se como pasar esa variable luego a la macro para que la pase como envio.

Desde ya muchas gracias


Respuesta Responder a este mensaje
#2 jpandiani
28/02/2004 - 23:18 | Informe spam
muchas gracias.


"Fernando Arroyo" escribió en el mensaje
news:epZN17f$
Pienso que es mejor abrir el fichero de texto con la instruccion Open de
VBA, ir a la línea 32 y almacenar el texto en una variable, algo como:

Sub prueba()
Dim intFich As Integer, btNúmLínea As Byte, strLínea As String
intFich = FreeFile(0)

Open "C:\Ruta\Fichero.txt" For Input Access Read As intFich 'Ruta y
nombre del fichero de texto
While btNúmLínea < 32
Line Input #intFich, strLínea
btNúmLínea = btNúmLínea + 1
Wend

'Ahora la variable strLínea tiene almacenada la línea 32 del fichero
.txt
MsgBox strLínea

Close intFich
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"jpandiani" escribió en el mensaje
news:OHCOepb$
Tengo unos archivos en txt que en una determinada posicion
dentro del archivo digamos en la linea 32 tiene el destinatario
quiero enviar este archivo a ese destinatario.

lo que hice fue grabar una macro tomando el archivo , abrirlo con el excel


y
evitando que se abra en columnas , luego extraer en una posicion con la
funcion extrae de la linea 32 el nombre del destinatario.
No se como pasar esa variable luego a la macro para que la pase como


envio.

Desde ya muchas gracias


Respuesta Responder a este mensaje
#3 jpandiani
03/03/2004 - 01:39 | Informe spam
Fernando: Use un ejemplo de los que tenes en tu pagina para enganchar la
otra instruccion que me pasaste, al final queda plasmado en una hoja de
excel
el resultado que buscaba, y con una segunda macro envio el email,
previamente controlo los arhivos que quiero mandar.

pero por si es de interes la instruccion completa.

Sub DIR_EnHojaDeCálculo()

'Para que este código funcione es necesario establecer una referencia
'a la libreria "Microsoft Scripting Runtime", lo que se hace en
'Herramientas->Referencias, estando en el editor de VBA.

'estas son las declaraciones de otro programa
Dim intFich As Integer, btNúmLínea As Byte, strLínea As String

'intFich = FreeFile(0)

'estas son las que estaban

Dim fso As New FileSystemObject
Dim fsFolder As Folder
Dim fsFile As File
Dim wksH As Worksheet

Dim lngContLínea As Long
lngContLínea = 2

Set fsFolder = fso.GetFolder("C:\aprueba") 'Directorio que se mostrará.
Set wksH = Worksheets("Hoja1") 'Hoja en que se volcarán los datos

On Error GoTo ManejoErrores

With wksH

'Poner algunos títulos en la hoja de cálculo
.Range("A1") = "Nombre"
.Range("B1") = "Tamaño"
.Range("C1") = "Fecha Modif."
.Range("D1") = "Nombre largo"
.Range("E1") = "Nombre Destinatario"

For Each fsFile In fsFolder.Files

.Cells(lngContLínea, 1) = fsFile.ShortName
.Cells(lngContLínea, 2) = fsFile.Size
.Cells(lngContLínea, 3) = fsFile.DateLastModified
.Cells(lngContLínea, 4) = fsFile.Name

intFich = lngContLínea - 1

'Engancho la nueva función que busca dentro del arhivo

Open fsFile For Input Access Read As intFich 'Ruta y nombre
del fichero de texto


While btNúmLínea < 32
Line Input #intFich, strLínea

strLínea = Mid(strLínea, 12, 20)

btNúmLínea = btNúmLínea + 1

Wend

.Cells(lngContLínea, 5) = strLínea
btNúmLínea = 0

Close intFich



' Workbooks.OpenText Filename:=fsFile, Origin:= _
' xlMSDOS, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(0, 2), _
' TrailingMinusNumbers:=True
' Application.CutCopyMode = False

' ActiveSheet.Copy
' ActiveWorkbook.SendMail Recipients:=strLínea, Subject:="Envío
Op"
' ActiveWorkbook.Close savechanges:=False




lngContLínea = lngContLínea + 1



Next fsFile

'anule los subtotales porque no los necesitaba
'.Cells(lngContLínea, 2).FormulaLocal = "=SUMA(B2:B" &
Trim(Str(lngContLínea) - 1) & ")"
'.Range("B2:B" & Trim(Str(lngContLínea))).NumberFormat = "#,##0"
'.Columns("A:D").AutoFit

End With

Set wksH = Nothing
Set fsFile = Nothing
Set fsFolder = Nothing
Set fso = Nothing

Exit Sub

ManejoErrores:
'En Windows XP, algunos ficheros del sistema (como el de paginación)
carecen de nombre corto, por lo que hay que capturar el error que se produce
al intentar acceder a él (propiedad ShortName).
If Err.Number = 5 Then
Resume Next
Else
MsgBox prompt:="Error " & Err.Number & " " & Err.Description,
Buttons:=vbOKOnly + vbCritical
Exit Sub
End If

End Sub





"jpandiani" escribió en el mensaje
news:Oq5rTjk$
muchas gracias.


"Fernando Arroyo" escribió en el mensaje
news:epZN17f$
Pienso que es mejor abrir el fichero de texto con la instruccion Open de
VBA, ir a la línea 32 y almacenar el texto en una variable, algo como:

Sub prueba()
Dim intFich As Integer, btNúmLínea As Byte, strLínea As String
intFich = FreeFile(0)

Open "C:\Ruta\Fichero.txt" For Input Access Read As intFich 'Ruta y
nombre del fichero de texto
While btNúmLínea < 32
Line Input #intFich, strLínea
btNúmLínea = btNúmLínea + 1
Wend

'Ahora la variable strLínea tiene almacenada la línea 32 del fichero
.txt
MsgBox strLínea

Close intFich
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"jpandiani" escribió en el mensaje
news:OHCOepb$
> Tengo unos archivos en txt que en una determinada posicion
> dentro del archivo digamos en la linea 32 tiene el destinatario
> quiero enviar este archivo a ese destinatario.
>
> lo que hice fue grabar una macro tomando el archivo , abrirlo con el


excel
y
> evitando que se abra en columnas , luego extraer en una posicion con la
> funcion extrae de la linea 32 el nombre del destinatario.
> No se como pasar esa variable luego a la macro para que la pase como
envio.
>
> Desde ya muchas gracias
>
>


Respuesta Responder a este mensaje
#4 jpandiani
04/03/2004 - 00:24 | Informe spam
Fernando: Use un ejemplo de los que tenes en tu pagina para enganchar la
otra instruccion que me pasaste, al final queda plasmado en una hoja de
excel
el resultado que buscaba, y con una segunda macro envio el email,
previamente controlo los arhivos que quiero mandar.

pero por si es de interes la instruccion completa.

Sub DIR_EnHojaDeCálculo()

'Para que este código funcione es necesario establecer una referencia
'a la libreria "Microsoft Scripting Runtime", lo que se hace en
'Herramientas->Referencias, estando en el editor de VBA.

'estas son las declaraciones de otro programa
Dim intFich As Integer, btNúmLínea As Byte, strLínea As String

'intFich = FreeFile(0)

'estas son las que estaban

Dim fso As New FileSystemObject
Dim fsFolder As Folder
Dim fsFile As File
Dim wksH As Worksheet

Dim lngContLínea As Long
lngContLínea = 2

Set fsFolder = fso.GetFolder("C:\aprueba") 'Directorio que se mostrará.
Set wksH = Worksheets("Hoja1") 'Hoja en que se volcarán los datos

On Error GoTo ManejoErrores

With wksH

'Poner algunos títulos en la hoja de cálculo
.Range("A1") = "Nombre"
.Range("B1") = "Tamaño"
.Range("C1") = "Fecha Modif."
.Range("D1") = "Nombre largo"
.Range("E1") = "Nombre Destinatario"

For Each fsFile In fsFolder.Files

.Cells(lngContLínea, 1) = fsFile.ShortName
.Cells(lngContLínea, 2) = fsFile.Size
.Cells(lngContLínea, 3) = fsFile.DateLastModified
.Cells(lngContLínea, 4) = fsFile.Name

intFich = lngContLínea - 1

'Engancho la nueva función que busca dentro del arhivo

Open fsFile For Input Access Read As intFich 'Ruta y nombre
del fichero de texto


While btNúmLínea < 32
Line Input #intFich, strLínea

strLínea = Mid(strLínea, 12, 20)

btNúmLínea = btNúmLínea + 1

Wend

.Cells(lngContLínea, 5) = strLínea
btNúmLínea = 0

Close intFich



' Workbooks.OpenText Filename:=fsFile, Origin:= _
' xlMSDOS, StartRow:=1, DataType:=xlFixedWidth,
FieldInfo:=Array(0, 2), _
' TrailingMinusNumbers:=True
' Application.CutCopyMode = False

' ActiveSheet.Copy
' ActiveWorkbook.SendMail Recipients:=strLínea, Subject:="Envío
Op"
' ActiveWorkbook.Close savechanges:=False




lngContLínea = lngContLínea + 1



Next fsFile

'anule los subtotales porque no los necesitaba
'.Cells(lngContLínea, 2).FormulaLocal = "=SUMA(B2:B" &
Trim(Str(lngContLínea) - 1) & ")"
'.Range("B2:B" & Trim(Str(lngContLínea))).NumberFormat = "#,##0"
'.Columns("A:D").AutoFit

End With

Set wksH = Nothing
Set fsFile = Nothing
Set fsFolder = Nothing
Set fso = Nothing

Exit Sub

ManejoErrores:
'En Windows XP, algunos ficheros del sistema (como el de paginación)
carecen de nombre corto, por lo que hay que capturar el error que se produce
al intentar acceder a él (propiedad ShortName).
If Err.Number = 5 Then
Resume Next
Else
MsgBox prompt:="Error " & Err.Number & " " & Err.Description,
Buttons:=vbOKOnly + vbCritical
Exit Sub
End If

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