2013-08-04 5 views
3

나는 Excel에서 VBA를 사용하여 빈 MS Access 데이터베이스를 만들려고 애 쓰고 있습니다. 새 데이터베이스의 이름을 "tblImport"로 지정하고 싶습니다.VBA를 사용하여 빈 MS Access 데이터베이스를 만드는 방법은 무엇입니까?

Sub makedb() 
    Dim accessApp As Access.Application 
    Set accessApp = New Access.Application 
    accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera 
    accessApp.Quit 
    Set accessApp = Nothing 
    End Sub 

내가받을 다음과 같은 오류 메시지 :이 사용하는 코드 미안입니다

"실행 시간 오류 3001 : 응용 프로그램 정의 또는 개체가 오류를 정의"

내가 무엇을 할 수 있습니까?

답변

9

CreateDatabase 방법에 로케일 일정의 이름이 잘못되었습니다 :

이 :
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera

는해야합니다 코드가 작동해야하고
accessApp.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

변경합니다. (그것은 적어도 나를 위해).

+0

빠른 응답이었습니다. 그것은 나를 위해 일했습니다. 고마워요 : D – steinbitur

+0

++ 그래, 작동하지만 그 오류 메시지에 대한 이유가 아닙니다 :) 내 대답을 참조하십시오. –

2

이전 질문이지만 유용했습니다. 당신도 Access 객체가 필요없는 것 같습니다.

Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL 

은 저에게 잘 맞습니다.

+1

이 메소드는'Access.Application' 인스턴스를 생성합니다. 그러나'CreateDatabase'를 완료 한 직후 사라집니다. – HansUp

+2

잘 알고 있습니다.어쨌든 적은 코드입니다. – brainac

+0

나는이 특정한 줄을 반대하지 않는다. 그러나 나는 의견 잡기 철학에 강력히 제안한다 : 잡는 데 오류가 없다는 것은 코드가 적다는 것과 화면 업데이트가 덜한 코드 등이다. 코드 줄이 적은 vba에서는 드물다. 보다 견고한 구현 및 높은 효율성으로 변환되며, 종종 둘 중 하나로 이어지지 않습니다. – CWilson

2

작성한 자동화 개체를 사용하려는 경우 첫 번째 방법을 사용해야합니다. 각 문 앞에 "accessApp"를 붙이면 폼을 열고 DoCmd 문을 사용할 수 있습니다. 예를 들어, TempVars를 사용하여 사용자 데이터를 보관합니다. 그때

accessApp.TempVars.Add "CurrentUser", TempVars.CurrentUser

새 데이터베이스에 활성 데이터베이스에서 CurrentUser 값을 전달하기 위해 할, 자동화를 사용하여 관련 데이터베이스를 열 수 있습니다.

당신이에 함수와 같은 DoCmd.TransferDatabase을 할 수있는 새 데이터베이스를 만들되고 싶지 모든, 당신은 단지

Access.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL

+0

에 오신 것을 환영합니다. 불행히도, 당신이 한 것처럼 좋은 글을 쓸 수있는 것은 새로운 사용자가 아닙니다. 하지만 Meta의 게시물 (http://meta.stackexchange.com/a/114538/181303 및 http://meta.stackexchange.com/questions/12119/)에 관심이있을 수 있습니다. – ForceMagic

1

오래된 질문을 사용할 수 있습니다. 여기 내 두 센트가 있습니다. 당신은

dbLangGenera이 시도 Dealing with questions with obvious replies

에 따라이 질문을 닫습니다 Workspace.CreateDatabase Method (DAO)

투표에 대한 dbLangGeneral

더해야 ... 오타가 있습니다. 이 작동합니다.

Sub makedb() 
    Dim accessApp As Access.Application 
    Set accessApp = New Access.Application 

    accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGeneral 
    accessApp.Quit 

    Set accessApp = Nothing 
End Sub 

편집 :이 답변을 삭제하고 포스트가 폐쇄되면 댓글로 게시 할 예정입니다.

관련 문제