3 개의 다른 쿼리에서 데이터를 삽입 할 위치를 만들고 있다는 보고서가 있습니다. 보고 도구는 CSV로 내보낼 때 모든 열의 이름을 지정하지 않습니다 (열 이름은 실제로보고 시스템에서 병합 됨). 매크로를 사용하여 개별 열에 대한 헤더 행 설명을 다시 추가하고 싶지만이 작업을 수행하는 데 문제가 있습니다.
이 작업을 수행하기 위해 배열과 루프를 사용하려고합니다. 보고서를 새로 고칠 때 워크 시트 이름과 그 안에있는 셀 참조는 정적으로 유지됩니다. 통합 문서에 이러한 워크 시트 이상이 있으므로이 매크로를 사용하여 특정 데이터 시트 만 "타겟팅"하고 싶습니다. 즉시 진행하는 줄에서 매크로 오류가 발생합니다 with worksheets(count)
. 오류 코드 '424' "개체 필요". Excel이 내 배열 값을 시트 이름으로 "인식"하지 않기 때문에이 문제를 가정하지만이를 변환하는 방법을 모르겠습니다.
저는이 작업에보다 효율적으로 접근 할 수있는 방법에 대해 열려 있습니다.
도움에 미리 감사드립니다!
Sub Headerfill()
' Headerfill Macro
' Macro to fill in blanks in header row from data dump
Dim WorkSheets As Variant
Dim Count As Integer
WorkSheets = Array( _
"Sheets(""VH Own Brand Component"")", _
"Sheets(""VH Sales and Inventory Component"")", _
"Sheets(""VH Comp Sales Component"")")
Count = 0
Do While Count < 3
With WorkSheets(Count)
.Range("B3").Value = "A Name"
.Range("D3").Value = "B Name"
.Range("F3").Value = "C Name"
.Range("H3").Value = "First"
.Range("I3").Value = "Last"
.Range("K3").Value = "VName"
End With
Count = Count + 1
Loop
End Sub
댓글별로 수정되었습니다. 이것은 시트 순서를 렌더링하거나 이름을 변경해야합니다. Chip 에서 가져온 기능 . 코드 이름 속성 은 MSDN을 참조하십시오 .
Sub Headerfill()
Dim ws As Variant
Dim wsCode As Worksheet
ws = Array(4, 5, 7)
For i = 0 To UBound(ws)
Set wsCode = getCodeName("Sheet" & ws(i))
With wsCode
.Range("B3").Value = "A Name"
.Range("D3").Value = "B Name"
.Range("F3").Value = "C Name"
.Range("H3").Value = "First"
.Range("I3").Value = "Last"
.Range("K3").Value = "VName"
End With
Next
End Sub
Function getCodeName(codeName As Variant) As Worksheet
Dim ws As Worksheet
For Each ws In ThisWorkbook.WorkSheets
If StrComp(ws.codeName, codeName, vbTextCompare) = 0 Then
Set getCodeName = ws
Exit Function
End If
Next ws
End Function
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다