मैं पावरपॉइंट वीबीए का उपयोग करके कोडिंग कर रहा हूं और टेक्स्ट को आयताकार आकार के अंदर रखने की कोशिश कर रहा हूं, लेकिन सुनिश्चित करें कि टेक्स्ट फिट बैठता है (इसलिए कोई अतिप्रवाह नहीं है)। मैं नहीं चाहता कि आकार का आकार स्वयं बदल जाए, लेकिन पाठ का आकार बदलना है।
मैंने देखा है कि मैं उपयोग कर सकता हूँ
oShp.TextFrame2.AutoSize = msoAutoSizeTextToFitShape
हालाँकि, इसके साथ समस्या यह है कि टेक्स्ट का आकार तभी बदलेगा जब उपयोगकर्ता ने टेक्स्टबॉक्स पर क्लिक किया होगा जब पावरपॉइंट सामान्य मोड में होगा। जब PowerPoint चल रहा हो तो मुझे यह कार्यक्षमता चाहिए!
मैं यह जानकर आभारी रहूंगा कि टेक्स्ट को स्वचालित रूप से आकार देने का कोई तरीका है या क्या मुझे वैकल्पिक विधि खोजने की ज़रूरत है?
किसी भी टिप्पणी के लिए धन्यवाद!
2 जवाब
मैंने सोचा कि मैं अपने प्रश्न का उत्तर दूंगा और सूत्र बंद कर दूंगा। बहुत शोध करने के बाद मैंने पाया कि पावरपॉइंट शो चलने पर टेक्स्ट को स्वतः आकार बदलने के लिए कोई स्पष्ट तरीका नहीं था। मैंने कई दृष्टिकोणों की कोशिश की उदा। टेक्स्ट सम्मिलित करना, टेक्स्ट को ट्रिम करना और वर्ड रैप को बंद और चालू करना - हालांकि, इनमें से किसी ने भी काम नहीं किया। मैं ध्यान देता हूं (भावेश) मैं पूरी तरह से जानता था कि पावरपॉइंट के जीयूआई के माध्यम से ऑटो-साइज टेक्स्ट सेटिंग्स का चयन कैसे करें।
अंत में मेरा समाधान डू लूप बनाना और टेक्स्ट का आकार बदलना था।
नीचे मैंने अपनी प्रमुख पंक्तियों को इस उम्मीद में चिपकाया है कि यह किसी और की मदद कर सकता है जो ऐसा करने की कोशिश कर रहा है। मैंने एक चर अतिप्रवाह बनाया है जो यह आकलन करने का प्रयास करता है कि आकृति के टेक्स्टबॉक्स की ऊंचाई आयत के आकार से बड़ी है या नहीं।
Dim overflow As Integer
Dim counter As Integer
counter = 0
With ActivePresentation.Slides(i).Shapes(stringToTest)
overflow = CInt((.TextFrame.TextRange.BoundHeight) - (.Height - .TextFrame.MarginTop - .TextFrame.MarginBottom))
Do While overflow > 16 And counter < 50
'*** I note that the shape is overflowing when its value is >0 but I found 16 to be the most "aesthetically pleasing" number!
'*** Also using a counter prevents the code from potentially getting stuck in an infinite loop
If .TextFrame.TextRange.Font.Size > 20 Then
.TextFrame.TextRange.Font.Size = .TextFrame.TextRange.Font.Size - 1
Else
.TextFrame.TextRange.Font.Size = .TextFrame.TextRange.Font.Size - 0.5
End If
'**** By reducing the font size by 0.5 this provided a better fit for the text _
'**** (even better than using on PowerPoint's auto-size function!)
counter = counter + 1
overflow = CInt((.TextFrame.TextRange.BoundHeight) - (.Height - .TextFrame.MarginTop - .TextFrame.MarginBottom))
Loop
End With
आकृति प्रारूप में, पाठ विकल्पों के अंतर्गत, अतिप्रवाह पर पाठ को सिकोड़ने का विकल्प चुनें।
फिर, .Shapes("Title 1").TextFrame.TextRange
का उपयोग करके हम VBA के माध्यम से टेक्स्ट इनपुट करते हैं।
पाठ स्वचालित रूप से अपने फ़ॉन्ट आकार को बदल देता है।
नए सवाल
vba
अनुप्रयोगों के लिए विजुअल बेसिक (VBA) मैक्रो लिखने के लिए एक इवेंट-संचालित, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है, जिसका उपयोग पूरे ऑफिस सूट के साथ-साथ अन्य अनुप्रयोगों के लिए भी किया जाता है। VBA VB.NET, या VBS के बराबर नहीं है; यदि आप Visual Studio उपयोग [vb.net] में काम कर रहे हैं। यदि आपका प्रश्न विशेष रूप से किसी एमएस ऑफिस एप्लिकेशन को प्रोग्रामिंग करने के बारे में है, तो उपयुक्त टैग का भी उपयोग करें: [एक्सेल], [एमएस-एक्सेस], [एमएस-वर्ड], [आउटलुक], या [एमएस-प्रोजेक्ट]।