Variable Publica

02/03/2005 - 04:03 por Fabian | Informe spam
Hola a Todos!
Es posible usar una variable perteneciente a un libro, en otro libro?
Si es posible me pudiesen decir que tipo de variable tiene que ser y donde
declararla, sino tendre que pasarla a una celda y tomarla de alli. La
variable en cuestion seria esta:
Libro1=ThisWorkbook.Name

Gracias.

Preguntas similare

Leer las respuestas

#11 Fabian
03/03/2005 - 17:30 | Informe spam
Otra vez yo ?!
Entendi el codigo y el seteo del libro, pero probe todas las formas de
implementarlo sin exito.Te transcribo el codigo, que hiciste mezclado con lo
que pretendo.
Este codigo esta en Libro2.
Sub Palanca()
Dim EsteLibro As Workbook, MiLibro As Workbook
For Each EsteLibro In Workbooks
If EsteLibro.CodeName = "Libro1" Then
Set MiLibro = EsteLibro
Exit For
End If
Next
For Each R In [EsteLibro].[Hoja1].[F2:F65536]
If IsEmpty(R) Then: Exit For
'Mas codigo
Next
End Sub

Sub Palanca2 ()
Dim EsteLibro As Workbook, MiLibroClave1 As Workbook
For Each EsteLibro In Workbooks
If EsteLibro.CodeName = "EstDisc" Then
Set MiLibroClave1 = EsteLibro
Exit For
End If
Next
For Each R In
Workbooks("MiLibroClave1").Worksheets("Hoja1").Range("F2:F65536")
If IsEmpty(R) Then: Exit For

Next
End Sub

Saludos.
"Héctor Miguel" escribió en el mensaje
news:
hola, Fabian !

> Como hago para cambiar el codename de un libro?
> Siempre es "ThisWorkbook" , o hago mal la consulta.
> Sub Codigonombre()
> MiLibro=ThisWorkbook.CodeName
> End Sub
> ThisWorkbook.CodeName=MiLibro 'no lo acepta porque es solo lectura,


entonces
> como se cambia, o solo se puede cambiar el ProyectoVBA.

puedes cambiar cualquiera de los dos:
-> el 'codename' del libro [ThisWorkbook por omision'] -> en la ventana de


propiedades del editor de vba
-> el nombre del proyecto de macros [VBAProject por omision] -> en


herramientas / propiedades de VBAProject...

saludos,
hector.


Respuesta Responder a este mensaje
#12 Fabian
03/03/2005 - 17:57 | Informe spam
En el ultimo mensaje estaba vencido, me pare, tome un poco de aire y
aparecio. El codigo que tengas pasamelo, por favor!, Gracias.

Sub Palanca3
Dim C As Range, R As Range, E As Range
Dim EsteLibro As Workbook, MiLibroClave1 As Workbook
For Each EsteLibro In Workbooks
If EsteLibro.CodeName = "EstDisc" Then
Set MiLibroClave1 = EsteLibro
Exit For
End If
Next
PorFin = EsteLibro.Name

For Each R In Workbooks(PorFin).Worksheets("Hoja1").Range("F2:F65536") 'Si
podes poner CodeName en
If IsEmpty(R) Then: Exit For
'esta linea seria ideal.

Next
End Sub

Saludos!

"Fabian" escribió en el mensaje
news:#$
Ahora si. Gracias.
No me di cuenta porque hace rato que no uso la ventana.
Saludos.
"Héctor Miguel" escribió en el mensaje
news:
> hola, Fabian !
>
> > Como hago para cambiar el codename de un libro?
> > Siempre es "ThisWorkbook" , o hago mal la consulta.
> > Sub Codigonombre()
> > MiLibro=ThisWorkbook.CodeName
> > End Sub
> > ThisWorkbook.CodeName=MiLibro 'no lo acepta porque es solo lectura,
entonces
> > como se cambia, o solo se puede cambiar el ProyectoVBA.
>
> puedes cambiar cualquiera de los dos:
> -> el 'codename' del libro [ThisWorkbook por omision'] -> en la ventana


de
propiedades del editor de vba
> -> el nombre del proyecto de macros [VBAProject por omision] -> en
herramientas / propiedades de VBAProject...
>
> saludos,
> hector.
>
>


Respuesta Responder a este mensaje
#13 Héctor Miguel
04/03/2005 - 02:21 | Informe spam
hola, Fabian !

... entendi el codigo y el seteo del libro... probe... formas de implementarlo sin exito
... transcribo el codigo... mezclado con lo que pretendo... codigo esta en Libro2.



[creo que] solo falta diferenciar acerca de...
-> cuando utilizar variables de tipo 'String' -o cadenas de texto- [en sus diferentes formas de 'notacion']
-> cuando 'aprovechar' variables a las que se ha establecido una referencia hacia un objeto 'especifico'

te paso al final algunos comentarios al respecto ;)
si cualquier duda... ¿comentas?
saludos,
hector.
=-> si declaras una propiedad y le asignas un 'tipo de datos' especifico [As Workbook, As Range, etc.]
cuando estableces su referencia hacia 'el objeto apropiado' [p.e. Set MiVariable = EsteObjeto ...]
->YA es una variable que TIENE LAS PROPIEDADES del objeto asignado [segun su tipo]<-
[entonces] del codigo que comentas 'mezclado' se desprende lo siguiente...
__ 1 __
A) estas declarando y asignando referencias a variables con un tipo de objeto 'Workbook'...
=> 'observa' concretamente las 'llamadas' a la variable ->MiLibro<- y en la macro2 a ->MiLibroClave1<- < > Dim EsteLibro As Workbook, MiLibro As Workbook
For Each EsteLibro In Workbooks
If EsteLibro.CodeName = "Libro1" Then
Set MiLibro = EsteLibro ' sigue mas codigo... '


