Macro para exportar un dato a archivo de Texto

16/06/2006 - 15:15 por groman83 | Informe spam
Tengo un libro llamado Facturacion, en dicho libro hay una hoja llamada
'FormatoFactura' y otra llamada 'cliente'. En la celda A:3 de la hoja
'FormatoFactura' guardo el número de facturas que se vayan realizando, y
através de código en una macro voy incrementando el valor de dicha celda:
1,2,3,4,5, etc, etc.
Tengo dos botones:
El primer botón es para crear un nuevo cliente e invoca un formulario para
ingresar la información pertinente a los clientes y que es almacenada en
la hoja con el mismo nombre.
El segundo botón invoca también un formulario para crear nueva factura en
en cual el usuario selecciona cualquier cliente almacenado en la hoja
respectiva para ello, al cual le va a facturar y el resto de la
información del cliente se autocompleta y es llevado a la hoja
FormatoFactura", por último imprime la factura se incrementa el valor en
la celda A:1 que arriba mencioné y listo. De esta manera los usuarios no
tiene que manipular las hojas para nada, sino que todo lo hacen a través
de los formularios.
Esta pequeña aplicación se la envío en modo demo a varias empresas para
que la prueben. Quiero enviarles el archivo para que puedan solo imprimir
5 facturas de prueba y listo, es suficiente para saber si les sirve o no,
si les gusta o no. Por este motivo pienso exportar el consecutivo que se
guarda en la celda A:3 hacia un archivo de texto en la ruta:
%windir%\system\ctrlfl.txt, con el propósito de que cuando el cliente abra
el libro, o presione alguno de los dos botones mencionados yo pueda leer
el número que tiene el archivo de texto (el cual indica el número de
facturas realizadas) y en caso de que ya haya impreso las cinco facturas
de prueba permitidas no lo deje abrirlo o ejecutar alguno de los procesos.
De lo anterior surgen entonces ya dos dudas puntuales:
1) Como exportar el valor de la celda A:3 hacia el archivo de texto
ctrlfl.txt por medio de una macro?
2) Cuando se abra el libro o se presione algún botón de los arriba
mencionados, como puedo leer por medio de una macro el contenido del
archivo de texto en cuestión?

Mil Gracias.

Preguntas similare

Leer las respuestas

#1 David
17/06/2006 - 04:03 | Informe spam
Mejor te refiero a los lugares donde puedes encontrar documentación para
resolver este asunto. Búscate en la ayuda de VBA el comando Open (Open
Statement), Input #, Print # y Write #. Allí encontrarás una información
mucho más amplia de la que te pueda dar aquí y ejemplos para elaborar una
solución "a tu medida".

El comando Open te permite abrir un archivo de texto para efectuar
operaciones de entrada o salida, y te da algunos ejemplos de cómo usarlo.
Esto lo logras mediante un "modo".

Si utilizas el modo Input, podrás leer el contenido de tu archivo utilizando
Input # o Line Input #.

Si utilizas el modo Output, podrás volver a crear el archivo y escribir
datos en él utilizando Print # o Write #.




"Giovanny Roman" escribió:

Tengo un libro llamado Facturacion, en dicho libro hay una hoja llamada
'FormatoFactura' y otra llamada 'cliente'. En la celda A:3 de la hoja
'FormatoFactura' guardo el número de facturas que se vayan realizando, y
através de código en una macro voy incrementando el valor de dicha celda:
1,2,3,4,5, etc, etc.
Tengo dos botones:
El primer botón es para crear un nuevo cliente e invoca un formulario para
ingresar la información pertinente a los clientes y que es almacenada en
la hoja con el mismo nombre.
El segundo botón invoca también un formulario para crear nueva factura en
en cual el usuario selecciona cualquier cliente almacenado en la hoja
respectiva para ello, al cual le va a facturar y el resto de la
información del cliente se autocompleta y es llevado a la hoja
FormatoFactura", por último imprime la factura se incrementa el valor en
la celda A:1 que arriba mencioné y listo. De esta manera los usuarios no
tiene que manipular las hojas para nada, sino que todo lo hacen a través
de los formularios.
Esta pequeña aplicación se la envío en modo demo a varias empresas para
que la prueben. Quiero enviarles el archivo para que puedan solo imprimir
5 facturas de prueba y listo, es suficiente para saber si les sirve o no,
si les gusta o no. Por este motivo pienso exportar el consecutivo que se
guarda en la celda A:3 hacia un archivo de texto en la ruta:
%windir%\system\ctrlfl.txt, con el propósito de que cuando el cliente abra
el libro, o presione alguno de los dos botones mencionados yo pueda leer
el número que tiene el archivo de texto (el cual indica el número de
facturas realizadas) y en caso de que ya haya impreso las cinco facturas
de prueba permitidas no lo deje abrirlo o ejecutar alguno de los procesos.
De lo anterior surgen entonces ya dos dudas puntuales:
1) Como exportar el valor de la celda A:3 hacia el archivo de texto
ctrlfl.txt por medio de una macro?
2) Cuando se abra el libro o se presione algún botón de los arriba
mencionados, como puedo leer por medio de una macro el contenido del
archivo de texto en cuestión?

