2016-07-07 1 views
-1

전자 메일 주소를 사용하는 VBA 스크립트를 작성한 다음 새 창에서 엽니 다. 그 트릭은 Shell32.dll을 사용하지 않고 실행시켜야합니다.VBA - Shell32.dll을 사용하는 대안

아래 코드를 기반으로 다음을 다시 작성할 수있는 다른 방법이 있습니까?

Option Explicit 

Private Declare Function ShellExecute _ 
    Lib "shell32.dll" Alias "ShellExecuteA" (_ 
    ByVal hWnd As Long, _ 
    ByVal Operation As String, _ 
    ByVal Filename As String, _ 
    Optional ByVal Parameters As String, _ 
    Optional ByVal Directory As String, _ 
    Optional ByVal WindowStyle As Long = vbMinimizedFocus _ 
) As Long 

Public Sub OpenUrl() 

Dim olItem As Outlook.MailItem 
Set olItem = Application.ActiveExplorer().Selection(1) 
Dim sTemp As String 
Dim sURL As String 

If olItem.SenderEmailType = "EX" Then 
    sTemp = olItem.Sender.GetExchangeUser().PrimarySmtpAddress 
Else 
    sTemp = olItem.SenderEmailAddress 
End If 

sURL = "https://afakeurl.com/" + sTemp 

Dim lSuccess As Long 


lSuccess = ShellExecute(0, "Open", sURL) 

End Sub 
+0

VB의'Shell' 함수를 사용하십시오. 기본적으로 Win32 API 함수를 감싸는 래퍼입니다. –

답변

1

왜 사용하지 않습니까? 더 설명해 주시겠습니까? 당신은 VBA 셸을 사용할 수 있습니다

Shell "cmd.exe" 

하나의 대안 방법은 이것은 마이크로 소프트 런타임 스크립팅을 사용

set wsh = CreateObject("WScript.Shell") 
wsh.run "Your thing" 

사용하는 것입니다. 하지만이 장면에서는 Shell32.dll을 사용한다고 생각합니다.

+0

코드 검토 팀은 ShellExecute를 사용하여 링크를 열어 링크를 열지 않기를 원하지만 가능한 경우 확실하지 않습니다. 난 VBA에서 초보자입니다. – jsaranovic

+0

글쎄, 직접 WINAPI를 사용하지 않고 다른 방법으로 썼습니다. – Mono