2010-11-29 9 views
0

내 Access (2007) 응용 프로그램이 해당 Excel (2007) 통합 문서의 다른 워크 시트의 정보를 읽길 원합니다. 인터넷에서 나는 DAO/ADO/Excel Object Model/VBA를 사용하여이 작업을 수행하는 예제를 많이보고 있으며 어느 것이 가장 좋은지 혼란 스럽다고 생각합니다. (워크 시트를 통해 예를 들어 I 루프로 자신의 이름 인쇄)Access에서 Excel 통합 문서 읽기

Dim ExcelApp As Excel.Application 
Dim ExcelWorkbook As Excel.Workbook 
Dim ExcelWorkSheet As Excel.Worksheet 

Set ExcelApp = CreateObject("Excel.Application") 
Set ExcelWorkbook = ExcelApp.Workbooks.Open("C:\Temp\test.xls") 

For Each ExcelWorkSheet In ExcelWorkbook.Worksheets 
    MsgBox ExcelWorkSheet.Name 
Next 

ExcelWorkbook.Close (False) 
ExcelApp.Quit 
Set ExcelWorkbook = Nothing 
Set ExcelApp = Nothing 

는이 일을 올바른 방법입니다 :

는 지금은 이런 식으로 일을 해요? 그리고 이것이 가장 효과적인 방법입니까? ("가장 효율적인 방법"이있는 경우)

+0

워크 시트를 읽은 후에 무엇을하고 싶습니까? 그것은 그것을하는 방법에 대한 선택을 제한하는 경향이 있습니다. –

+0

David, 내 답장을 읽을 기회가 없었습니까? – Fionnuala

답변

1

무엇이 가장 좋을까요? Excel의 데이터가 구조화되어 있고 가져 오거나 조작하려는 경우 일반적으로 IN 키워드가 포함 된 쿼리를 사용하거나 Excel 명명 된 범위, 범위 또는 전체 워크 시트를 연결하는 것이 가장 좋습니다. VBA
http://msdn.microsoft.com/en-us/library/aa141565(office.10).aspx

워크 시트의 전체 목록을 얻을 수 있습니다 및 통해

링크 ADo 스키마로 명명 된 범위.

쿼리
http://stackoverflow.com/questions/2689087/where-in-query-with-two-recordsets-in-access-vba/2689151#2689151

당신이 원하는 경우 업데이트, Access를 통해 Excel에서 SQL 서버, ADO 좋은 선택이 될 수도 있습니다.

ADO
http://stackoverflow.com/questions/2086234/query-excel-worksheet-in-ms-access-vba-using-adodb-recordset/2086626#2086626

자동화, 귀하의 질문에 설명 된 것처럼, 서식 및 단일 셀 및 작은 범위의 많은 업데이트를 수행하려는 경우에만 일반적으로 유용합니다.

+0

종합적인 답변을 보내 주셔서 감사합니다. 필자의 경우 워크 시트의 특정 범위를 읽고이 데이터를 처리하려고합니다. 같은 종류의 데이터가있는 깔끔한 열과 행이 없습니다. 그렇지 않으면 DoCmd.TransferSpreadsheet – waanders

관련 문제