Мне нужно сделать две презентации с теми же слайдами, фоны и все, кроме текста: один на немецком и один на английском. Поэтому у меня есть две отдельные презентации, которые я всегда должен обновлять одновременно, иначе одна языковая версия будет устаревшей, и я часто забываю, что я изменил.VBA для Microsoft PowerPoint для распознавания и скрытия текстовых полей на немецком языке
Я сделал собственное шоу со всеми слайдами, скопированными в одну презентацию PowerPoint, и это работает достаточно хорошо, но я все равно должен менять два одинаковых слайда каждый раз, когда я делаю редактирование на одном языке.
Поэтому я пытаюсь написать макрос, который распознает все текстовые поля в презентации с немецким текстом в них и спрячет их во время показа, и наоборот. Затем каждый макрос будет связан с гиперссылкой на слайде заголовка под названием «английский» или «немецкий», который при нажатии будет скрывать текстовые поля на других языках, одновременно оставляя все изображения и форматируя их. В идеале макрос скроет все ящики на одном языке и снова отобразит все поля на другом языке на одном и том же шаге, чтобы презентация всегда была полезной, и у меня нет пользователя, который открывает PPT без текста потому что все они будут скрыты ...
Для этого у меня есть два текстовых поля, содержащих текст на обоих языках на одном слайде, поэтому я хотел бы скрыть текстовые поля.
Я могу получить все текстовые поля скрытыми, но не текстовыми полями на определенном языке (иначе, все поля, независимо от их языка редактирования, будут скрыты, а не какие-либо конкретные).
PS - текстовые поля не нуждаются в ссылке здесь ... он может просто ссылаться на форму. Я старался избегать того, что Картинки будут скрыты, а текстовые поля будут лучшим способом ссылки на то, что я хотел.
Есть ли лучший способ?
Я действительно не знаю, как ссылаться на язык в VBA, я нашел этот сайт случайно и подумал, что у кого-то может быть быстрый трюк, который поможет мне справиться с этой проблемой. Код у меня есть, который будет сливаться из текстовых полей, но не сливаться конкретными языковыми урны выглядят следующим образом:
Sub GermanTextBoxFinder()
Dim SlideToCheck As Slide
Dim ShapeIndex As Integer
' Visit each slide
For Each SlideToCheck In ActivePresentation.Slides
' On each slide, count down through the shapes
For ShapeIndex = SlideToCheck.Shapes.Count To 1 Step -1
' If the shape IS a text box and DOES have German text
If SlideToCheck.Shapes(ShapeIndex).Type = msoTextBox And _
MsoLanguageID.msoLanguageIDGerman _
Then
' Toggle visibility of German Textboxes
SlideToCheck.Shapes(ShapeIndex).Visible = msoFalse
End If
Next
Next
End Sub
Спасибо, Стив! Это прекрасно работает. Что-то, о чем я не думал раньше, однако, заключается в том, что когда я делаю кнопку действия на слайде заголовка (например, «немецкий» (ссылка, чтобы скрыть английский макрос)) с гиперссылкой для запуска макроса, она также скроет, что Кнопка действия, означающая, что пользователь не может щелкнуть ее снова, чтобы отобразить текстовые поля, не запуская макрос другим способом. Как я могу написать исключение, чтобы исключить скрытие слайда заголовка? Или, в частности, ссылку на поле Действие не скрывать? – vandey08
В верхней части головы у меня будет функция HideEnglish также изменить текст кнопки действия на «Как вы говорите, HIDE GERMAN auf Deutsch», и подпрограмма HideGerman изменит его на «Hide English», –