> ... un libro... deseara que cuando se abra no diga en la parte superior "Microsoft Excel"
> ... y en su lugar que aparezca el nombre del libro...
cuando se abre tu libro [en el evento '_open' o en el '_activate' / '_deactivate' de sus ventanas]
quitar el titulo de la aplicacion: -> applcation.caption = " "
restablecer el titulo de la aplicacion: -> application.caption = ""
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
> ... se podra tambien desaparecer el icono de excel? y tal vez sustituirlo por otro? ...
asumiendo que tienes un archivo *.ICO para el nuevo icono...
prueba copiando/pegando las siguientes instrucciones
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=== en el modulo de codigo del libro [ThisWorkbook] ===
Private Declare Function BuscaVentana _
Lib "User32" Alias "FindWindowA" ( _
ByVal Clase As String, ByVal Nombre As String) As Long
Private Declare Function SacarIcono _
Lib "Shell32.dll" Alias "ExtractIconA" ( _
ByVal Instala As Long, ByVal ArchivoICO As String, _
ByVal Indice As Long) As Long
Private Declare Function MandaMensaje _
Lib "User32" Alias "SendMessageA" ( _
ByVal Ventana As Long, ByVal Mensaje As Long, _
ByVal ParV As Integer, ByVal ParL As Any) As Long
Private Sub Workbook_Open()
Dim Archivo As String
Archivo = "c:\ruta y\sub carpetas donde esta\el archivo.ico" ' <= pon aqui la ruta al archivo con el icono '
CambiarIcono Archivo
Application.Caption = "Mi Empresa, S.A."
End Sub
Private Sub CambiarIcono(Optional ByVal Archivo As String = "")
If Dir(Archivo) = "" Then Exit Sub
Dim Ventana As Long, Icono As Long
Icono = SacarIcono(0, Archivo, 0)
Ventana = BuscaVentana(vbNullString, Application.Caption)
MandaMensaje Ventana, &H80, 0, Icono
MandaMensaje Ventana, &H80, 1, Icono
End Sub
En la macro
Private Sub Workbook_Open()
applcation.Caption = " "
End Sub
Gracias
"Héctor Miguel" escribió:
> ... donde debo poner lo que comentas?
> En la macro
> Private Sub Workbook_Open()
> applcation.Caption = " "
> End Sub
lo 'usual' es poner este tipo de codigos dentro del modulo de codigo de 'ese' libro -> ThisWorkbook [p.e.]
a) para que el entorno de la aplicacion se 'adapte' cuando se abre 'tu' libro:
Private Sub Workbook_Open()
Applcation.Caption = " "
End Sub
b) la aplicacion 'recuperara' su titulo normal SOLO hasta que se cierre esa sesion... o al cerrarse 'tu' libro si usas:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Applcation.Caption = ""
End Sub
c) si quieres 'alternar' entre 'tu' libro y otros libros abiertos en la sesion:
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Applcation.Caption = " "
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Applcation.Caption = ""
End Sub
nota: los eventos '_activate' y '_deactivate' del libro tambien se ejecutan despues de los '_open' y '_beforeclose' :))
> ... me sirvio... pero en el titulo de cada hoja del lilbro sigue apareciendo el icono a la par del nombre del libro
> que codigo utilizo y donde lo pongo para tambien sustituir este icono? [...]
para quitar el icono tambien a la ventana del libro [cuando la ventana del libro NO esta mazimizada]...
Y en el area de la barra de menus [cuando la ventana del libro SI esta maximizada... que no es lo mismo]...
se requiere una llamada adicional a las API's de windows...
y encontrar dos instancias/clases de ventanas que 'cuelgan' de la ventana principal [excel]
a) la ventana del libro dentro del area de la aplicacion [tambien conocida como 'escritorio'], y...
b) la segunda clase -de 4- de ventanas de la aplicacion, donde se encuentra la barra de menus
-> te paso un ejemplo al final del presente [sub-clases por Stratos Malasiotis] ;)
saludos,
hector.
=== en el modulo de codigo del libro [ThisWorkbook] ===
Private Declare Function BuscaVentana _
Lib "User32" Alias "FindWindowA" ( _
ByVal Clase As String, ByVal Nombre As String) As Long
Private Declare Function BuscaClaseVentana _
Lib "User32" Alias "FindWindowExA" ( _
ByVal Ventana As Long, ByVal Clase As Long, _
ByVal Area As String, ByVal Area2 As String) As Long
Private Declare Function SacarIcono _
Lib "Shell32.dll" Alias "ExtractIconA" ( _
ByVal Instala As Long, ByVal ArchivoICO As String, _
ByVal Indice As Long) As Long
Private Declare Function MandaMensaje _
Lib "User32" Alias "SendMessageA" ( _
ByVal Ventana As Long, ByVal Mensaje As Long, _
ByVal ParV As Integer, ByVal ParL As Any) As Long
Private Sub Workbook_Open()
Dim Archivo As String
Archivo = "c:\ruta y\sub carpetas donde esta\el archivo.ico" ' <= pon aqui la ruta al archivo con el icono '
CambiarIcono Archivo
Application.Caption = "Mi Empresa, S.A."
End Sub
Private Sub CambiarIcono(Optional ByVal Archivo As String = "")
If Dir(Archivo) = "" Then Exit Sub
Dim Icono As Long, Ventana As Long, Area As Long, Libro As Long, Barras As Long
Icono = SacarIcono(0, Archivo, 0)
Ventana = BuscaVentana("XLMAIN", Application.Caption)
Area = BuscaClaseVentana(Ventana, 0, "XLDESK", vbNullString)
Libro = BuscaClaseVentana(Area, 0, "EXCEL7", vbNullString)
Barras = BuscaClaseVentana(Ventana, 0, "EXCEL2", vbNullString)
Barras = BuscaClaseVentana(Ventana, Barras, "EXCEL2", vbNullString)
MandaMensaje Ventana, &H80, 0, Icono
MandaMensaje Ventana, &H80, 1, Icono
MandaMensaje Libro, &H80, 0, Icono
MandaMensaje Libro, &H80, 1, Icono
MandaMensaje Barras, &H80, 0, Icono
MandaMensaje Barras, &H80, 1, Icono
End Sub
"Héctor Miguel" <NOhemio...@PLShotmail.com> wrote in message
news:%23sBwT7v...@TK2MSFTNGP04.phx.gbl...
> Lo que veo es que logicamente si el archivo se abre en otra maquina (por ejemplo si se lo paso a un companero)
> se abrira con el logo de excel pues no encontrara en la ruta especificada... el "archivo .ico"
> No se si esta situacion se podira cporregir incluyendo el archivo.ico en alguna parte del libro como imagen
> o alguna otra solucion, para que no importa en que maquina se abra sin neceisdad del archivo.ico
> el libro se abra sin el logo de excel y con el logo que yo le haya puesto.
[hasta donde se]... el icono de la aplicacion se puede sustituir [solo] por iconos 'validos' [es decir]...
que puedan ser 'tomados' porque estan contenidos en archivos/librerias/.... .EXE, .DLL, .ICO
op1: o provees junto con tu libro el archivo con el icono
puedes hacer que se busque p.e. como: -> ThisWorkbook.Path & "\mi archivo.ico"
op2: o te buscas un 'ejecutable/libreria/...' que pueda ser encontrado [casi] en cualquier sistema
si el 'contenedor' tiene la opcion de varios iconos, puedes extraer el que necesites segun su 'indice' [0 a n_iconos - 1]
-> indicandolo en el tercer argumento de la llamada a la funcion 'ExtractIconA' en la API 'Shell32.dll"
-> p.e. para extraer el segundo icono de un archivo con varios -> Icono = SacarIcono(0, Archivo, 1)
saludos,
hector.
"Héctor Miguel" <NOhemio...@PLShotmail.com> wrote in message
news:u5i46TIj...@TK2MSFTNGP03.phx.gbl...