0
항목 수를 기반으로 Excel 통합 문서를 동적으로 만들고 있는데, 실제로 각 통합 문서에 동일한 머리글을 쓰려고합니다. 내 아래 구문은 첫 번째 통합 문서에서 작동하지만 두 번째 새 통합 문서가 만들어지면 오류가 발생합니다.여러 WOrkbos에 대한 머리글 쓰기
이것은 내 구문입니다. 헤더 행이 만들어지는 각 통합 문서에 기록되도록하려면 어떻게해야합니까?
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Do While Not rs1.EOF
i = 0
x = 1
name = rs1.Fields(0).Value
Set xlWb = xlApp.Workbooks.Add
row = 1
xyz = 0
Set HeaderWrite = xlWb.Worksheets(1)
HeaderWrite.Cells(row, xyz + 1).Value = "Header 1"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 2"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 3"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 4"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 5"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 6"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 7"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 8"
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Header 9"
xyz = xyz + 1
xlWb.Worksheets(1).Range("$A$2") = name
Set xlR = xlWb.Worksheets(1).Range("$N$2")
Set rs2 = Db.OpenRecordset("SELECT * FROM MasterDB", dbOpenDynaset)
With rs2
.MoveLast
.MoveFirst
Do While Not .EOF
xlR.Value = .Fields(0).Value
xlR.Offset(ColumnOffset:=1).Value = .Fields(2).Value
xlR.Offset(ColumnOffset:=2).Value = "Mainstreem"
HeaderWrite.Cells(row, xyz + 1).Value = "Dept_" & i
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "Item" & i
xyz = xyz + 1
HeaderWrite.Cells(row, xyz + 1).Value = "CRN" & i
xyz = xyz + 1
i = i + 1
Debug.Print i
If i = 50 Then
i = 0
x = x + 1
xlWb.SaveAs FileName:=sPath & sFile, FileFormat:=xlOpenXMLWorkbook
xlWb.Close SaveChanges:=True
Set xlWb = xlApp.Workbooks.Add
sFile = name & "_" & "SalesLog" & x & ".xlsx"
xlWb.Worksheets(1).Range("$C$2") = name
Set xlR = xlWb.Worksheets(1).Range("$Q$2")
Else
Set xlR = xlR.Offset(ColumnOffset:=3)
End If
.MoveNext
Loop
.Close
End With
그런 다음이 내에있는 통합 문서를 닫고, 루프 외부에서 워크 시트 개체'HeaderWrite'를 설정하는 루프 ('xlWb.Close SaveChanges : = True') 때문에 워크 시트 객체를 다시 사용할 때 더 이상 사용할 수 없습니다. – YowE3K
@ YowE3K - 설명하는 아. 그러나 루프 내에서 루프를 반복 할 때마다 헤더를 작성하면 헤더 정보를 한 번만 작성하려고합니다. 저것 피하는 것에 대한 생각? – BellHopByDayAmetuerCoderByNigh
처음에'xlWb'를 어디에 설정했는지 그리고 처음에'i'를 설정하는 곳을 모르면 가장 쉬운 해결책이 무엇인지 확신 할 수 없습니다. 워크 북을 생성하고, HeaderWrite 객체를 설정하고, 헤더와 기타 워크 북의 초기화가 필요한 루프를 작성하는 루프 내부에'If i = 0 Then' 문을 넣는 것만 큼 간단 할 것입니다. If If i = 50 Then'블록하여 통합 문서를 닫고'i = 0'을 설정하면됩니다. (그러나 그것은 단지 "내 머리 꼭대기에서 벗어난"제안입니다.) – YowE3K