Excel VBA에서 명명 된 테이블을 참조 할 수 있습니까? ...Excel vba에서 테이블을 참조하는 방법은 무엇입니까?
답변
어쩌면이
꼽은이 될 수 ...
Sheets("Sheet1").Table("A_Table").Select
나는 목록 객체 인 테이블의 일부 언급을 보았다하지만 난 그 같은 일이 있는지 확실하지 않습니다 테이블의 범위를 변환 테이블
만들기 당신에게
을 도울 수있는 것은 엑셀 2003과 같은 코드로 시작 (this answer에 설명 된대로) :
Sub CreateTable()
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$1:$D$16"), , xlYes).Name = _
"Table1"
'No go in 2003
ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight2"
End Sub
또한 객체를 참조하는 변수를 정의하는 것이 편리합니다. 예를 들어,
Sub CreateTable()
Dim lo as ListObject
Set lo = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$1:$D$16"), , xlYes)
lo.Name = "Table1"
lo.TableStyle = "TableStyleLight2"
...
End Sub
당신은 아마 그것을 즉시 발견 할 것이다. 당신이 할 수있는 위뿐만 아니라
는 (여기서 "YourListObjectName는"테이블의 이름입니다) :
Dim LO As ListObject
Set LO = ActiveSheet.ListObjects("YourListObjectName")
그러나 당신이의 목록 객체를 참조 할 경우 난 단지 작동하는지 생각 활성 시트.
하나의 워크 시트에서 다른 워크 시트의 피벗 테이블을 참조하는 목록 개체 (테이블)를 참조하고 싶었 기 때문에 질문을 찾았습니다. 목록 개체는 워크 시트 컬렉션의 일부이므로 목록 개체가 참조하는 워크 시트의 이름을 알아야합니다. 따라서 목록 개체가있는 워크 시트의 이름을 얻으려면 피벗 테이블의 원본 목록 개체 (다시 테이블)의 이름을 얻은 다음 목록이 포함 된 워크 시트를 찾을 때까지 워크 시트와 해당 목록 개체를 반복합니다. 내가 찾고 있던 물건.
Public Sub GetListObjectWorksheet()
' Get the name of the worksheet that contains the data
' that is the pivot table's source data.
Dim WB As Workbook
Set WB = ActiveWorkbook
' Create a PivotTable object and set it to be
' the pivot table in the active cell:
Dim PT As PivotTable
Set PT = ActiveCell.PivotTable
Dim LO As ListObject
Dim LOWS As Worksheet
' Loop through the worksheets and each worksheet's list objects
' to find the name of the worksheet that contains the list object
' that the pivot table uses as its source data:
Dim WS As Worksheet
For Each WS In WB.Worksheets
' Loop through the ListObjects in each workshet:
For Each LO In WS.ListObjects
' If the ListObject's name is the name of the pivot table's soure data,
' set the LOWS to be the worksheet that contains the list object:
If LO.Name = PT.SourceData Then
Set LOWS = WB.Worksheets(LO.Parent.Name)
End If
Next LO
Next WS
Debug.Print LOWS.Name
End Sub
아마도 누군가는 더 직접적인 방법을 알고 있습니다.
@AndrewD가 application.range 메소드의 잠재적 인 단점에 대해 쓴 점을 감안할 때 이것은 테이블 이름 만 사용하여 테이블의 ListObject를 얻는 유일한 신뢰할 수있는 방법 인 것처럼 보입니다. – ChrisB
코드에서 _PivotTable_ **을 작성하는 것 외에도 귀하의 의도가 아니었기 때문에 가능한 한 직접적인 방법이라고 생각합니다. 귀하의 답변에 _PivotTable_ 이름이 주어진 _ListObject_를 얻기 위해 제네릭 함수를 추가하려했지만, 분명히 정결하지 않았습니다. 그래서 새로운 [질문] (https://stackoverflow.com/questions/46106440/how-can-i-get-the-listobject-object-of-a-pivottable/46106441#46106441)을 작성하고 코드를 답으로 입력하십시오. 그러나 _PivotTable_ Name에서 _ListObject_를 가져올 수있는 예측 가능한 필요성 때문에 여기에서 대답을 포기했습니다. – GlennFromIowa
질문하면 을 참조 할 수 있습니다. 테이블을 추가하는 방법이 아닙니다. 당신이 부분에 대한
Dim LO As ListObject
Set LO = Sheets("Sheet1").ListObjects("A_Table")
LO.HeaderRowRange.Select ' Select just header row
LO.DataBodyRange.Select ' Select just data cells
LO.TotalsRowRange.Select ' Select just totals row
:
Sheets("Sheet1").ListObjects("A_Table").Range.Select
또는 (단지 테이블의 데이터와 같은) 부분을 선택합니다 : 그래서
Sheets("Sheet1").Table("A_Table").Select
의 작업 상당이 문이 될 것입니다 헤더를 선택하기 전에 머리글 및 합계 행의 존재 여부를 테스트 할 수 있습니다.
심각하게도이 문제는 VBA의 테이블을 참조하는 유일한 질문입니까? Excel의 테이블은 너무 의미가 있지만 VBA에서 작업하기가 어렵습니다!
어떻게 우리가 VBA 쿼리에서 테이블을 사용할 수 있습니까? 예를 들어 "select * from sheet1 $"where col1 = 'x' " – Vikky
@Vikky 참조하는 VBA 쿼리에 익숙하지 않지만 그것. 이 유형의 쿼리에 대한 설명서 (MSDN 또는 기타)에 대한 링크가 있습니까? OLE 또는 ODBC를 통해 다른 응용 프로그램이나 도구에서 Excel을 참조 할 때 사용됩니까? 그렇다면 어떤 응용 프로그램입니까? – GlennFromIowa
먼저 답장을 보내 주셔서 감사드립니다. 내 질문에 대한 해결책을 찾았습니다, 엑셀 시트 내의 테이블은 oledb를 사용하여 사용할 수 있습니다. 이것은 나를 돕는 기사의 링크입니다. http://chandoo.org/wp/2012/04/02/using-excel-as-your-database/ – Vikky
테이블을 참조하는 "적절한"방법은 워크 시트에서 ListObject를 가져 오는 것입니다 (예 : SheetObject.ListObjects(ListObjectName)
).
시트를 사용하지 않고 표를 참조하려면 해킹 Application.Range(ListObjectName).ListObject
을 사용할 수 있습니다.
참고 :이 해킹 Excel에서 항상 테이블과 같은 이름을 가진 테이블의 DataBodyRange에 대한 명명 된 범위를 생성한다는 사실에 의존한다. 그러나이 범위 이름 은으로 변경 될 수 있습니다 ... 테이블 이름을 편집하면 이름이 재설정되므로 원하는 것은 아닙니다. 또한 연결된 ListObject이없는 명명 된 범위를 얻을 수도 있습니다. 당신이 잘못된 이름, 당신은 래퍼를 만들 수 있습니다 얻을 때 Excel의하지-매우-도움이 1004 오류 메시지를 감안할 때
...
Public Function GetListObject(ByVal ListObjectName As String, Optional ParentWorksheet As Worksheet = Nothing) As Excel.ListObject
On Error Resume Next
If (Not ParentWorksheet Is Nothing) Then
Set GetListObject = ParentWorksheet.ListObjects(ListObjectName)
Else
Set GetListObject = Application.Range(ListObjectName).ListObject
End If
On Error GoTo 0 'Or your error handler
If (Not GetListObject Is Nothing) Then
'Success
ElseIf (Not ParentWorksheet Is Nothing) Then
Call Err.Raise(1004, ThisWorkBook.Name, "ListObject '" & ListObjectName & "' not found on sheet '" & ParentWorksheet.Name & "'!")
Else
Call Err.Raise(1004, ThisWorkBook.Name, "ListObject '" & ListObjectName & "' not found!")
End If
End Function
또한 좋은 ListObject 정보 here.
BTW 기대하지 마십시오. 'Application.Names'에서 테이블 DataBodyRange 범위 이름을 찾으십시오! 그러나 그들은'Application.Range (...) '를 사용하여 확실히 액세스 할 수 있습니다. – AndrewD
이 방법은 필요한 테이블이 포함 된 통합 문서가 현재 활성화되어있는 경우에만 작동하는 것으로 보입니다. 어떻게 든 다른 파일이 활성화 된 상태에서 코드를 실행하면이 메서드는 실패합니다.'ActiveSheet' 객체와 같은 접근법입니다. –
제안 된 VBA의 큰 팬은 아니지만 게시자가 삭제 한 외부 링크는 테이블과 테이블 부분을 참조하는 방법에 대한 좋은 요약입니다. 감사합니다. – Pork
- 1. Excel VBA에서 명명 된 열을 참조하는 방법
- 2. Excel VBA에서 SQL Server 테이블을 업데이트하십시오.
- 3. Excel VBA에서 문자열을 UUID로 포맷하는 방법은 무엇입니까?
- 4. Excel vba에서 CDATA 태그를 만드는 방법은 무엇입니까?
- 5. Excel VBA에서 const를 개체로 정의하는 방법은 무엇입니까?
- 6. Excel VBA에서 Select Case를 통과하는 방법은 무엇입니까?
- 7. Excel VBA에서 @ 기호가있는 테이블을 쿼리 할 수없는 이유는 무엇입니까?
- 8. 다른 Excel 테이블에서 '관련'테이블을 참조하는 방법은 무엇입니까?
- 9. 동일한 테이블을 두 번 참조하는 방법은 무엇입니까?
- 10. 하위 쿼리에서 임시 테이블을 참조하는 방법은 무엇입니까?
- 11. Excel VBA에서 이상한 개체
- 12. ListObjects 테이블을 참조하는 VBA에서 동적 명명 된 범위를 만듭니다.
- 13. Excel VBA에서 범위 선택
- 14. 변경 가능한 테이블을 참조하는 변경 불가능한 테이블을 처리하는 방법은 무엇입니까?
- 15. Excel 2013 VBA에서 명명 된 셀을 참조하는 올바른 방법은 무엇입니까? (나는 이것을 망쳐 놓고있는 것을 안다.)
- 16. 변수로 테이블을 참조하는 것
- 17. Excel VBA에서 수식으로 문자열 사용
- 18. VBA를 사용하여 Excel 테이블을 정렬하는 방법은 무엇입니까?
- 19. Excel VBA에서 PowerPoint 저장
- 20. Excel VBA에서 Oracle에 삽입
- 21. Excel VBA에서 함수 찾기
- 22. Excel VBA에서 대안 상쇄
- 23. Excel VBA에서 범위 검색
- 24. Excel VBA에서 조합 만들기
- 25. excel vba에서 행렬 구성
- 26. Excel VBA에서 OnClick
- 27. Excel VBA에서. 행 사용
- 28. excel/vba에서 zeromq 사용
- 29. Excel VBA에서 시트 전환하기
- 30. Excel 2003 VBA에서 임시 테이블을 사용하여 SQL sproc을 호출하지 못했습니다.
좋아요, 고맙습니다. –