이 페이지에서
구문
= GetFileApplication ( 파일경로 )
인수구분
형식 설명
파일경로
필수
String
실행 프로그램을 찾을 대상 파일의 경로입니다.
마스터 코드
복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요Option Explicit
#If VBA7 Then
' https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-findexecutablea
Private Declare PtrSafe Function FindExecutable& Lib "shell32.dll" Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String)
#Else
Private Declare Function FindExecutable& Lib "shell32.dll" Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String)
#End If
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com/)
'■ GetFileApplication 함수
'■ 지정한 경로의 파일을 실행할 실행프로그램(*.exe)을 찾아 반환합니다.
'■ 인수 설명
'_____________sFile : 실행 프로그램을 찾을 파일의 파일경로입니다.
'###############################################################
Public Function GetFileApplication(ByVal sFile As String) As String
Dim i As Long: Dim E As String
If Dir(sFile) = "" Or sFile = "" Then GetFileApplication = "존재하지 않는 파일": Exit Function
If Len(sFile) > 260 Then GetFileApplication = "글자수 초과": Exit Function
' Windows 최대 허용 파일경로는 260자 입니다.
E = String(260, Chr(0))
i = FindExecutable(sFile, vbNullString, E)
' 실행 프로그램 있을 경우 32보다 큰 값을 반환합니다.
If i > 32 Then
GetFileApplication = Left$(E, InStr(E, Chr$(0)) - 1)
Else
GetFileApplication = "실행 파일 없음"
End If
End Function
활용 예제
파일의 실행 프로그램 경로 반환
GetFileApplication ( "C:\Users\Oppadu\Desktop\예제.txt" )
'// "C:\Windows\system32\NOTEPAD.EXE" 를 반환합니다.
GetFileApplication ( "C:\Users\Oppadu\Desktop\예제.xlsx" )
'// "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" 를 반환합니다.
오류를 반환하는 경우
GetFileApplication ( "C:\Users\Oppadu\Desktop\없는파일.xlsx" )
'// "존재하지 않는 파일" 오류를 반환합니다.
GetFileApplication ( "C:\Users\Oppadu\Desktop\엑셀설치안됨.xlsx" )
'// 엑셀을 실행할 프로그램이 없을 경우 "실행 파일 없음" 오류를 반환합니다.
안내사항
실행 파일 경로는 사용 중인 PC의 기본 프로그램 설정에 따라 달라집니다.
파일 경로가 존재하지 않으면 "존재하지 않는 파일", 260자를 넘으면 "글자수 초과", 파일을 실행할 프로그램이 없으면 "실행 파일 없음" 오류를 반환합니다.
다운이 안 되는 것 같네요.
첨부파일 수정하였습니다.
확인해주셔서 감사드립니다.
감사합니다.