Pasar parametros a Excel

21/10/2003 - 09:22 por Emilio | Informe spam
Hola a tod@s

todos los días ejecuto de manera automática (tareas programadas) una hoja de
calculo que realiza unos calculos y exporta a gif unos gráficos almacena y
se cierra, hasta aqui todo bien, la cuestión es que para ello hago que en el
evento al abrir el libro compruebo la hora y si son las seis, entonces
ejecuto el proceso, sino no, esto ademas de ser más bien poco elegante,
tiene el problema de que si alguien intenta abrir la hoja a esa hora no lo
conseguirá, porque se cerrará de manera automática.
La cuestión es ¿se puede pasar algún tipo de parámetro personalizado a
Excel?, si fuese posible, podría evitar hacerlo de ese modo, en access se
pueden pasar con /cmd y recuperar con command, pero en Excel parece no ser
así.

Gracias anticipadas

Saludos a tod@s

Emilio

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
21/10/2003 - 10:17 | Informe spam
Una posibilidad podría ser crear una variable de entorno antes de abrir Excel, y luego verificar si existe dicha variable desde VBA. Por ejemplo, el fichero .bat podría ser:

set variable=LoQueSea
"Archivos de programa\Microsoft Office\Office\excel.exe" c:\Libro1.xls

y el código en el módulo ThisWorkbook de Libro1:

Private Sub Workbook_Open()
If Environ("variable") = "LoQueSea" Then
'..
Else
'.
End If
End Sub


Dependiendo del S.O., podría ser necesario borrar la variable de entorno mediante

set variable
una vez ejecutado el proceso. En Windows XP, por ejemplo, no sería necesario, pero en W98 pienso que posiblemente sí.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Emilio" <miliu56 ARROBA hotmail.com> escribió en el mensaje news:%
Hola a

todos los días ejecuto de manera automática (tareas programadas) una hoja de
calculo que realiza unos calculos y exporta a gif unos gráficos almacena y
se cierra, hasta aqui todo bien, la cuestión es que para ello hago que en el
evento al abrir el libro compruebo la hora y si son las seis, entonces
ejecuto el proceso, sino no, esto ademas de ser más bien poco elegante,
tiene el problema de que si alguien intenta abrir la hoja a esa hora no lo
conseguirá, porque se cerrará de manera automática.
La cuestión es ¿se puede pasar algún tipo de parámetro personalizado a
Excel?, si fuese posible, podría evitar hacerlo de ese modo, en access se
pueden pasar con /cmd y recuperar con command, pero en Excel parece no ser
así.

Gracias anticipadas

Saludos a

Emilio


Respuesta Responder a este mensaje
#2 Emilio
21/10/2003 - 15:34 | Informe spam
Gracias Fernando

Lo veo poco factible porque las politicas del sistema me tienen muy
restringido, de todas maneras lo probaré y te contaré

Gracias de nuevo

Saludos a

Emilio

"Fernando Arroyo" escribió en el mensaje
news:%23%
Una posibilidad podría ser crear una variable de entorno antes de abrir
Excel, y luego verificar si existe dicha variable desde VBA. Por ejemplo, el
fichero .bat podría ser:

set variable=LoQueSea
"Archivos de programa\Microsoft Office\Office\excel.exe" c:\Libro1.xls

y el código en el módulo ThisWorkbook de Libro1:

Private Sub Workbook_Open()
If Environ("variable") = "LoQueSea" Then
'..
Else
'.
End If
End Sub


Dependiendo del S.O., podría ser necesario borrar la variable de entorno
mediante

set variable
una vez ejecutado el proceso. En Windows XP, por ejemplo, no sería
necesario, pero en W98 pienso que posiblemente sí.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Emilio" <miliu56 ARROBA hotmail.com> escribió en el mensaje
news:%
Hola a

todos los días ejecuto de manera automática (tareas programadas) una hoja


de
calculo que realiza unos calculos y exporta a gif unos gráficos almacena y
se cierra, hasta aqui todo bien, la cuestión es que para ello hago que en