Mil Gracias.




Respuesta Responder a este mensaje
#2 Héctor Miguel
17/06/2006 - 06:05 | Informe spam
hola, Giovanny !

1) el siguiente ejemplo va agregando lineas en un archivo de texto [p.e. cada vez que se ejecute la impresion POR TU BOTON]
y permite que, independientemente del numero_factura que le hubieran puesto, puedes consultar el numero de lineas anteriores ;)
inicio de codigo ==Sub Grabar_registro_nuevo()
Dim Grabacion As Integer: Grabacion = FreeFile
Open "c:\windows\system\ctrlfl.txt" For Append As #Grabacion
Print #Grabacion, Worksheets("formatofactura").Range("a3")
Close #Grabacion
End Sub

2) para consultar cuantas lineas se han grabado en el archivo anterior...
a) una funcion vba [p.e. en un modulo de codigo normal]...
Function Impresiones(Archivo As String) As Byte
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
With .OpenTextFile(Archivo, 8)
If Err.Number > 0 Then Impresiones = 0: Exit Function
Impresiones = .Line - 1: .Close
End With: End With
End Function
b) una forma de obtener la cuenta de las lineas 'permitidas'
[p.e. al pulsar alguno de tus botones y/o en el evento '_open' del libro]...
[... otras lineas de tu codigo ...]
Select Case Impresiones("c:\windows\system\ctrlfl.txt")
Case 5
MsgBox "Ya se han impreso las 5 facturas de este ""demo""."
Case Else
MsgBox "No se han alcanzado las 5 impresiones permitidas ;)"
End Select
[... otras lineas de tu codigo ...]

-> puedes sustituir los msgboxes por las acciones 'reales' que necesites ;)
puedes crear 'constantes' para el nombre y ubicacion del archivo 'secreto' ;)

3) para encontrar la variable que apuntas: %windir% [en caso de que no lo tengas 'cubierto'] -?-
consulta acerca de las variables de entorno a traves de la funcion-vba Environ("entorno")
o un objeto Scripting.FileSystemObject
o llamando a alguna API de windows [etc. etc. etc.] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ consulta original __
... un libro llamado Facturacion... una hoja llamada 'FormatoFactura' y otra llamada 'cliente'.
... A3 de la hoja 'FormatoFactura' guardo el numero de facturas que se vayan realizando
... en una macro voy incrementando el valor de dicha celda: 1,2,3,4,5, etc, etc. ... dos botones:
... crear un nuevo cliente... formulario para ingresar la informacion... almacenada en la hoja con el mismo nombre.
... segundo... un formulario para crear nueva factura en... llevado a la hoja FormatoFactura"
... imprime la factura se incrementa el valor en la celda... que arriba mencione y listo [...]
Esta... aplicacion se la envio en modo demo a varias empresas para que la prueben.
... que puedan solo imprimir 5 facturas de prueba y listo, es suficiente para saber si les sirve o no, si les gusta o no.
... pienso exportar el consecutivo... hacia un archivo de texto en la ruta: %windir%\system\ctrlfl.txt
... que cuando el cliente abra el libro, o presione alguno de los dos botones... leer el numero... de facturas realizadas
... en caso de que ya haya impreso las cinco facturas de prueba permitidas no lo deje abrirlo o ejecutar alguno de los procesos.
1) Como exportar el valor de la celda A:3 hacia el archivo de texto ctrlfl.txt por medio de una macro?
2) Cuando se abra el libro o se presione algun boton... como puedo leer... el contenido del archivo de texto en cuestion?
Respuesta Responder a este mensaje
#3 groman83
20/06/2006 - 18:38 | Informe spam
Buen día Héctor,

