2012-09-03 18 views
6

में ग्लोबल वैरिएबल सेट करना मैं वर्तमान में पावरपॉइंट में "ओएस" बना रहा हूं और मुझे सेटिंग्स के लिए वैश्विक चर सेट करने के बारे में जानने की आवश्यकता है। "में प्रवेश करें" स्क्रीन पर अबवीबीए

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 

, मैं एक पाठ बॉक्स "उपयोगकर्ता नाम" नाम है:

मैं एक मॉड्यूल "सेटिंग" युक्त कहा जाता है बनाया है। मैंने फिर चर का परीक्षण करने के लिए एक बटन बनाया। बटन यह करता है:

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

जब मैं बटन क्लिक करता हूं तो टेक्स्ट बॉक्स का कोई मूल्य नहीं होता है। मैं वीबीए में सुपर नया हूं, और यह जानना चाहता हूं कि यह कैसे करें। साथ ही, यदि कोई जानता है कि PowerPoint प्रारंभ करते समय स्वचालित रूप से कोड कैसे निष्पादित करें, तो यह शानदार होगा।

संपादित करें: मैं केवल एक सेटिंग वाले मॉड्यूल बनाने की कोशिश कर रहा हूं। क्या कोई बता सकता है कि स्लाइड से मूल्यों को कैसे बदला जाए? जैसे कि मैं स्लाइड 1 में एक बटन पर क्लिक करता हूं, मैं चाहता हूं कि यह मॉड्यूल "सेटिंग्स" में जो भी मैं चाहता हूं उसे "UserName" मान को बदलना चाहता हूं।

समाधान: ठीक है, मुझे एक समाधान मिला। मुझे सेटिंग्स को एक टेक्स्ट फ़ाइल में लिखना है और इसे पढ़ने के लिए पुनर्प्राप्त करना है।

मेरी सेटिंग्स मॉड्यूल:

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 

अभी सेवा को बचाने के लिए, मैं सिर्फ एक पाठ बॉक्स और एक बटन का उपयोग करें। बचत फ़ाइल में उपयोगकर्ता नाम को TextBox1 का मूल्य:

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

उपयोगकर्ता नाम का मान पढ़ना और यह TextBox1 में डाल दिया:

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

बहुत लंबे कोड है, लेकिन यह अच्छी तरह से काम करता है। सबको धन्यवाद!

+0

{वैश्विक चर के बारे में सामान्य चेतावनी} –

+0

'सार्वजनिक उपयोगकर्ता नाम, उपयोगकर्ता आइकन, पृष्ठभूमि, ब्राउज़र होमपेज स्ट्रिंग के रूप में' यहां केवल 'ब्राउज़र होम पेज' एक स्ट्रिंग है, आपको प्रत्येक चर –

+13

के बाद 'स्ट्रिंग के रूप में' दोहराना होगा "मैं वर्तमान में एक बना रहा हूं पावरपॉइंट में "ओएस" "। !! ??? – cja

उत्तर

3

एक मॉड्यूल में अपनी सेटिंग मान न रखें। मॉड्यूल कोड के लिए हैं और आप जितना चाहें उनमें डेटा स्टोर करने की कोशिश कर रहे अधिक काम करेंगे। रजिस्ट्री में या एक पाठ फ़ाइल में स्टोर सेटिंग्स। यदि आप सेटिंग्स को फ़ाइल के अंदर रखना चाहते हैं, तो आप कस्टम डॉक्यूमेंट प्रॉपर्टीज या एक छिपी हुई स्लाइड का उपयोग करने में सक्षम हो सकते हैं - मुझे आपको एक अच्छा सुझाव देने के लिए पीपीटी के बारे में पर्याप्त जानकारी नहीं है।

ऐसी प्रक्रिया बनाएं जो आप उन्हें स्टोर करते हुए सेटिंग्स को पढ़ सकें। फिर उन्हें भंडारण में वापस लिखने की प्रक्रिया बनाएं। जब उपयोगकर्ता स्लाइड पर किसी निश्चित बटन पर क्लिक करता है, तो आप उपयोगकर्ता नाम चर बदलते हैं, फिर उस प्रक्रिया को निष्पादित करते हैं जो इसे स्टोरेज में लिखता है।

एक ही पंक्ति पर चर घोषित करते समय, आपको प्रत्येक चर के लिए प्रकार शामिल करना होगा।

Public UserName, UserIcon, Background, BrowserHomePage As String 

ब्राउज़र होमपेज को एक स्ट्रिंग के रूप में मंद करता है, लेकिन अन्य तीन चर वैरिएंट के रूप में।इसके बजाय

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

या बेहतर अभी तक, लेकिन वे सभी अपनी लाइन पर हैं।

3

आपका "उपयोगकर्ता नाम" चर वास्तव में वैश्विक नहीं है क्योंकि यह आपकी सेटिंग्स subroutine के दायरे में है। उन्हें वैश्विक बनाने के लिए फ़ंक्शन/सबराउटिन के बाहर अपनी परिवर्तनीय घोषणाएं ले जाएं।

इस प्रयास करें:

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