Способ VBA вручную сохранить файл excel на основе «динамических» параметров.

Я создал приложение, использующее макрос excel, где пользователь передает определенные значения и сохраняет его в несколько путей каталога с помощью макроса кнопки.

Когда я выбираю область из раскрывающегося списка, она должна сохранять файл в указанной папке региона. Скажем, например, когда выбран NY, файл будет сохранен на общий диск и в папке 2016 – NY. Но теперь, решив будущее приложения, я думаю о том, что «год» является отдельным полем на листе, который извлекает значение года от пользователя. Как я могу достичь этого без необходимости менять код каждый год. С тех пор этот процесс будет продолжаться для «n». Заранее спасибо !

FileName1 = Range("D3").Value filenameOfNewBook = FileName1 If location = "Illinois" Then ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\Illinois\" & FileName1 & "-" & "checklist" & ".xlsm" ElseIf location = "LA" Then ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\LA\" & FileName1 & "-" & "checklist" & ".xlsm" ElseIf location = "NY" Then ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\NY\" & FileName1 & "-" & "checklist" & ".xlsm" Else ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\Atlanta\" & FileName1 & "-" & "checklist" & ".xlsm" End If MsgBox "File Saved successfully!", , "Save" ActiveWorkbook.save Application.DisplayAlerts = True 

Исходя из моего опыта работы с задачами офисных задач, лучше не ссылаться на текущий год, но год, установленный пользователем, поэтому, например, в январе 2017 пользователь все равно может выполнять действия над файлами, связанными с 2016 годом. Вы можете избавиться от следующего:

 If location = "Illinois" Then ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\Illinois\" & FileName1 & "-" & "checklist" & ".xlsm" ElseIf location = "LA" Then ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\LA\" & FileName1 & "-" & "checklist" & ".xlsm" ElseIf location = "NY" Then ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\NY\" & FileName1 & "-" & "checklist" & ".xlsm" Else ActiveWorkbook.SaveAs FileName:="W:\Audits\2016\Atlanta\" & FileName1 & "-" & "checklist" & ".xlsm" End If 

И вместо этого используйте:

 Dim myYear as String, locations() as String, locationForPath as String Dim locCounter as Long myYear = ThisWorkbook.Worksheets("Sheet1").Range("a2").value2 'the cell with year value, for example 2016 locations = Split("Illinois,LA,NY",",") For locCounter = LBound(locations) to UBound(locations) If location = locations(locCounter) Then locationForPath = location: Exit For Next locCounter If locationForPath = vbNullString Then locationForPath = "Atlanta" ActiveWorkbook.SaveAs FileName:="W:\Audits\" & myYear & "\" & locationForPath & "\" & FileName1 & "-" & "checklist" & ".xlsm" 
Давайте будем гением компьютера.