2014-10-06 1 views
0

방법을 찾지 않고 마지막 몇 시간 동안 그물을 닦아 보냈습니다.Microsoft Access의 여러 테이블을 Excel 통합 문서의 단일 워크 시트에 전송

기본적으로 한 개의 워크 시트에서 Excel 통합 문서로 전송하려는 액세스 테이블에는 3 개의 작은 테이블이 있습니다.

나는 다음과 같은 코딩을 사용하여 별도의 워크 시트 위에이 테이블을 삽입 할 현재는 수 있어요 : 나는 D1에서 시작, "데이터"워크 시트에 1을 2 개 이상의 테이블을 전송하려는

DoCmd.TransferSpreadsheet transfertype:=acExport, _ 
spreadsheettype:=acSpreadsheetTypeExcel12, _ 
TableName:=DTable, FileName:=strWorksheetPathTable, _ 
hasfieldnames:=True, _ 
Range:="Data" 

을 (표는있다 단일 열) 및 다른 하나는 G1이다.

푸시로 누구나 나를 도와 줄 수 있다면 그게 다정 할 것입니다.

건배, 덴마크 I

+0

나는 그것을 할 수있는 방법이 있는지 확실하지 않습니다,하지만 당신은 항상 종류의 다시 경로를 가지고 그 선택 쿼리를 만들 수 : 테이블이 필요로하는 경우

는 열 머리글은 다음과 같이 그들을 얻을 원하는 데이터를 빈 칸에 임의의 텍스트로 채우고 나머지는 테이블 데이터로 채 웁니다. –

+0

세 테이블의 구조를 표시 할 수 있습니까? 단일 쿼리를 사용하여 수행 할 수 있습니다 –

+0

3 테이블의 데이터를 단일 쿼리를 통해 relatable 할 수 없습니다. 첫 번째 2 개의 테이블은 단일 열이며 최종 테이블은 3 개의 열입니다. 아마도 그 (것)들을 결합하고 그 후에 overmind가 건의하는 것과 유사하게, 포맷으로 그 (것)들을 분리 할 수 ​​있었다, 다만 더 간단한 방법이있을 것이라는 점을 희망하고 있었다 –

답변

0
  1. microsoft.activex 데이터는

는 다음과 같은 스프레드 시트를 만들고, 참고로 마이크로 소프트 오피스 개체 라이브러리를 추가하려면 참조 2.8 개체를 추가

dim xl as object: set xl = createobject("Excel.Application") 
XL.Visible = False 
XL.DisplayAlerts = False 
dim wb as object: set wb = xl.Workbooks.Add 
dim ws as object: set ws = wb.Worksheets(1) 

dim rst as new adodb.recordset 
dim r as long, c as long 'row and column 
r = 1 
c = 1 

rst.open "SELECT * FROM Table1", currentproject.connection, adOpenKeyset, adLockReadOnly 

if not rst.eof then 
    ws.range(WS.Cells(r, c).Address).CopyFromRecordSet rst 
end if 

rst.close 
rst.open "SELECT Count(*) FROM Table1", currentproject.connection etc 

r = r + rst.fields(1) + 2 

rst.Close 

rst.open "SELECT * FROM Table2", etc 

and so on. 

wb.SaveAs FileName:=xlname 
xl.Quit 

set ws = nothing 
set wb = nothing 
set xl = nothing 

이렇게하면 eac 사이에 한 줄 또는 두 줄과 함께 원하는 것을 얻을 수 있습니다. h 표. 또한 원하는 경우 스프레드 시트의 형식을 지정하는 코드를 프로세스에 추가 할 수도 있습니다.

rst.open "SELECT * FROM Table1", currentproject.connection, adOpenKeyset, adLockReadOnly 
dim ii as long 
for ii = 0 to rst.fields.count - 1 
    ws.cells(r, ii + 1) = rst.fields(ii) 'you can offset using c if you want 
next 
if not rst.eof then 
    ws.range(WS.Cells(r, c).Address).CopyFromRecordSet rst 
end if 
관련 문제