VBA를 통해 다른 워크북의 데이터 복사
다른 파일에서 데이터를 수집하여 워크북에 삽입하고 싶습니다.
Do While THAT_DIFFERENT_FILE_SOMEWHERE_ON_MY_HDD.Cells(Rand, 1).Value <> "" And Rand < 65536
then 'I will search if the last row in my main worksheet is in this file...
End Loop
기본 워크시트의 마지막 행이 파일에 있으면 루프를 종료합니다.안 되면 다 복사할게요.저는 이것에 대한 올바른 알고리즘을 찾는 데 어려움을 겪고 있습니다.
문제는 다른 문제집에 액세스하는 방법을 모른다는 것입니다.
워크북에서 다른 워크북으로 데이터를 복사하는 가장 좋은 방법은 Excel 개체 모델을 사용하는 것입니다.
Option Explicit
Sub test()
Dim wb As Workbook, wb2 As Workbook
Dim ws As Worksheet
Dim vFile As Variant
'Set source workbook
Set wb = ActiveWorkbook
'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xls", _
1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
'Set targetworkbook
Set wb2 = ActiveWorkbook
'For instance, copy data from a range in the first workbook to another range in the other workbook
wb2.Worksheets("Sheet2").Range("C3:D4").Value = wb.Worksheets("Sheet1").Range("A1:B2").Value
End Sub
GetInfoFromClosedFile() 함수를 사용할 수 있습니다.
편집: 위 링크가 더 이상 작동하지 않는 것 같아 대체 링크 1과 대체 링크 2 + 코드를 추가합니다.
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, wsName As String, cellRef As String) As Variant
Dim arg As String
GetInfoFromClosedFile = ""
If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""
If Dir(wbPath & "" & wbName) = "" Then Exit Function
arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function
열 구문을 찾고 계십니까?
Dim wkbk As Workbook
Set wkbk = Workbooks.Open("C:\MyDirectory\mysheet.xlsx")
그런 다음 사용할 수 있습니다.wkbk.Sheets(1).Range("3:3")
(또는 필요한 모든 것)
Excel에서 여러 문제집을 열지 않을 이유가 거의 없습니다.주요 코드 라인은 다음과 같습니다.
Application.EnableEvents = False
Application.ScreenUpdating = False
...코드가 실행되는 동안에는 아무것도 표시되지 않으며, 두 번째 워크북을 여는 것과 관련된 코드도 실행되지 않습니다.그리고 또...
Application.DisplayAlerts = False
Application.Calculation = xlManual
...두 번째 파일의 내용과 관련된 팝업 메시지가 표시되는 것을 방지하고 다시 표시되는 속도가 느려지는 것을 방지합니다.프로그래밍이 끝나면 True/xlAutomatic으로 다시 설정해야 합니다.
두 번째 워크북을 열어도 성능 문제가 발생하지 않는다면 그렇게 하는 것이 좋습니다.실제로 일부 보조 파일이 예상 형식과 일치하지 않는 경우 두 번째 워크북을 열어 두면 코드를 디버깅할 때 매우 유용합니다.
다음은 데이터 참조에 사용할 수 있는 다양한 방법에 대한 개요를 제공하는 여러 Excel 파일 사용에 대한 몇 가지 전문가 지침입니다.
확장 문제는 동일한 폴더에 포함된 여러 파일을 순환하는 방법입니다.다음을 사용하여 Windows 폴더 선택기를 사용할 수 있습니다.
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
If .Selected.Items.Count = 1 the InputFolder = .SelectedItems(1)
End With
FName = VBA.Dir(InputFolder)
Do While FName <> ""
'''Do function here
FName = VBA.Dir()
Loop
위의 내용 중 일부가 유용하기를 바랍니다.
저도 같은 질문이 있었는데, 제공된 솔루션을 적용하면 파일을 쓰기로 변경했습니다.제가 새로운 엑셀 파일을 선택했을 때, 저도 원래 파일이 아닌 그 파일에 글을 쓰고 있었습니다.이 문제에 대한 저의 해결책은 다음과 같습니다.
Sub GetData()
Dim excelapp As Application
Dim source As Workbook
Dim srcSH1 As Worksheet
Dim sh As Worksheet
Dim path As String
Dim nmr As Long
Dim i As Long
nmr = 20
Set excelapp = New Application
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Filters.Add "Excel Files", "*.xlsx; *.xlsm; *.xls; *.xlsb", 1
.Show
path = .SelectedItems.Item(1)
End With
Set source = excelapp.Workbooks.Open(path)
Set srcSH1 = source.Worksheets("Sheet1")
Set sh = Sheets("Sheet1")
For i = 1 To nmr
sh.Cells(i, "A").Value = srcSH1.Cells(i, "A").Value
Next i
End Sub
와 함께excelapp
새로운 지원서가 호출될 것입니다.with
block은 외부 파일의 경로를 설정합니다.을 마막으외워크설정했다니습을로 설정했습니다.source
그리고.srcSH1
외부 시트 내의 워크시트로.
언급URL : https://stackoverflow.com/questions/7401967/copy-data-from-another-workbook-through-vba
'programing' 카테고리의 다른 글
Twitter Bootstrap CSS 클래스에 대한 jQuery show()가 숨겨짐 (0) | 2023.08.18 |
---|---|
사용자 정의 데이터 유형을 사전에 넣는 방법 (0) | 2023.08.18 |
엔터티 프레임워크 4 엔터티 디자이너에서 두 개체 간의 연결을 올바르게 설정하려면 어떻게 해야 합니까? (0) | 2023.08.18 |
SpringBoot 로깅 - 모든 로그 항목 시작 시 관련 없는 하이픈 사용 (0) | 2023.08.18 |
사용자가 AJAX 요청이 끝나기 전에 브라우저를 종료하거나 페이지를 변경할 경우 발생하는 현상 (0) | 2023.08.18 |