2010-05-05 2 views
1

마지막 줄에 런타임 오류 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** 

답변

0

귀하의 피벗 캐시 "ptCache을"이름이 아닙니다 ... 나는 응용 프로그램을 볼 수 있지만, 지수가 0 아래 코드입니다, 아마 "PivotCache1"또는 뭔가. 이들 중 하나가 작동하며, 전자가 선호됩니다.

Set ptCache.Recordset = rs 

Set wkbTo.PivotCaches(1).Recordset = rs 
+0

안녕 딕, 불행히도 그게 작동하지 않았다. 전 버전에서 나에게 wkbTo.PivotCaches (1)를 사용하여 동일한 오류를주었습니다. 오류 범위 아래에 subscript를주었습니다. 이는 ptCache가 생성 된 이전 행이 작동하지 않는다는 것을 의미합니다. – Paul

+0

그럴 것 같지만, 그 줄에 오류를 줄 것입니다. 필자는 2007 년을 편리하게 사용할 수는 없지만 2003 년에는 PivotCaches의 Create 메서드가없고 Add 메서드 만 있습니다. 그것이 2007 년에도 계속되고 그 라인 주변의 억압 오류가 있다면, 그것이 범인이 될 것입니다. 어쨌든, 가능한 한 빨리 2007 년에 확인해 보겠습니다. –

+0

안녕 Dick 그것은 내가 발견 한 한 가지입니다. 2007 년 excel에는 add 메소드가 없지만 같은 모양을 갖는 create 메소드가 있습니다. 나는 처음에 추가를했고 438 오류가 발생했다 (나는 생각한다). 또한 오류를 표시하지 않습니다. 그리고 내 짐작의 메시지 때문에 스프레드 시트에 rs를 아무 문제없이 버리고 해당 시트에서 피벗 캐쉬와 피봇 테이블을 만들었습니다. 그러나 여전히 피벗 테이블 ADO 레코드 세트를 만드는 방법을 알고 싶습니다. 당신의 도움을 주셔서 감사합니다. – Paul

0

나는 이것이 오래되었다는 것을 알고있다. 같은 서브 루틴에서 두 개의 rs 변수 (하나는 ADODB을 사용하고 다른 하나는 DAO을 사용하는 변수)를 선언하고있는 것으로 나타났습니다. 솔직히 컴파일러가 당신을 잡아 먹지는 못했지만 두 가지 중 하나를 시도해 보는 것이 좋을 것 같습니다. rsADODB.RecordSet으로 초기화 했으므로 rs = DAO.RecordSet을 주석 처리해야합니다.