el
evento al abrir el libro compruebo la hora y si son las seis, entonces
ejecuto el proceso, sino no, esto ademas de ser más bien poco elegante,
tiene el problema de que si alguien intenta abrir la hoja a esa hora no lo
conseguirá, porque se cerrará de manera automática.
La cuestión es ¿se puede pasar algún tipo de parámetro personalizado a
Excel?, si fuese posible, podría evitar hacerlo de ese modo, en access se
pueden pasar con /cmd y recuperar con command, pero en Excel parece no ser
así.

Gracias anticipadas

Saludos a

Emilio


Respuesta Responder a este mensaje
#3 Pepito I
21/10/2003 - 22:45 | Informe spam
Fernando y Emilio mis saludos!
Fernando me pudieras explicar algo más sobre estas
variables de entorno?, dónde creo el fichero .bat?.
Un ejemplito de la utilidad de usar estas variables?
Dices crearlas antes de abrir excel porlo tanto no se
crean desde excel , No? ,Sí? Porqué dice Emilio que él
tiene limitantes que no puede crearlas? Yo uso W98 ,con
Office 200. Bueno si pueden ayudenme a entender un poco
sobre esto .Toi :-((.
Saludos
Pepito I

Una posibilidad podría ser crear una variable de entorno


antes de abrir Excel, y luego verificar si existe dicha
variable desde VBA. Por ejemplo, el fichero .bat podría
ser:

set variable=LoQueSea
"Archivos de programa\Microsoft Office\Office\excel.exe"


c:\Libro1.xls

y el código en el módulo ThisWorkbook de Libro1:

Private Sub Workbook_Open()
If Environ("variable") = "LoQueSea" Then
'..
Else
'.
End If
End Sub


Dependiendo del S.O., podría ser necesario borrar la


variable de entorno mediante

set variable>
una vez ejecutado el proceso. En Windows XP, por ejemplo,


no sería necesario, pero en W98 pienso que posiblemente sí.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Emilio" <miliu56 ARROBA hotmail.com> escribió en el


mensaje news:%
Hola a

todos los días ejecuto de manera automática (tareas




programadas) una hoja de
calculo que realiza unos calculos y exporta a gif unos




gráficos almacena y
se cierra, hasta aqui todo bien, la cuestión es que




para ello hago que en el
evento al abrir el libro compruebo la hora y si son las




seis, entonces
ejecuto el proceso, sino no, esto ademas de ser más




bien poco elegante,
tiene el problema de que si alguien intenta abrir la




hoja a esa hora no lo
conseguirá, porque se cerrará de manera automática.
La cuestión es ¿se puede pasar algún tipo de parámetro




personalizado a
Excel?, si fuese posible, podría evitar hacerlo de ese




modo, en access se
pueden pasar con /cmd y recuperar con command, pero en




Excel parece no ser
así.

Gracias anticipadas

Saludos a

Emilio




.

Respuesta Responder a este mensaje
#4 Fernando Arroyo
22/10/2003 - 11:53 | Informe spam
La idea inicial es: dependiendo de cómo se abra un libro, que su código realice unas u otras acciones.

Como bien decía Emilio, en Access es posible conseguir esto pasando un argumento desde la línea de comandos a la aplicación. Por ejemplo, si se teclea:

c:\Archivos de programa\Microsoft Office\Office\msaccess.exe C:\BaseDeDatos.mdb /cmd argumento

en una ventana de DOS, se lanzará Access, se abrirá la base de datos BaseDeDatos y será posible ejecutar un determinado código en función del argumento:

If Command = "argumento1" Then
'Instrucciones
ElseIf Command = "argumento2" Then
'Instrucciones
Else
'Instrucciones
End If


En Excel esto no está implementado, lo que nos obliga a los que tenemos que programar a ser imaginativos. Una posibilidad es la que yo comentaba en mi mensaje anterior: usar una variable de entorno como sustituta de Command.

Las variables de entorno "oficiales" son creadas automáticamente por el sistema operativo. Se puede conocer la lista completa tecleando

set

en una ventana de DOS. Para crear una variable propia, hay que teclear

set NombreVariable=Valor


Es posible conocer desde VBA el valor de cualquier variable usando la función Environ. Por ejemplo:

MsgBox Environ("path")

mostrará las rutas almacenadas en la variable de entorno path.

Hay muchas variables de entorno que, en principio, podrían resultar útiles al programar desde VBA. Por ejemplo, username devuelve el nombre del usuario, domain el dominio, etc. El uso de estas variables podría evitar tener que recurrir a funciones de la API de Windows, que suelen ser largas y complicadas. _Pero_ (y lo subrayo porque es importante), sucede que estas variables pueden ser modificadas por cualquiera. Si, por ejemplo, se teclea:

path=EstoNoValeParaNada

la variable "oficial" path tomará el valor EstoNoValeParaNada, y ésto es lo que se obtendrá si se consulta dicha variable desde VBA. Esto hay que tenerlo en cuenta porque si se escribe un programa que deban usar otras personas y que haga uso de alguna de estas variables, podría ser saboteado por un usuario avanzado con tan sólo modificarlas. Sin embargo, si el programa está destinado al propio programador, el uso de las variables de entorno puede simplificarlo.


Volviendo al uso de una variable de entorno propia para "pasar un argumento" a Excel, lo que habría que hacer es crear un fichero batch con un par de líneas (las que propuse en mi anterior mensaje en este mismo "hilo"):

set NombreVariable=ValorDeLaVariable
"Archivos de programa\Microsoft Office\Office\excel.exe" c:\Libro1.xls

(La segunda línea podría variar, dependiendo de dónde esté el ejecutable de Excel)
Se podría crear un acceso directo al fichero batch para poder ejecutarlo sin tener que abrir una sesión DOS "a mano".

Ya en Excel, el código para hacer unas u otras cosas en función del valor de NombreVariable podría ser algo parecido a:

If Environ("NombreVariable") = "A" Then
'Instrucciones
ElseIf Environ("NombreVariable") = "B" Then
'Instrucciones
Else
'Instrucciones
End If



Sobre las políticas, quizás Emilio u otra persona pueda decirte más que yo. Son restricciones que establecen las empresas en algunos o todos sus equipos, para muchas cosas. Por ejemplo, para obligar a usar un antivirus, para impedir que se puedan realizar copias de los datos, para que no se pueda navegar por determinadas páginas de la red... En los casos extremos, dichas políticas convierten el ordenador en una especie de "terminal tonta".
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Pepito I" escribió en el mensaje news:044101c39814$33d3eb00$
Fernando y Emilio mis saludos!
Fernando me pudieras explicar algo más sobre estas
variables de entorno?, dónde creo el fichero .bat?.
Un ejemplito de la utilidad de usar estas variables?
Dices crearlas antes de abrir excel porlo tanto no se
crean desde excel , No? ,Sí? Porqué dice Emilio que él
tiene limitantes que no puede crearlas? Yo uso W98 ,con
Office 200. Bueno si pueden ayudenme a entender un poco
sobre esto .Toi :-((.
Saludos
Pepito I
Respuesta Responder a este mensaje
#5 Rene Moreno
22/10/2003 - 17:18 | Informe spam
Buen días Señores, solo una duda sobre la instrucción SET que acaban de
mencionar; ejecute SET en mi PC y al final de la lista de variables aparecé
BLASTER¢20 15 D1 T4 ¿tendrá algo que ver con el virus/gusano/loquesea
BLASTER? Tengo Win98 2a Ed.

Saludos a todos
Rene Moreno

____________________________________________________
Para responder elimine el texto NOSPAM de la dirección de envío
"Fernando Arroyo" escribió en el mensaje
news:
La idea inicial es: dependiendo de cómo se abra un libro, que su código
realice unas u otras acciones.

Como bien decía Emilio, en Access es posible conseguir esto pasando un
argumento desde la línea de comandos a la aplicación. Por ejemplo, si se
teclea:

c:\Archivos de programa\Microsoft Office\Office\msaccess.exe
C:\BaseDeDatos.mdb /cmd argumento

en una ventana de DOS, se lanzará Access, se abrirá la base de datos
BaseDeDatos y será posible ejecutar un determinado código en función del
argumento:

If Command = "argumento1" Then
'Instrucciones
ElseIf Command = "argumento2" Then
'Instrucciones
Else
'Instrucciones
End If


En Excel esto no está implementado, lo que nos obliga a los que tenemos que
programar a ser imaginativos. Una posibilidad es la que yo comentaba en mi
mensaje anterior: usar una variable de entorno como sustituta de Command.

Las variables de entorno "oficiales" son creadas automáticamente por el
sistema operativo. Se puede conocer la lista completa tecleando

set

en una ventana de DOS. Para crear una variable propia, hay que teclear

set NombreVariable=Valor


Es posible conocer desde VBA el valor de cualquier variable usando la
función Environ. Por ejemplo:

MsgBox Environ("path")

mostrará las rutas almacenadas en la variable de entorno path.

Hay muchas variables de entorno que, en principio, podrían resultar útiles
al programar desde VBA. Por ejemplo, username devuelve el nombre del
usuario, domain el dominio, etc. El uso de estas variables podría evitar
tener que recurrir a funciones de la API de Windows, que suelen ser largas y
complicadas. _Pero_ (y lo subrayo porque es importante), sucede que estas
variables pueden ser modificadas por cualquiera. Si, por ejemplo, se teclea:

path=EstoNoValeParaNada

la variable "oficial" path tomará el valor EstoNoValeParaNada, y ésto es lo
que se obtendrá si se consulta dicha variable desde VBA. Esto hay que
tenerlo en cuenta porque si se escribe un programa que deban usar otras
personas y que haga uso de alguna de estas variables, podría ser saboteado
por un usuario avanzado con tan sólo modificarlas. Sin embargo, si el
programa está destinado al propio programador, el uso de las variables de
entorno puede simplificarlo.


Volviendo al uso de una variable de entorno propia para "pasar un argumento"
a Excel, lo que habría que hacer es crear un fichero batch con un par de
líneas (las que propuse en mi anterior mensaje en este mismo "hilo"):

set NombreVariable=ValorDeLaVariable
"Archivos de programa\Microsoft Office\Office\excel.exe" c:\Libro1.xls

(La segunda línea podría variar, dependiendo de dónde esté el ejecutable de
Excel)
Se podría crear un acceso directo al fichero batch para poder ejecutarlo sin
tener que abrir una sesión DOS "a mano".

Ya en Excel, el código para hacer unas u otras cosas en función del valor de
NombreVariable podría ser algo parecido a:

If Environ("NombreVariable") = "A" Then
'Instrucciones
ElseIf Environ("NombreVariable") = "B" Then
'Instrucciones
Else
'Instrucciones
End If



Sobre las políticas, quizás Emilio u otra persona pueda decirte más que yo.
Son restricciones que establecen las empresas en algunos o todos sus
equipos, para muchas cosas. Por ejemplo, para obligar a usar un antivirus,
para impedir que se puedan realizar copias de los datos, para que no se
pueda navegar por determinadas páginas de la red... En los casos extremos,
dichas políticas convierten el ordenador en una especie de "terminal tonta".
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Pepito I" escribió en el mensaje
news:044101c39814$33d3eb00$
Fernando y Emilio mis saludos!
Fernando me pudieras explicar algo más sobre estas
variables de entorno?, dónde creo el fichero .bat?.
Un ejemplito de la utilidad de usar estas variables?
Dices crearlas antes de abrir excel porlo tanto no se
crean desde excel , No? ,Sí? Porqué dice Emilio que él
tiene limitantes que no puede crearlas? Yo uso W98 ,con
Office 200. Bueno si pueden ayudenme a entender un poco
sobre esto .Toi :-((.
Saludos
Pepito I
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida