VBA를 사용하여 액세스 할 때 사용자 지정 속성을 만드는 방법을 찾고 있습니다. 여기VBA를 사용하여 액세스 할 때 사용자 지정 속성을 만드는 방법
내가 붙어 얼마나 내가 어디의 :
사용자 정의 속성의 값 (이름이 foo는이다)과 같이 읽을 수 있습니다 :
는Dim cnt As Container
Dim doc As Document
Set cnt = DBEngine(0)(0).Containers!Databases
Set doc = cnt.Documents!userDefined
doc.Properties.Refresh
Debug.Print (doc.Properties!foo)
Similary, 나는를 만들 수 있습니다 새 속성 : 이제
doc.Properties.Append doc.CreateProperty("vba created", dbText, "yes")
문제는 다음과 같습니다
Set doc = cnt.Documents!userDefined
은 mdb에 적어도 하나 이상의 사용자 정의 속성이있는 경우에만 작동합니다. VBA를 사용하여 사용자 지정 속성을 만들려면 사용자 지정 속성을 만들어야합니다.
을 사용하여 VBA를 사용하여 몇 가지 MDB를 만들고 수동 개입없이 모든 작업을 수행해야하므로이 사용자 지정 속성을 수동으로 만들지는 않습니다. 선명도 여기
에 대한 올바른 방향
르네
편집에 대한 포인터
덕분에 내가 달성 할 수없는 것을 보여주기 위해 사용할 수 있습니다 희망 (아래 손질) 코드입니다 :
option explicit
public sub add_user_defined_property()
on error goto error_lbl
dim ac as access.application
dim cnt as dao.container
dim doc as dao.document
dim prp as dao.property
dim db as dao.database
dim mdb_name as string
mdb_name = "c:\temp\cust_prop_test.mdb"
set ac = new access.application
set db = ac.dbEngine.workspaces(0).createDatabase(mdb_name, dbLangGeneral, 0)
ac.openCurrentDatabase(mdb_name)
' set cnt = DBEngine(0)(0).Containers("Databases")
set cnt = db.containers("Databases")
' following line throws "3265 Item not found in this collection"
set doc = cnt.Documents!UserDefined
set prp = doc.createProperty("MyNewProperty", dbText, "MyNewProperty")
doc.properties.append prp
' for Each prp In doc.Properties
' debug.print "Name = " & prp.Name & ", value = " & prp.Value
' next
error_lbl:
select case err.number
case 3265
msgBox("Expected error occured")
case else
msgBox(err.number & vbCrLf & err.description)
end select
end sub
이 코드는 3265 (이 컬렉션에없는 항목) 오류를 l 오프라인
set doc = cnt.Documents!UserDefined
을 읽기 때문에 (내가 생각하는) MDB를 새로 생성되고 아직 이 cnt.Documents에 멤버 - 정의가 포함되어 있지 않습니다. 만약 이미 수동으로 그런 속성을 추가했다면, 즉 mdb 파일을 열어서 File-> Database Properties 메뉴로 가서 사용자 정의 탭으로 가면 작동 할 것입니다.
Access에서 만든 MDB에는 여러 속성이있는 UserDefined 속성 컬렉션이 있으므로 코드에서 이러한 MDB를 만들어야합니다. 왜 그냥 오류에 대한 함정과 그것을 무시하지? –
오류를 무시하면 도움이 될 것입니다. –
글쎄, "무시"는 내가 UserDefined 문서가 부족하여 발생하는 오류를 잡아두고 부재시에 원하는 모든 작업을 진행한다는 것을 의미합니다 (예 : UserDefined 문서를 만들고 속성을 추가하고, 또는 무엇을하고 싶은지). –