2012-09-03 15 views
6

Actualmente estoy haciendo un "sistema operativo" en PowerPoint y necesito saber cómo establecer variables globales para la configuración.Configuración de variables globales en VBA

hice un módulo llamado "Configuración" que contienen:

Public Sub Settings() 

Option Explicit 
Public UserName, UserIcon, Background, BrowserHomePage As String 
Public SetupComplete As Boolean 

SetupComplete = False 
UserName = "Administrator" 
UserIcon = Nothing 
Background = Nothing 
BrowserHomePage = Nothing 

'Set the variables 
UserName.Text = UserName 

End Sub 

Ahora en la pantalla "Iniciar sesión", tengo un cuadro de texto denominado "nombre de usuario". Luego hice un botón solo para probar las variables. El botón hace esto:

Private Sub CommandButton1_Click() 
UserName.Value = UserName 
End Sub 

El cuadro de texto no tiene ningún valor cuando hago clic en el botón. Soy súper nuevo en VBA y me gustaría saber cómo hacer esto. Además, si alguien sabe cómo ejecutar automáticamente códigos al iniciar el PowerPoint, sería fantástico.

EDITAR: Estoy intentando crear un módulo que solo contenga la configuración. ¿Puede alguien señalar cómo cambiar los valores de las diapositivas? Al igual que si hago clic en un botón en la diapositiva 1, quiero que cambie el valor de "Nombre de usuario" en el módulo "Configuración" a lo que yo quiera.

Solución: Bien, encontré la única solución. Tengo que escribir las configuraciones en un archivo de texto y recuperarlo para leerlo.

Mi configuración de módulo:

Public UserName As String, Password As String, UserIcon As String, DesktopBackground As String, LogInBackground As String, BrowserHomePage As String 
Public InitialSetupCompleted As Boolean 

Public Sub ReadSettings() 

'Delcaring variables 
TempDir = Environ("Temp") 
SettingsFileName = "\OpenOSSettings.txt" 
SettingsFile = TempDir & SettingsFileName 
ReadFile = FreeFile() 

'Read all settings from file 
Open SettingsFile For Input As #ReadFile 
Do While Not EOF(ReadFile) 
    Line Input #ReadFile, Read 
     If Read Like "UserName = *" Then 
     UserName = Replace(Read, "UserName = ", "") 
     End If 
     If Read Like "Password = *" Then 
     Password = Replace(Read, "Password = ", "") 
     End If 
     If Read Like "UserIcon = *" Then 
     UserIcon = Replace(Read, "UserIcon = ", "") 
     End If 
     If Read Like "DesktopBackground = *" Then 
     DesktopBackground = Replace(Read, "DesktopBackground = ", "") 
     End If 
     If Read Like "LogInBackground = *" Then 
     LogInBackground = Replace(Read, "LogInBackground = ", "") 
     End If 
     If Read Like "BrowserHomePage = *" Then 
     BrowserHomePage = Replace(Read, "BrowserHomePage = ", "") 
     End If 
     If Read Like "InitialSetupCompleted = *" Then 
     InitialSetupCompleted = Replace(Read, "InitialSetupCompleted = ", "") 
     End If 
Loop 
Close #ReadFile 

'Applying settings to all elements 
Slide5.UserName.Caption = UserName 

End Sub 


Public Sub SaveSettings() 

'Declaring variables 
TempDir = Environ("Temp") 
SettingsFileName = "\OpenOSSettings.txt" 
SettingsFile = TempDir & SettingsFileName 
WriteFile = FreeFile() 

'Write all settings to file 
Open SettingsFile For Output As #WriteFile 
Print #WriteFile, "UserName = " & UserName 
Print #WriteFile, "Password = " & Password 
Print #WriteFile, "UserIcon = " & UserIcon 
Print #WriteFile, "DesktopBackground = " & DesktopBackground 
Print #WriteFile, "LogInBackground = " & LogInBackground 
Print #WriteFile, "BrowserHomePage = " & BrowserHomePage 
Print #WriteFile, "InitialSetupCompleted = " & InitialSetupCompleted 
Close #WriteFile 

End Sub 

ahora para guardar la configuración, sólo tiene que utilizar un cuadro de texto y un botón. ahorro el valor de TextBox1 a nombre de usuario en el archivo:

Private Sub CommandButton1_Click() 
UserName = TextBox1.Value 
Settings.SaveSettings 
End Sub 

leer el valor de Nombre de usuario y ponerlo en TextBox1:

Private Sub CommandButton2_Click() 
Settings.ReadSettings 
TextBox2.Value = UserName 
End Sub 

código muy larga, pero funciona bien. ¡Gracias a todos!

+0

{advertencia genérica sobre variables globales} –

+0

'Nombre de usuario público, UserIcon, Background, BrowserHomePage As String' aquí solamente' BrowserHomePage' es una cadena, debe repetir 'como cadena' después de cada variable –

+13

" Actualmente estoy haciendo una "OS" en PowerPoint ". ¿??? – cja

Respuesta

3

no ponga sus valores de ajuste en un módulo. Los módulos son para código y hará más trabajo tratando de almacenar datos en ellos de lo que desee. Almacene la configuración en el registro o en un archivo de texto. Si desea que la configuración esté dentro del archivo, puede usar CustomDocumentProperties o una diapositiva oculta: no sé lo suficiente sobre PPT para darle una buena sugerencia.

Realice un procedimiento que lea las configuraciones desde donde las almacene. Luego haga un procedimiento para volver a escribirlos en el almacenamiento. Cuando el usuario hace clic en un botón determinado en la diapositiva, usted cambia la variable de nombre de usuario y luego ejecuta el procedimiento que lo escribe en el almacenamiento.

Al declarar variables en la misma línea, debe incluir el tipo para cada variable.

Public UserName, UserIcon, Background, BrowserHomePage As String 

atenúa BrowserHomePage como una Cadena, pero las otras tres variables como Variantes.Use esto en su lugar

Public UserName As String, UserIcon As String, Background As String, BrowserHomePage As String 

O mejor aún, pero todos ellos en su propia línea.

3

Su variable de "nombre de usuario" no es global porque está dentro del alcance de su subrutina de configuración. Mueva sus declaraciones de variables fuera de una función/subrutina para hacerlas globales.

Prueba esto:

Option Explicit 
Public UserName, UserIcon, Background, BrowserHomePage As String 
Public SetupComplete As Boolean 

Public Sub Settings() 

SetupComplete = False 
UserName = "Administrator" 
UserIcon = Nothing 
Background = Nothing 
BrowserHomePage = Nothing 

'Set the variables 
UserName.Text = UserName 

End Sub