Итак, у меня есть работающий скрипт VBA. Я просто хочу изменить имя, под которым цикл сохраняет файлы.
Я дам краткое описание того, что он в настоящее время делает. По сути, он выполняет цикл действий для определенного диапазона строк, здесь A2:A72
. Это «основная» рабочая книга, где выполняется этот цикл, где собраны все входные данные. Каждая строка представляет собой входные данные отдельной темы и копируется / вставляется в шаблон в другой книге. Затем запускается Солвер, чтобы настроить шаблон для заданных входных данных. Затем он сохраняет и называет файл как текст в первой ячейке строки, в которую была вставлена копия. (т. е. A2
, A3
, A4
и т. д.) Затем он зацикливает это для каждой строки, и каждая строка будет иметь свой собственный шаблон, настроенный и сохраненный отдельно.
Это почти так, как я в идеале хочу, чтобы это работало.
Я просто хочу сохранить имя файла не просто как A2
, а как =C2&" - "&A2
Я пытался использовать это, что кто-то предложил
fName = Range("C" & c.Row) & Range("A" & c.Row)
Но когда я пытался, я получал ошибку метода SaveAs. В представлении наблюдения я мог видеть, что это происходит потому, что он не считывал fName, поэтому это был просто путь к файлу в значении скрипта. Я изменил его обратно на c.Value, а затем он начал работать, назвав файл ячейкой столбца A. Правда, я не совсем понимаю, как c.Value возвращает столбец A, из-за чего мне становится сложнее понять, как его изменить, чтобы получить то, что я хочу.
В любом случае, вот сценарий, который у меня сейчас есть:
Sub RunModels()
Dim fPath As String
Dim strTemplate As String
Dim fName As String
Dim wb As Workbook
Dim c As Range
Dim rngLoop As Range
'Where will files get stored?
fPath = "H:\ACQUISITIONS\Personal (D-AP)\Gmo\ALL MF"
'Where is the template file?
strTemplate = "H:\ACQUISITIONS\Personal (D-AP)\Gmo\ALL MF\Garden Grove - 11121 Chapman Ave.xlsm"
'Error check
If Right(fPath, 1) <Application.PathSeparator Then
fPath = fPath & Application.PathSeparator
End If
Application.ScreenUpdating = False
'Set Loop
Set rngLoop = ThisWorkbook.Worksheets("Sheet1").Range("A2:A72")
'Set Looped Actions
For Each c In rngLoop.Cells
'Open the template file
Set wb = Workbooks.Open(strTemplate)
'Add some data to the template file
c.EntireRow.Copy Destination:=wb.Worksheets("Insert
Sheet").Range("A2")
SolverOk SetCell:="$H$20", MaxMinVal:=3, ValueOf:=1.2, ByChange:="$F$35", Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
'Dynamic File Naming
fName = c.Value
'Save the file and close
wb.SaveAs Filename:=wb.Path & Application.PathSeparator & fName
wb.Close
Next c
Application.ScreenUpdating = True
End Sub
Большое спасибо за все и любую помощь !!