엑셀파일 열지않고 내용 불러오기
방법1. ExecuteExcel4Macro 함수를 통하여 불러오는 방법.
방법2. DAO를 통합 방법.
strpath = ThisWorkbook.Path
http://blog.naver.com/PostView.nhn?blogId=maxzon&logNo=70110710713
Option Explicit
Sub File_Read()
'쓰여질 변수 설정, 어떨땐 필요하나 싶다.
Dim lngCount As Long
Dim varData(1 To 2, 1 To 2) As Variant
Dim i As Long, j As Long, k As Long
Dim varArray As Variant
Dim strFileName As String, strTemp As String, strPath As String, strArg As String
'파일 불러오기(*.xls를 *.csv 등으로 변경도 가능하겠지.
varArray = Application.GetOpenFilename("ExcelFile *.xls,*.xls", _
Title:="집계할 엑셀 파일들을 Shift버튼을 눌러 모두 선택하십시오!", MultiSelect:=True)
If TypeName(varArray) = "Boolean" Then Exit Sub
lngCount = UBound(varArray)
strTemp = varArray(1)
strPath = Left$(strTemp, Len(strTemp) - Len(Dir(strTemp)))
For i = 1 To lngCount '조회할 문서의 수만큼 횟수를 실행하겠다는 의미
strFileName = Dir(varArray(i))
'j와 k는 A1:B2(A1,B1,A2,B2) 까지의 범위를 의미한다.
'즉, j는 A,b,c 등의 열을, k는 1,2,3 등의 행을 의미하는 것.
For j = 1 To 2
For k = 1 To 2
strArg = "'" & strPath & "[" & strFileName & "]" & "Sheet1" & "'!" & _
Range(Cells(j, k).Address).Address(ReferenceStyle:=xlR1C1)
'위 빨간색부분이 Sheet1시트의 A1:B2영역을 의미하게 된다.
varData(j, k) = Application.ExecuteExcel4Macro(strArg)
Next k
Next j
Cells((i - 1) * 4 + 1, 1) = strTemp & " 의 내용"
Range(Cells((i - 1) * 4 + 2, 1), Cells((i - 1) * 4 + 3, 2)) = varData
Next i
End Sub