B) PERO... estas usando una variable declarada y asignada a un objeto 'Workbook'... como variable ->de texto<-
For Each R In [EsteLibro].[Hoja1].[F2:F65536] ' sigue mas codigo... '


__ 2 __
C) sucede algo 'similar' en la segunda prueba...
Dim EsteLibro As Workbook, MiLibroClave1 As Workbook
For Each EsteLibro In Workbooks
If EsteLibro.CodeName = "EstDisc" Then
Set MiLibroClave1 = EsteLibro ' sigue mas codigo... '
For Each R In Workbooks("MiLibroClave1").Worksheets("Hoja1").Range("F2:F65536") ' sigue mas codigo... '


__ 3 __
1.- las variables 'MiLibro' y 'MiLibroClave1' [cada una 'en su caso'] YA se 'corresponden' con un objeto 'Workbook'
2.- 'sus siguientes llamadas' [en el codigo] ya pueden/deben ser de manera 'directa' [p.e.]
-> MiLibro.Worksheets("Hoja1").Range("a1:a2") o...
-> MiLibro.[Hoja1].[a1:a2] [en este caso 'se asume' que 'Hoja1' es el nombre de la hoja ->en su pestaña<-]
-> MiLibro.Hoja1 [en este caso 'se asume' que 'Hoja1' es el 'codename' de la hoja 'en cuestion']
3.- cuando el codigo las 'convierte' [o 'trata' de convertirlas] a cadenas de texto es cuando 'la cosa ya no funciona'
-> For Each R In [EsteLibro] o...
-> For Each R In Workbooks("MiLibroClave1")...
Respuesta Responder a este mensaje
#14 Fabian
04/03/2005 - 06:22 | Informe spam
Gracias por tu paciencia, y todas las explicaciones.Saludos.
"Héctor Miguel" escribió en el mensaje
news:
hola, Fabian !

> ... entendi el codigo y el seteo del libro... probe... formas de


implementarlo sin exito
> ... transcribo el codigo... mezclado con lo que pretendo... codigo esta


en Libro2.

[creo que] solo falta diferenciar acerca de...
-> cuando utilizar variables de tipo 'String' -o cadenas de texto- [en sus


diferentes formas de 'notacion']
-> cuando 'aprovechar' variables a las que se ha establecido una


referencia hacia un objeto 'especifico'

te paso al final algunos comentarios al respecto ;)
si cualquier duda... ¿comentas?
saludos,
hector.
=> -> si declaras una propiedad y le asignas un 'tipo de datos' especifico


[As Workbook, As Range, etc.]
cuando estableces su referencia hacia 'el objeto apropiado' [p.e. Set


MiVariable = EsteObjeto ...]
->YA es una variable que TIENE LAS PROPIEDADES del objeto asignado


[segun su tipo]<-
[entonces] del codigo que comentas 'mezclado' se desprende lo siguiente...
__ 1 __
A) estas declarando y asignando referencias a variables con un tipo de


objeto 'Workbook'...
=> 'observa' concretamente las 'llamadas' a la variable ->MiLibro<- y


en la macro2 a ->MiLibroClave1<- <> > Dim EsteLibro As Workbook, MiLibro As Workbook
> For Each EsteLibro In Workbooks
> If EsteLibro.CodeName = "Libro1" Then
> Set MiLibro = EsteLibro ' sigue mas codigo... '
B) PERO... estas usando una variable declarada y asignada a un objeto


'Workbook'... como variable ->de texto<-
> For Each R In [EsteLibro].[Hoja1].[F2:F65536] ' sigue mas


codigo... '
__ 2 __
C) sucede algo 'similar' en la segunda prueba...
> Dim EsteLibro As Workbook, MiLibroClave1 As Workbook
> For Each EsteLibro In Workbooks
> If EsteLibro.CodeName = "EstDisc" Then
> Set MiLibroClave1 = EsteLibro ' sigue mas codigo... '
> For Each R In


Workbooks("MiLibroClave1").Worksheets("Hoja1").Range("F2:F65536") ' sigue
mas codigo... '
__ 3 __
1.- las variables 'MiLibro' y 'MiLibroClave1' [cada una 'en su caso'] YA


se 'corresponden' con un objeto 'Workbook'
2.- 'sus siguientes llamadas' [en el codigo] ya pueden/deben ser de manera


'directa' [p.e.]
-> MiLibro.Worksheets("Hoja1").Range("a1:a2") o...
-> MiLibro.[Hoja1].[a1:a2] [en este caso 'se asume' que 'Hoja1' es


el nombre de la hoja ->en su pestaña<-]
-> MiLibro.Hoja1 [en este caso 'se asume' que 'Hoja1'


es el 'codename' de la hoja 'en cuestion']
3.- cuando el codigo las 'convierte' [o 'trata' de convertirlas] a cadenas


de texto es cuando 'la cosa ya no funciona'
-> For Each R In [EsteLibro] o...
-> For Each R In Workbooks("MiLibroClave1")...


Respuesta Responder a este mensaje
#15 Héctor Miguel
04/03/2005 - 08:04 | Informe spam
hola, Fabian !

Gracias por tu paciencia, y... las explicaciones



espero que te este ayudando a 'salir de apuros' ;)
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida