Word 템플릿 추가 기능 (.dtom)을 만들었습니다. FTP를 사용하여 서버에서 파일을 다운로드합니다. 방화벽이 꺼져 있으면 잘 작동합니다. 방화벽이 켜져 있으면 다운로드를 허용하지 않습니다. 경우에 따라 방화벽은 바이러스 백신을 사용하여 설정됩니다.Word 템플릿 VBA에서 wininet.dll을 사용하여 방화벽이 켜져 있으면 FTP에서 파일을 다운로드 할 수 없습니다.
이것은 방화벽이 꺼져 있으면 잘 작동하는 코드입니다.
'Add DLL runtime
Private Declare PtrSafe Function InternetGetConnectedState Lib "wininet.dll" _
(ByRef dwflags As Long, ByVal dwReserved As Long) As Long
Private Declare PtrSafe Function InternetOpenA Lib "wininet.dll" (_
ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
Private Declare PtrSafe Function InternetConnectA Lib "wininet.dll" (_
ByVal hInternetSession As Long, _
ByVal sServerName As String, _
ByVal nServerPort As Long, _
ByVal sUsername As String, _
ByVal sPassword As String, _
ByVal lService As Long, _
ByVal lFlags As Long, _
ByVal lcontext As Long) As Long
Private Declare PtrSafe Function FtpGetFileA Lib "wininet.dll" (_
ByVal hConnect As Long, _
ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, _
ByVal fFailIfExists As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal dwflags As Long, _
ByVal dwContext As Long) As Long
Private Declare PtrSafe Function InternetCloseHandle Lib "wininet" (_
ByVal hInet As Long) As Long
Private Const INTERNET_FLAG_PASSIVE As Long = &H8000000
Public Sub downloadFile()
If (fileExists = True) Then
Kill folderLocation
End If
strRemoteFile = "/MyFile.xml"
strLocalFile = folderLocation
strHost = "XXX.XXX.XXX.XXX"
lngPort = 21
strUser = "myuser"
strPass = "mypassword"
'usage
'FtpDownload "/TEST/test.html", "c:\test.html", "ftp.server.com", 21, "user", "password"
Dim hOpen As Long
Dim hConn As Long
hOpen = InternetOpenA("FTPGET", 1, vbNullString, vbNullString, 1)
hConn = InternetConnectA(hOpen, strHost, lngPort, strUser, strPass, 1, INTERNET_FLAG_PASSIVE, 2)
If FtpGetFileA(hConn, strRemoteFile, strLocalFile, 1, 0, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0) Then
Debug.Print "done"
Else
Debug.Print "fail"
End If
InternetCloseHandle hConn
InternetCloseHandle hOpen
End Sub
방화벽이 켜져있는 경우 다운로드 방법을 제안하십시오. 또한 방화벽 문제를 해결할 수있는 다른 방법이 있다면 제안하십시오. 당신은 수동 FTP 모드를 사용할 필요가
이것은 VBA가 아닌 방화벽 문제입니다. Word가 PC 방화벽 구성에서 아웃 바운드 연결을하도록 허용 할 것을 제안하십시오. FTP 포트와 특정 IP 주소로 제한 될 수 있습니다. – PatricK
@ PatricK 더 큰 시나리오에서 알려 드리겠습니다. 내 사용자에게이 추가 기능을 제공했습니다. 모두 다른 종류의 바이러스 백신을 사용합니다. 나는 모든 사람들이 안티 바이러스 구성을 설정할 수 있도록 도와 줄 수는 없다. 따라서 바이러스 백신 보안을 건너 뛰는 방법이 필요합니다. 귀하의 솔루션이 모든 바이러스 백신을 건너 뛰거나 개별적으로 확인해야합니까? ( –
Excel에서 'http : //'링크를 직접 열 수 있음을 알고 있습니다. 아마도 Word는 'ftp : //'와 유사 할 수 있습니다. 바이러스 백신이 치료할 것인지 웹 서버/공유 클라우드 드라이브로 xml 파일을 사용할 수 있도록 설정해야 할 수도 있습니다. – PatricK