我已经从父文件中编写了一个宏来更改子文件。
父文件有10条以上的行要循环显示。 子文件查看第1行,并根据第1行中的名称创建一个文件。
然后我使用For和Next函数让孩子查看下一行并根据新名称等保存文件。
我收到以下错误:
下一个没有For
我的代码:
Sub CreateModels()
' set parameters
Dim vDestPath As String
Dim vDestFile As String
Dim vSrcePath As String
Dim vCurrFile As String
Dim vSrceFile As String
Dim vTot As Integer
vSrceFile = "Bridge 3-S Financial Model.xlsx"
vSrcePath = ActiveWorkbook.Path + "\Bridge 3-S Financial Model.xlsx"
vCurrFile = ActiveWorkbook.Name
vDestPath = ActiveWorkbook.Path & "\Output Models\"
'OpenFinancialModel
Workbooks.Open vSrcePath, UpdateLinks:=False
Sheets("Input Sheet Data").Select
Range("A4").Select
'creating models
For vTot = 6 To 1000
ActiveCell.FormulaR1C1 = "='[Input Sheet.xlsm]Input Sheet'!R" & vTot & "C1"
If Range("A4").Value <> 0 Then
Do
filepath = vDestPath & Range("a4") & ".Xlsx"
ActiveWorkbook.SaveAs (filepath)
vTot = vTot + 1
Next
Else
ActiveWorkbook.Close SaveChanges:=False
End If
End Sub
答案 0 :(得分:1)
删除“ Do”关键字,您可能希望在“ Next”关键字之前结束If语句。像这样:
For vtot = 6 To 1000
ActiveCell.FormulaR1C1 = "='[Input Sheet.xlsm]Input Sheet'!R" & vtot & "C1"
If Range("A4").Value <> 0 Then
filepath = vDestPath & Range("a4") & ".Xlsx"
ActiveWorkbook.SaveAs (filepath)
vtot = vtot + 1
Else
ActiveWorkbook.Close SaveChanges:=False
End If
Next
答案 1 :(得分:0)
您需要改善循环和查询。查询If
.. Then
.. Else
的一半在For
.. Next
之内-这不是一个好主意。请检查Next
的位置,然后根据需要移动到另一个地方。
还有一个Do
异常终止,缺少一些伪代码,例如:
Dim k As Long
Do While k <= 10
Cells(k, 1).Value = k
Loop
删除Do
并调试代码。