Я пытаюсь создать панель инструментов с кнопкой, которая изменит LanguageID
для всех фигур и текстовых полей в документе PowerPoint на EnglishUS. Это необходимо для устранения проблемы, когда, если кто-то проверяет орфографию документа, используя другой язык (в данном случае французский), этот язык внедряется в сам файл .ppt. Когда другой пользователь пытается проверить правописание в той же области, используя другой язык, например английский, слова, предлагаемые программой проверки правописания, находятся на языке оригинала. Например, он попытался исправить слово «указанный» на «конкретизировать», французское слово. Из того, что я прочитал, единственный способ исправить эту проблему с языком - это использовать VBscript, а единственный способ запустить VBscript в Powerpoint без встраивания его в .ppt и каждый раз загружать этот файл - создать надстройку с кнопкой на панели инструментов для запуска макроса, также используя VBS. Ниже приведен код, который я взял из разных источников, и когда я попытался собрать его, он не работал (хотя он компилировался). Если бы кто-то мог взглянуть, я уверен, что это простая синтаксическая ошибка или что-то в этом роде, это была бы ОГРОМНАЯ помощь. Спасибо заранее !!
Кстати, если кто-нибудь знает более простой способ запуска макроса в PPT без необходимости каждый раз открывать определенный PPT, я ВСЕ уши.
и теперь скрипт:
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 <> 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 & vbCrLf & 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