마지막 줄에 런타임 오류 1004와 관련된 문제가 있습니다. 2007 년 Excel에 액세스 쿼리를 가져오고 있습니다. 필자는 필드와 데이터를 볼 수 있으므로 레코드 집합이 정상이라는 것을 알고 있습니다. Im은 picotcache가 set ptCache 행에서 작성되었는지 확실하지 않습니다.AD 레코드로 AD 레코드를 사용하는 피벗 캐시 문제
Private Sub cmdPivotTables_Click()
Dim rs As ADODB.Recordset
Dim i As Integer
Dim appExcel As Excel.Application
Dim wkbTo As Excel.Workbook
Dim wksTo As Excel.Worksheet
Dim str As String
Dim strSQL As String
Dim rng As Excel.Range
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim ptCache As Excel.PivotCache
Set db = CurrentDb()
'to handle case where excel is not open
On Error GoTo errhandler:
Set appExcel = GetObject(, "Excel.Application")
'returns to default excel error handling
On Error GoTo 0
appExcel.Visible = True
str = FilePathReports & "Reports SCU\SCCUExcelReports.xlsx"
'tests if the workbook is open (using workbookopen functiion)
If WorkbookIsOpen("SCCUExcelReports.xlsx", appExcel) Then
Set wkbTo = appExcel.Workbooks("SCCUExcelReports.xlsx")
wkbTo.Save
'To ensure correct Ratios&Charts is used
wkbTo.Close
End If
Set wkbTo = GetObject(str)
wkbTo.Application.Visible = True
wkbTo.Parent.Windows("SCCUExcelReports.xlsx").Visible = True
Set rs = New ADODB.Recordset
strSQL = "SELECT viewBalanceSheetType.AccountTypeCode AS Type, viewBalanceSheetType.AccountGroupName AS AccountGroup, " _
& "viewBalanceSheetType.AccountSubGroupName As SubGroup, qryAmountIncludingAdjustment.BranchCode AS Branch, " _
& "viewBalanceSheetType.AccountNumber, viewBalanceSheetType.AccountName, " _
& "qryAmountIncludingAdjustment.Amount, qryAmountIncludingAdjustment.MonthEndDate " _
& "FROM viewBalanceSheetType INNER JOIN qryAmountIncludingAdjustment ON " _
& "viewBalanceSheetType.AccountID = qryAmountIncludingAdjustment.AccountID " _
& "WHERE (qryAmountIncludingAdjustment.MonthEndDate = GetCurrent()) " _
& "ORDER BY viewBalanceSheetType.AccountTypeSortOrder, viewBalanceSheetType.AccountGroupSortOrder, " _
& "viewBalanceSheetType.AccountNumber;"
rs.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
' Set rs = db.OpenRecordset("qryExcelReportsTrialBalancePT", dbOpenForwardOnly)
**'**********problem here
Set ptCache = wkbTo.PivotCaches.Create(SourceType:=XlPivotTableSourceType.xlExternal)
Set wkbTo.PivotCaches("ptCache").Recordset = rs**
안녕 딕, 불행히도 그게 작동하지 않았다. 전 버전에서 나에게 wkbTo.PivotCaches (1)를 사용하여 동일한 오류를주었습니다. 오류 범위 아래에 subscript를주었습니다. 이는 ptCache가 생성 된 이전 행이 작동하지 않는다는 것을 의미합니다. – Paul
그럴 것 같지만, 그 줄에 오류를 줄 것입니다. 필자는 2007 년을 편리하게 사용할 수는 없지만 2003 년에는 PivotCaches의 Create 메서드가없고 Add 메서드 만 있습니다. 그것이 2007 년에도 계속되고 그 라인 주변의 억압 오류가 있다면, 그것이 범인이 될 것입니다. 어쨌든, 가능한 한 빨리 2007 년에 확인해 보겠습니다. –
안녕 Dick 그것은 내가 발견 한 한 가지입니다. 2007 년 excel에는 add 메소드가 없지만 같은 모양을 갖는 create 메소드가 있습니다. 나는 처음에 추가를했고 438 오류가 발생했다 (나는 생각한다). 또한 오류를 표시하지 않습니다. 그리고 내 짐작의 메시지 때문에 스프레드 시트에 rs를 아무 문제없이 버리고 해당 시트에서 피벗 캐쉬와 피봇 테이블을 만들었습니다. 그러나 여전히 피벗 테이블 ADO 레코드 세트를 만드는 방법을 알고 싶습니다. 당신의 도움을 주셔서 감사합니다. – Paul