문제가 있습니다. 세 개의 개별 워크 시트 사용 (원본 1, 원본 2, 템플릿) 원본 파일에서 데이터를 가져 와서 열에 따라 템플릿에 붙여 넣어야합니다. 이름. 즉, 소스 1의 첫 번째 세 열은 템플리트의 이름과 일치하고 템플리트의 네 번째 행은 네 번째 행과 소스 2의 네 번째 열이 일치합니다.Excel VBA - 열 이름에 따라 데이터 복사
여기까지 가야 할 부분입니다 (불완전합니다). 다른 스레드 검사 예제의 "파생"을 만들었지 만 여전히 작동하지 못합니다. 또는 측면에서 너무 "모호한"(이것은 내 첫 번째 VBA를 사용하여 시간) 나는 Copy_Columns 내에서 주석 표시 줄()
Sub MasterCopy()
Open_Files
Copy_Columns
End Sub
Sub Open_Files()
Application.Workbooks.Open Filename:="C:Source 1.xls"
Application.Workbooks.Open Filename:="C:Source 2.xls"
Application.Workbooks.Open Filename:="C:Template.xls"
End Sub
Sub Copy_Columns()
Dim Source1 As Worksheet
Source1 = Application.Workbooks("C:Source 1.xls").Worksheets("Sheet1") 'here is where the error appears
Source1.Select
Dim columnToBeCopied As Integer
columnToBeCopied = getColumnName("Source1", "columnToBeCopied")
Dim template As Worksheet
template = Application.Workbooks("C:Template.xls").Worksheets("Data")
template.Activate
Dim columnToBePasted As Integer
columnToBePasted = getColumnName("template", "columnToBePasted")
Sheets("Source1").Columns(columnToBeCopied).Copy Sheets("template").Columns(columnToBePasted)
End Sub
Public Function getColumnName(ByVal sheetName As String, ByVal columnName As String)
Dim lastColumn As Integer
lastColumn = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Column
Dim iterator As Integer
iterator = 0
While (iterator <= lastColumn)
If (LCase(Sheets(sheetName).Range(1, iterator)) = LCase(columnName)) Then
getColumnName = iterator
Else: iterator = iterator + 1
End If
Wend
If IsEmpty(getColumnName) Then getColumnName = 0
End Function
다소 가까운 예 있습니다에 런타임 오류 (9)를 얻을 수 있지만 하나 너무 복잡하다 그 그들은, O, X는 변수 이름으로 b를 ... 어떤 도움이 크게 감사합니다 :) 사용
이 답변 주셔서 감사합니다! – Powdertrail