title: Run VBA on any PowerPoint to change the LanguageID
body: <p>I'm trying to create a toolbar with a button that will change the <code>LanguageID</code> for all shapes and text boxes in a PowerPoint document to EnglishUS. This is to fix a problem where if someone spell-checks a document using another language (in this instance, French), that language is embedded into the .ppt file itself. When another user tries to spell-check the same area using another language, say English, the words the spell checker suggests are in the original language. For instance, it tried to correct the word 'specified' to 'specifie', a French word. From what I've read, the only way to fix this language issue is with a VBscript, and the only way to run a VBscript in Powerpoint without embedding it into a .ppt and loading that file every time is by creating an add-in with a toolbar button to run the macro, also using VBS. Below is the code which I've taken from various sources, and when I tried to put it together, it didn't work (although it did compile). If someone could take a look, I'm sure its a simple syntax error or something like that, it would be a HUGE help. Thanks in advance!!</p>
  
  <p>By the way if anyone knows an easier way to run a macro in PPT without having to open a certain PPT every time, I'm ALL ears.</p>
  
  <p>and now, the script: </p>
  
  <pre><code>Sub Auto_Open() 
      Dim oToolbar As CommandBar 
       Dim oButton As CommandBarButton 
       Dim MyToolbar As String 
  
       ''# Give the toolbar a name 
       MyToolbar = "Fix Language" 
  
       On Error Resume Next    
       ''# so that it doesn't stop on the next line if the toolbar's already there 
  
       ''# Create the toolbar; PowerPoint will error if it already exists 
       Set oToolbar = CommandBars.Add(Name:=MyToolbar, _ 
           Position:=msoBarFloating, Temporary:=True) 
       If Err.Number &lt;&gt; 0 Then   
             ''# The toolbar's already there, so we have nothing to do 
             Exit Sub 
       End If 
  
       On Error GoTo ErrorHandler 
  
       ''# Now add a button to the new toolbar 
       Set oButton = oToolbar.Controls.Add(Type:=msoControlButton) 
  
       ''# And set some of the button's properties 
       With oButton 
            .DescriptionText = "Fix Language for Spell Check"    
             ''# Tooltip text when mouse if placed over button 
            .Caption = "Click to Run Script"     
            ''# Text if Text in Icon is chosen 
            .OnAction = "Button1"   
             ''# Runs the Sub Button1() code when clicked 
            .Style = msoButtonIcon     
             ''# Button displays as icon, not text or both 
            .FaceId = 59        
  
       End With 
  
       ''# Repeat the above for as many more buttons as you need to add 
       ''# Be sure to change the .OnAction property at least for each new button 
  
       ''# You can set the toolbar position and visibility here if you like 
       ''# By default, it'll be visible when created 
       oToolbar.Top = 150 
       oToolbar.Left = 150 
       oToolbar.Visible = True 
  
   NormalExit: 
       Exit Sub   ''# so it doesn't go on to run the errorhandler code 
  
   ErrorHandler: 
        ''# Just in case there is an error 
        MsgBox Err.Number &amp; vbCrLf &amp; Err.Description 
        Resume NormalExit: 
   End Sub 
  
   Sub Button1() 
   ''#         This is the code to replace the LanguageID throughout the ppt 
    Option Explicit    
    Public Sub ChangeSpellCheckingLanguage()    
    Dim j As Integer, k As Integer, scount As Integer, fcount As Integer  
    scount = ActivePresentation.Slides.Count  
    For j = 1 To scount  
    fcount = ActivePresentation.Slides(j).Shapes.Count  
    For k = 1 To fcount  
    If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then  
    ActivePresentation.Slides(j).Shapes(k) _  
    .TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS  
    End If  
    Next k  
    Next j  
    End Sub 
  
    End Sub
  </code></pre>