Nombre de archivo "dinamico" sin afectar VB

Estimados Expertos.
Estoy trabajando en un par de archivos donde varios módulos requieren abrir un nuevo libro y después regresar al mismo. Funciona a la perfección utilizando la línea:
Windows("Reporte de horas.xls").Activate
Desafortunadamente es un archivo que será distribuido entre muchos colaboradores y dentro del periodo de prueba nos hemos percatado que lo primero que hace el recurso es descargar el archivo a su PC y cambiar el nombre del mismo, quizás por sus iniciales, fecha de recepción, entre otros. Se ha pedido por medio de proceso que el nombre no debe de ser cambiado ya que de lo contrario al momento que correr la macro enviara un error al no encontrar el archivo. Incluso he colocado la instrucción que impide la opción de "Guardar como" (aunque solo sirve si se tiene abierto el archivo) pero al momento que descargan el archivo por medio de su correo lo guardan en sus equipos con otro nombre, o simplemente con F2 desde el explorador de archivos.
Por lo anterior se me ha pedido que antes de realizar la distribución del mismo en "n" colaboradores le incluya la instrucción donde aunque se le cambie el nombre al archivo Visual Basic detecte el nuevo nombre y prosiga con el proceso. He leído un par de foros al respecto, pero no encuentro la solución que funcione cabalmente en Office 2003 (versión que manejamos en la empresa).
¿Alguien me podría ayudar con alguna solución?.
Agradeciendo de antemano su ayuda quedo en espera de sus amables comentarios.
Saludos.
Respuesta
1
Prueba declarando una variable publica en un modulo "normal"
Public strnombrearchivo$
luego en el evento open del libro cargala:
Private Sub Workbook_Open()
strnombrearchivo$ = ThisWorkBook.Path
End Sub
y para usarlo, siguiendo tu misma instruccion:
Windows(strnombrearchivo$).Activate
Abraham
Abraham:
De antemando muchas gracias por tu respuesta, pero podrías orientarme acerca del procedimiento del mismo, es decir, cree un modulo y lo nombre "Normal", ahí coloque:
Public strnombrearchivo$
luego en mi modulo ya existente coloque la instruccion:
Private Sub Workbook_Open()
strnombrearchivo$ = ThisWorkBook.Path
End Sub
Por ultimo reemplace las instrcciones que hacian referencia a mi archivo por:
Windows(strnombrearchivo$).Activate
Cerré el archivo y lo volví a abrir, pero al cambiarme el nombre al mismo (a fin de probarlo), me sigue marcando el mismo error.
¿Me podrías ayudar diciendo que hice mal?.
Saludos.
Esto:
Private Sub Workbook_Open()
strnombrearchivo$ = ThisWorkBook.Path
End Sub
Va en el modulo del libro, ese que por defecto se llama "Thisworkbook"
Abraham
Abraham:
De antemano una disculpa enorme por el tiempo de respuesta, estuve en algunos proyectos y no había retomado el tema.
Te comento que ya he aplicado lo que me haz dicho, pero al correr la macro me marca el siguiente error "Subíndice fuera del intervalo" y se ubica en VB se ubica en la siguiente línea en amarillo:
Windows(strnombrearchivo$).Activate
Sabrás a que se pueda deber el error.
Agradeciendo la atención prestada.
Saludos.
PD. Así quedo mi modulo.
Sub Check1()
Workbooks.Add
Windows(strnombrearchivo$).Activate
End Sub
¿Declaraste la variable como publica en un modulo "normal"?
Abraham

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas