Я работаю над некоторым кодом и задаюсь вопросом, возможен ли цикл.На самом деле я пишу этот код для Word, а не для Excel, что я обычно делаю, но я не думаю, что это имеет значение.Я бы сказал, что мой уровень мастерства в VBA - начальный-средний.Код предназначен для использования функции слияния в Word, которая изменяет несколько функций в документе, а затем выполняет сохранение файла, а затем переходит к следующему файлу.
Sub Finsh_Merge_Save_302()
Dim date1 As String
Dim date2 As String
Dim filepath As String
Dim mainfile As String
Dim fund1 As String, fund2 As String, fund3 As String, fund4 As String 'etc.
Dim fundabbv1 As String, fundabbv2 As String, fundabbv3 As String, fundabbv4 As String ' etc.
mainfile = ActiveDocument.Name
fund1 = "blah blah blah 1"
fund2 = "blah blah blah 2"
fund3 = "blah blah blah x"
fund4 = "blah blah blah y"
'etc.
fundabbv1 = " stuff here 1"
fundabbv2 = " stuff here 2"
fundabbv3 = " stuff here x"
fundabbv4 = " stuff here y"
'etc.
date1 = InputBox("Enter year of filing: 20xx")
date2 = InputBox("Enter full date of filing: mm-dd-yyyy")
filepath = "\\Bp211\sys\FAD\FA\TRES (March 2015)\Financial Reporting\Certifications\SOX Compliance and Certifications\N-CSR Certifications\NCSR Filings\" & date1 & "\" & date2
Application.ScreenUpdating = False
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
End With
ActiveDocument.SaveAs2 FileName:=filepath & "\" & fund1 & "\NCSR 302 Certifications" & fundabbv1 & ".docx"
ActiveDocument.Close
Windows(mainfile).Activate
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False
End With
ActiveDocument.SaveAs2 FileName:=filepath & "\" & fund2 & "\NCSR 302 Certifications" & fundabbv2 & ".docx"
ActiveDocument.Close
Windows(mainfile).Activate
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Вы можете видеть, где я использую определенные переменные, чтобы сохранить файл в правильном месте с правильным именем файла.В настоящее время это работает без проблем.Проблема в том, что у меня много определенных переменных, 70+, поэтому мне было интересно, смогу ли я создать цикл вместо того, чтобы писать этот раздел кода более 70 раз.