아마도 누락되었을 수있는 유일한 참조는 일반적인 컨트롤입니다. 나머지는 모든 Excel 버전에서 기본값입니다. 양식은 사용자 양식이 있거나 명시 적으로 설정 한 경우에만 해당하지만 문제는 아닙니다. 공용 컨트롤이 문제입니다. 더 이상 Office와 함께 제공되지 않습니다. Visual Studio 또는 VB6있는 경우 아마 있습니다. 또는 XP Developer Edition과 같은 이전 버전의 Office.
어쨌든 시스템 폴더에 OCX 파일이 있는지 확인할 수 있습니다. 나는 그 폴더에 있어야 할 필요는 없다고 생각하지만 다른 곳에서는 본 적이 없다.
5.0에 대한 참조를 본 지 꽤 오래되었으므로 아래 코드에서 6.0을 찾는 방법을 설명했습니다. 사용중인 버전을 확인하십시오. 표준 모듈에서
:
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Function HasCommonControl() As Boolean
Dim sFolder As String
Dim lReturn As Long
Const lSIZE As Long = 255
Const sDLLNAME As String = "COMCTL32.OCX" 'For windows common control 5.0
'Const sDLLNAME As String = "MSCOMCTL.OCX" 'For windows common control 6.0
sFolder = Space(lSIZE)
lReturn = GetSystemDirectory(sFolder, lSIZE)
sFolder = Left$(sFolder, lReturn)
HasCommonControl = Len(Dir(sFolder & Application.PathSeparator & sDLLNAME)) > 0
End Function
모든 것을 말해 두 겠는데, 당신은 왜 일반 컨트롤을 사용하고 있습니까? 이 정의 폼에 트 리뷰에 대한 있다면 jkp 내가 공용 컨트롤을 사용하지 않은 것을 쓴 이후,이 모든 VBA를 트 리뷰
http://www.jkp-ads.com/articles/treeview.asp
을 확인하십시오. 그래서 평범한 사람이 거의없는 PC를 설치 한 것은 고통스런 일입니다.
참조 확인을위한 vba가 있는지 나는 잘 모르겠지만 설치 한 버전에 따라 엑셀 개체 라이브러리가 다른 경우가 많습니다. 내 제안은 명령이 같으면 늦은 바인딩을 사용하는 것이지만 ... 아마도 더 좋은 방법이있을 것입니다. – RowanC
안녕하세요, 저는 아직도 VBA 프로그래밍에 익숙하지 않습니다. 그렇기 때문에 후기 바인딩을 사용한다는 것은 무엇을 의미합니까? – SamoanProgrammer
http://support.microsoft.com/kb/245115 – RowanC