2012-09-12 2 views
4

Excel 스프레드 시트로 연결되는 데이터베이스가 있습니다. 링크 된 테이블을 수동으로 추가 할 때 아무 문제가 없습니다 (작은 마법사를 따르고 테이블이 완벽하게 만들어 짐). 나는 자동화하기 위해 노력하고 그 사용하여 VBA :MS Access에서 연결된 테이블을 추가 할 때 런타임 오류가 발생했습니다.

Dim db as DAO.Database 
Dim tdf as TableDef 

Set db = CurrentDB 
Set tdf = db.CreateTableDef("linked_table") 
tdf.Connect = "Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & Me.txtExcelFile ' references form field 
db.TableDefs.Append tdf ' Here's where I get a run time error 

마지막 줄에 오류 3264가 그것을 말한다 불행하게도 내가받을 런타임 "정의 된 필드 -의 TableDefs 또는 인덱스를 추가 할 수 없습니다." 나는 왜 마지막 줄이 필요한지조차 모르겠다. (데이터베이스의 TableDefs 컬렉션에 테이블을 추가하는 것이 문서에서 발견 된 것 같다.) 오류 해결에 대한 제안 사항은 무엇입니까?

답변

4

당신이 누락 :

tdf.SourceTableName = "Sheet1$" 

또는 어떤 범위 나 시트 이름은 테이블로 사용하고 싶습니다.

그래서, 모든, 이것은 나를 위해 작동 :

Dim db as DAO.Database 
Dim tdf as TableDef 

Set db = CurrentDB 
Set tdf = db.CreateTableDef("linked_table") 
tdf.SourceTableName = "Sheet1$" 
tdf.Connect = "Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & Me.txtExcelFile ' references form field 
db.TableDefs.Append tdf 

당신도를 TransferSpreadsheet

Remou @
+0

를 사용하여 Excel을 연결할 수 있습니다 - 당신이 다시 짓을! 나는 당신을 내 명절 카드 목록에 추가해야한다고 생각합니다. :) 감사합니다. 호기심에서 시트 이름의 끝에 "$"는 무엇입니까? 나는 그것을 사용했고 효과가 있었다. 단지 궁금했다. – rryanp

+1

$는 사용 된 범위 만 선택하더라도 전체 시트를 사용하여 표를 가져옵니다. 대안은 명명 된 범위이거나, 'Sheet1 $ a1 : x24'입니다. – Fionnuala

관련 문제