Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в VBA коде

Иван Ходателев Ученик (115), на голосовании 1 день назад
PowerPoint выдаёт ошибку при компиляции этого кода, не пойму что тут неправильно?
Sub CreatePresentation()
Dim pptApp As Object
Dim pptPres As Object
Dim slideIndex As Integer
Dim slide As Object

' Создаем приложение PowerPoint
Set pptApp = CreateObject("PowerPoint.Application")
pptApp.Visible = True

' Создаем новую презентацию
Set pptPres = pptApp.Presentations.Add

' Слайды с текстом
Dim slideTexts As Variant
slideTexts = Array( _
"Территориальное расширение" & vbCrLf & _
"Внешняя политика Московского царства в XVI-XVII веках была многогранной и разнообразной, отражая стремление государства укрепить свои позиции и расширить территорию. Под руководством Ивана IV (Ивана Грозного) началась активная экспансия на восток и юг. Завоевание Казанского ханства в 1552 году стало важным и знаковым этапом...", _

"Отношения с соседними державами" & vbCrLf & _
"Другим важным аспектом внешней политики были отношения с соседними державами. Взаимодействие с Литвой и Польшей стало особенно значимым. Конфликты с этими государствами приводили к продолжительным и изнурительным войнам, однако Московия смогла сохранить свою независимость и суверенитет...", _

"Взаимодействие с Западом" & vbCrLf & _
"В XVI-XVII веках происходила активная торговля с европейскими странами, что способствовало культурному обмену и взаимодействию. Русские купцы начали вести торговлю с Англией, Нидерландами и другими западными странами. Приглашение иностранных специалистов для модернизации армии и флота повысило военные возможности Московии...", _

"Экспансия на Восток" & vbCrLf & _
"На Востоке московская политика отличалась активностью и решительностью. Расширение на Сибирь стало вопросом не только территориального роста, но и освоения богатых природных ресурсов. Русские казаки начали активно осваивать Сибирь, что привело к образованию новых торговых путей...", _

"Результаты внешней политики" & vbCrLf & _
"Результаты внешней политики Московского царства были многообразны и многогранны. Успешные войны и завоевания значительно увеличили территорию и влияние государства, но постоянные конфликты истощали ресурсы и приводили к внутренним конфликтам...", _

"Заключение" & vbCrLf & _
"В заключение, внешняя политика Московского царства была не только стратегией расширения, но и комплексом взаимодействий с различными государствами и народами. Это время стало знаковым для формирования национальной идентичности и понимания роли России на международной арене..." _
)

' Создаем слайды
For slideIndex = LBound(slideTexts) To UBound(slideTexts)
Set slide = pptPres.Slides.Add(slideIndex + 1, ppLayoutText)
slide.Shapes(1).TextFrame.TextRange.Text = slideTexts(slideIndex)
Next slideIndex

' Освобождаем память
Set slide = Nothing
Set pptPres = Nothing
Set pptApp = Nothing
End Sub
Голосование за лучший ответ
kaiu Высший разум (117567) 1 месяц назад
Он не компилируется, а интерпретируется, так что ошибку узнать невозможно. Ставите точку останова в начале кода и выполняете, так как интерпретация будет идти по шагам, вот где завалится, то там и скажет, что за ошибка
Алексей Пинчук Мудрец (16719) 1 месяц назад
Не компилируется (да-да, в VBA именно компиляция, вопреки утверждению kaiu), потому что синтаксическая ошибка: список аргументов для Array не заканчивается закрывающейся скобкой. Это может показаться парадоксальным, ведь закрывающая скобка имеется. Но дело в том, что синтаксически список аргументов заканчивается первой же пустой строкой в приведённой программе, конец которой не экранирован символом продолжения строки (line-continuation character).

Исправляется просто: во всех пустых строчках надо поставить пробел и подчёркивание (потому что символ продолжения строки в VBA состоит из пробела, за которым идёт подчёркивание):
 a = Array( _
"111", _
_
"222", _
_
"333" _
)
Похожие вопросы