2010-04-15 5 views
0

Access 쿼리 결과를 Excel로 내보내는 작업을 자동화하고 싶습니다. 내 환경입니다 : Access 2007에서 Excel 2003으로의 내보내기 자동화 방법

  • 수출이 엑셀 2003 형식이어야합니다 액세스 2003 형식으로 2007
  • 데이터베이스

    • 액세스 할 수 있습니다.

    쿼리에는 최대 512자를 포함 할 수있는 메모 열이 포함됩니다. 다음 복사/Excel로 결과 그리드를 붙여

    • 실행 Access에서 쿼리

      지금까지 나는 다음 시도했습니다. 이것은 잘 작동하지만 수동 단계가 필요합니다.

    • 실행 다음과 같이 DoCmd.TransferSpreadsheet를 사용하여 쿼리를 수출 일부 VBA 코드 :

      DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MyQuery", "MyFile.xls"

    내가 가진 문제는 VBA 코드가 255 자 메모 열을 자릅니다 것입니다.

    이 절단없이 Excel로 프로그래밍 방식으로 내보내려면 가장 쉬운 방법은 무엇입니까?

    이상적으로 Access에서 Excel로 데이터를 밀어 넣고 싶습니다. 즉, Excel에서 "외부 데이터 가져 오기"를 사용하지 않았습니다.

    편집의 의견과 지금까지 응답에 대응

    :

    당신이 메모 필드를 포함하는 테이블을 내보낼 수 있습니까?

    어쨌든 그렇게 할 수 없으므로 테이블을 내보낼 수 없었습니다.

    ... 그것은

    쿼리에 ORDER BY 절을 포함하지에 정렬과 같은 메모를 잘라 것들 중 하나는, 그래서 정렬이다 (그리고 정렬 할 필요가) 발생합니다. 그러나 메모 열에 정렬되어 있지 않습니다.

    Left (MyMemo, 4096)와 같은 메모로 처리하면 피할 수 있습니다.

    "Left (Replace (MemoColumn,"... ","... "), 512)와 같은 것을 사용하여 쿼리의 메모 열이 이미 처리되고 512 자로 잘립니다. Left (...)를 사용하면 도움이되지 않습니다.의 CopyFromRecordset 기능 내가 Range.CopyFromRecordSet하여 Excel 자동화를 사용하여 시도했다

    를 사용

    시도의 자동화. 이 경우 더 긴 메모 필드는 잘리지 않지만 끝 부분에 가비지 문자가 포함되어 내보내집니다.

  • +0

    메모 필드가 포함 된 테이블을 내보낼 수 있습니까? 쿼리에서 메모 필드의 잘림이 일반적인 문제이므로 메모가 테이블 내보내기에서 잘리는 경우 다른 문제입니다. – Fionnuala

    +0

    메모의 글자 수 제한이 512자인 경우 검색어에서 문자열 열로 변환하여 내보낼 수 있는지 확인하십시오. 여기에 결과를 게시하십시오. – shahkalpesh

    +0

    메모의 자르기와 같이 메모를 잘라내는 작업을 수행하는 경우에만 메모가 자릅니다. Memo를 Left (MyMemo, 4096)와 같이 처리하면 피할 수 있습니다. –

    답변

    0

    copyfromrecordset 기능을 사용하여 자동화를 시도하십시오. 제한이 여전히 존재할 수있는 255 문자의 문제는 기억하지 못합니다. Modules: Transferring Records to Excel with Automation

    일단 코드를 실행하면 후기 바인딩을 사용하여 Excel 참조를 제거하는 것이 좋습니다. Late Binding in Microsoft Access

    +0

    고마워, 나는 성공없이 CopyRecordset을 시도했다 - 질문에 편집을 참조하십시오. – Joe

    +0

    아, 가비지 문자는 vbCrLF 일 수 있지만 Excel은 vbCr 만 필요하거나 필요합니다. 나는 세부 사항을 지금 회고하지 않는다. –

    관련 문제