반응형
※ 백에서 엑셀 파일 가져오기
아래 코드를 실행하면 데이터를 가져올 파일이 직접 열리면서 값을 가져오게 된다.
(순서가 바껴서 수정)
아래가 getobject 함수를 사용해서 백에서 가져옵니다.
Sub 다른엑셀파일가져오기()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim str가져올파일 As String
Dim obj가져올파일 As Object
Dim wb가져올파일 As Workbook, wb현재파일 As Workbook
Dim ws시트1 As Worksheet, ws현재시트 As Worksheet
'하드코딩
str가져올파일 = "C:\Users\USER\Desktop\Test\test.xlsx"
'현재 워크북 set
Set wb현재파일 = ThisWorkbook
Set ws현재시트 = wb현재파일.Sheets(1)
'가져올 파일 set
Set obj가져올파일 = GetObject(str가져올파일)
Set wb가져올파일 = Workbooks(Dir(str가져올파일))
Set ws시트1 = wb가져올파일.Sheets(1)
'파일 복사
ws시트1.UsedRange.Copy Destination:=ws현재시트.Range("a1")
obj가져올파일.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
하지만 이처럼 코드를 사용하면 중간에 컴퓨터가 느려지거나 할 때 close가 잘 되지 않아 오류가 발생할 경우도 있고, 안정적으로 실행되지 않는 경우가 있다.
따라서 아래와 같은 코드를 활용해 보기 바란다.
아래가 파일오픈해서 가져오는 방식
※ 프론트에서 데이터가져오기
Sub 다른엑셀파일가져오기()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim str가져올파일 As String
Dim obj가져올파일 As Object
Dim wb가져올파일 As Workbook, wb현재파일 As Workbook
Dim ws시트1 As Worksheet, ws현재시트 As Worksheet
'하드코딩
str가져올파일 = "C:\Users\USER\Desktop\Test\test.xlsx"
'현재 워크북 set
Set wb현재파일 = ThisWorkbook
Set ws현재시트 = wb현재파일.Sheets(1)
'가져올 파일 set
Workbooks.Open Filename:=str가져올파일, UpdateLinks:=False
Set wb가져올파일 = Workbooks(Dir(str가져올파일))
Set ws시트1 = wb가져올파일.Sheets(1)
'파일 복사
ws시트1.UsedRange.Copy Destination:=ws현재시트.Range("a1")
wb가져올파일.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
위와 같이 코드를 실행하면 excel 파일은 실제로 열리지 않으면서 데이터를 가져올 수 있다.
파일을 열어서 가져온다.
파일 열린게 눈으로 보인다.
예제 파일 (사용할때 파일경로만 변경)
반응형
'[VBA]' 카테고리의 다른 글
[VBA] 소수점 자릿수 계산 (0) | 2022.02.18 |
---|---|
[VBA] 엑셀 기본 저장 format 설정 (0) | 2021.08.09 |
[VBA] 셀에 있는 초록색 삼각형 없애기 (0) | 2021.08.06 |
[VBA] 숨겨진 워크시트 모두 보이기 (0) | 2021.07.01 |
[VBA] 범위 합계 구하기 (0) | 2021.04.16 |