2

私が得ている実際のエラーは

「実行時エラー '1004':

ドキュメントが保存されていません。」

そして、デバッグを押すと、次の行に移動します

ActiveWorkbook.Save

問題が発生している巨大な VBA マクロがあります。マクロは、約 75 シートのデータを含む巨大なワークブックで開始されます。最初のページから開始し、ワークシートの名前を読み取ってデータに対して実行するモデルを決定し、新しいワークブックを作成し、計算を実行してグラフを作成し、ワークブックを保存してから次の入力シートに移動します。新しいワークブックを保存することを除いて、これはすべて正常に機能します。私が実行している 4 つの異なるモデルがあり、そのうちの 2 つは正しく保存されます。ただし、他の2つについては、保存しようとするたびにこのエラーに直面します。

OutputFolder = "location of output file" 
If Dir(OutputFolder, vbDirectory) = "" Then
MkDir OutputFolder
End If

Workbooks.Open Filename:="location of input file"    '(this is a path to the file)


Workbooks.Open Filename:="location of lookup table" '(another path)
number_of_reports = Workbooks(InputFile).Sheets.Count
Workbooks(InputFile).Activate 


For i = 1 To number_of_reports

ReportID = ActiveSheet.Name 'get 3 part ID
ID_Lookup = Split(ActiveSheet.Name, "-") 'seperate into individual parts


Workbooks("LookupTable").Activate

'use lookup table
Sheets("CompanyLookup").Select
CompanyID = Range("A" & (ID_Lookup(0) + 1))
CompanyName = Range("B" & (ID_Lookup(0) + 1))

Sheets("CategoryLookup").Select
CategoryID = Range("A" & (ID_Lookup(1) + 1))
CategoryName = Range("B" & (ID_Lookup(1) + 1))

Sheets("ModelLookup").Select
ModelID = Range("A" & (ID_Lookup(2) + 1))
ModelName = Range("B" & (ID_Lookup(2) + 1))


Workbooks(InputFile).Activate
y = Range("B1").End(xlToRight).Column
Workbooks(InputFile).Sheets(ReportID).Select

'name of the workbook
SaveID = CategoryName & "_" & ModelName & "_" & FileID

'create company folder if not there already
Output = "location of output" & CompanyName
If Dir(Output, vbDirectory) = "" Then
MkDir Output
End If

'create model folder if not there already
Output = "location of put" & CompanyName & "\" & ModelName
If Dir(Output, vbDirectory) = "" Then
MkDir Output
End If

'where to save workbook
Dim SaveLocation As String
SaveLocation = Output & "\" & SaveID & ".xlsx"

'save workbook
Dim NewBook As Workbook
'create WB for output
Set NewBook = Workbooks.Add
With NewBook
    .Title = ReportID
    .Subject = ReportID
    .SaveAs Filename:=SaveLocation
End With



'decide which model to run
If ModelID = 1 Then
Call Regression

ElseIf ModelID = 2 Then
Call VolMix

ElseIf ModelID = 3 Then
Call ProdMix

ElseIf ModelID = 4 Then
Call AvgPrice

End If


Workbooks(SaveID).Activate
Range("A1").Select

deletecheck = Workbooks(SaveID).Sheets.Count

'delete extra sheets
If deletecheck > 3 Then

Call DeleteSheet("Sheet1")
Call DeleteSheet("Sheet2")
Call DeleteSheet("Sheet3")

End If

ActiveWorkbook.Save   'THIS IS WHERE I'M GETTING THE ERROR
ActiveWorkbook.Close

Workbooks(InputFile).Sheets(ReportID).Activate

If i <> number_of_reports Then
ActiveSheet.Next.Select
End If
Next i

したがって、モデル 2 と 4 は、保存しようとしているときに問題が発生するモデルです。他のモデルはそうではありません。各モデルのコードを調べましたが、これを引き起こしている 4 つの違いは見つかりませんでしたが、明らかに何かが間違っています。アイデアや提案はありますか?

4

0 に答える 0