¡EXCELENTE!!!!
Utilicé todas tus sugerencias, las acomodé a mis necesidades y funcionó
perfectamente la creación y consulta del archivo de texto. No tuve que
modificarle mucho al código que me enviaste, practicamente nada.
Agradezco tu colaboración y hasta pronto.

Héctor Miguel wrote:

hola, Giovanny !

1) el siguiente ejemplo va agregando lineas en un archivo de texto [p.e.


cada vez que se ejecute la impresion POR TU BOTON]
y permite que, independientemente del numero_factura que le hubieran


puesto, puedes consultar el numero de lineas anteriores ;)
inicio de codigo ==> Sub Grabar_registro_nuevo()
Dim Grabacion As Integer: Grabacion = FreeFile
Open "c:windowssystemctrlfl.txt" For Append As #Grabacion
Print #Grabacion, Worksheets("formatofactura").Range("a3")
Close #Grabacion
End Sub

2) para consultar cuantas lineas se han grabado en el archivo anterior...
a) una funcion vba [p.e. en un modulo de codigo normal]...
Function Impresiones(Archivo As String) As Byte
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
With .OpenTextFile(Archivo, 8)
If Err.Number > 0 Then Impresiones = 0: Exit Function
Impresiones = .Line - 1: .Close
End With: End With
End Function
b) una forma de obtener la cuenta de las lineas 'permitidas'
[p.e. al pulsar alguno de tus botones y/o en el evento '_open' del


libro]...
[... otras lineas de tu codigo ...]
Select Case Impresiones("c:windowssystemctrlfl.txt")
Case 5
MsgBox "Ya se han impreso las 5 facturas de este ""demo""."
Case Else
MsgBox "No se han alcanzado las 5 impresiones permitidas ;)"
End Select
[... otras lineas de tu codigo ...]

-> puedes sustituir los msgboxes por las acciones 'reales' que necesites


;)
puedes crear 'constantes' para el nombre y ubicacion del archivo


'secreto' ;)

3) para encontrar la variable que apuntas: %windir% [en caso de que no lo


tengas 'cubierto'] -?-
consulta acerca de las variables de entorno a traves de la funcion-vba


Environ("entorno")
o un objeto Scripting.FileSystemObject
o llamando a alguna API de windows [etc. etc. etc.] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ consulta original __
> ... un libro llamado Facturacion... una hoja llamada 'FormatoFactura' y


otra llamada 'cliente'.
> ... A3 de la hoja 'FormatoFactura' guardo el numero de facturas que se


vayan realizando
> ... en una macro voy incrementando el valor de dicha celda: 1,2,3,4,5,


etc, etc. ... dos botones:
> ... crear un nuevo cliente... formulario para ingresar la informacion...


almacenada en la hoja con el mismo nombre.
> ... segundo... un formulario para crear nueva factura en... llevado a la


hoja FormatoFactura"
> ... imprime la factura se incrementa el valor en la celda... que arriba


mencione y listo [...]
> Esta... aplicacion se la envio en modo demo a varias empresas para que la


prueben.
> ... que puedan solo imprimir 5 facturas de prueba y listo, es suficiente


para saber si les sirve o no, si les gusta o no.
> ... pienso exportar el consecutivo... hacia un archivo de texto en la


ruta: %windir%systemctrlfl.txt
> ... que cuando el cliente abra el libro, o presione alguno de los dos


botones... leer el numero... de facturas realizadas
> ... en caso de que ya haya impreso las cinco facturas de prueba permitidas


no lo deje abrirlo o ejecutar alguno de los procesos.
> 1) Como exportar el valor de la celda A:3 hacia el archivo de texto


ctrlfl.txt por medio de una macro?
> 2) Cuando se abra el libro o se presione algun boton... como puedo leer...


el contenido del archivo de texto en cuestion?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida