현재 Access에서 하위 폼의 레코드를 필터링하고 단추를 클릭하면 첫 번째 시트의 데이터가있는 Excel 문서를 만드는 양식이 있습니다. 후속 시트에서 발생하는 다른 계산이 많이 있지만 첫 번째 시트의 "이름"열에 "이름"필드가 이미있는 항목에 대해서만 발생해야합니다. 다른 계산은 SQL 문을 통해 수행됩니다.Access에서 VBA 내부의 변수에 전체 Excel 열을 어떻게 할당 할 수 있습니까?
내 생각 과정은 그런 짓을하는 것입니다 NameField는 이름의 요소가 될 것이며, NameColumn은 전체 열 것
SELECT (various fields) FROM (query name) WHERE (first couple of where statements) AND NameField IN NameColumn
. 성공없이 여러 방법으로이 변수를 만들려고했습니다. 예를 들어 내가 시도한 한 가지는 올바른 인스턴스에서 "(", ","및 ")를 추가하는 레코드를 반복하는 것이었지만 문자열이 너무 길어서 Access에서 실행하지 못했습니다. 나는 또한처럼 변수를 정의하는 시도 :
NameColumn = ExcelApplication.Range("A:A")
그리고
NameColumn = Worksheet.Range("A:A")
그리고
NameColumn = ExcelApplication.Columns("A:A").EntireColumn
등,하지만이 모든에만 컬럼의 첫 번째 항목을 참조 할 것. 솔루션을 연구하려고했지만 유용한 것도 하나도 없습니다. 아무도 내가 이런 식으로 접근하는 방법을 알고 있습니까?
편집 : 아마도 NameColumn이 이전에 아무 것도 정의되지 않았기 때문에이 메서드를 사용하여 첫 번째 항목 만 얻는다고 생각한다고 언급해야합니다. 그러나 나는 일을 시도 :
Dim NameColumn As Range
을하지만 난 후 다음과 같은 오류 얻을 것이다 : 나는 범위 나타났습니다 몇 가지 조사가 유효한 데이터 형식
을 것으로 보인다 이후부터
Compile Error:
User-defined type not defined
이상한 편집 2 : 내 Excel 응용 프로그램 및 워크 시트를 정의하는 방법은 다음과 같습니다.
EDIT 3 : 도움이 될 경우 좀 더 완벽하게 편집했습니다.
,EDIT 4 : 코드
Dim rst As DAO.Recordset
Dim ApXL As Object
Dim xlWBk As Object
Dim xlWSh As Object
Dim fld As DAO.Field
Const xlCenter As Long = -4108
Const xlBottom As Long = -4107
On Error GoTo err_handler
Set rst = frm.RecordsetClone
Set ApXL = CreateObject("Excel.Application")
Set xlWBk = ApXL.Workbooks.Add
ApXL.Visible = True
Set xlWSh = xlWBk.Worksheets("Sheet1")
#THESE TWO BLOCKS COPY THE DATA FROM THE SUBFORM#
For Each fld In rst.Fields
ApXL.ActiveCell = fld.Name
ApXL.ActiveCell.Offset(0, 1).Select
Next
rst.MoveFirst
xlWSh.Range("A2").CopyFromRecordset rst
.
.
.
Dim FirstColumn As Object
Set FirstColumn = xlWSh.Columns(1)
.
.
.
작동 완전히 다른 답변이므로 정말 분할되어야합니다. . 질문의 원하는 부분, Excel 자동화 또는 Access SQL을 결정한 다음 해당 질문과 관련된 대답을 결정하십시오. – Fionnuala