1
이 같은 것을 시도하고 몇 가지 문제가있는 것은 이번이 처음입니다.첨부 파일을 저장하고 웹 서버에 FTP로 전송하는 Outlook 2010 매크로
아래 코드를 Outlook 2010 매크로로 작성했습니다. 선택한 전자 메일 세부 정보를 SQL 데이터베이스에 저장하고 모든 첨부 파일을 로컬에 저장 한 다음 FTP를 통해 업로드하려고 시도합니다.
마치 명령 창이 열리면서 업로드를 시도하는 것처럼 보이지만 신속하게 다시 닫히지 만 파일이 업로드되지 않았기 때문에 오류 정보가 표시되지 않습니다.
누구든지 내 코드를 볼 수 있습니까?
Sub ExportToSql()
Dim objConn As New ADODB.Connection
Dim rsMsgs As New ADODB.Recordset
Dim cmdMsgs As New ADODB.Command
Dim strDBFile As String
Dim sql As String
Set objConn = New ADODB.Connection
objConn.ConnectionString = "Provider=SQLOLEDB;data source=IP_ADDRESS;initial catalog=DB_NAME;User Id=USERNAME;Password=PASSWORD;"
objConn.Open
Set objExp = Application.ActiveExplorer
If objExp.Selection.Count > 0 Then
If objExp.Selection(1).Class = Outlook.OlObjectClass.olMail Then
For Each objMsg In objExp.Selection
cmdMsgs.ActiveConnection = objConn
cmdMsgs.CommandText = "INSERT INTO [Email] ([Date], [Subject], [From], [To], [Body]) VALUES (?, ?, ?, ?, ?)"
cmdMsgs.Parameters.Append cmdMsgs.CreateParameter("param1", adDBTime, adParamInput, -1, objMsg.SentOn)
cmdMsgs.Parameters.Append cmdMsgs.CreateParameter("param2", adLongVarChar, adParamInput, 1000, objMsg.Subject)
cmdMsgs.Parameters.Append cmdMsgs.CreateParameter("param3", adVarChar, adParamInput, -1, objMsg.SenderEmailAddress)
cmdMsgs.Parameters.Append cmdMsgs.CreateParameter("param4", adVarChar, adParamInput, -1, objMsg.To)
cmdMsgs.Parameters.Append cmdMsgs.CreateParameter("param5", adLongVarChar, adParamInput, 50000, objMsg.Body)
cmdMsgs.Execute
For Each objAtt In objMsg.Attachments
'save file locally
Dim saveFolder As String
Dim filePath As String
saveFolder = "C:\Users\jw"
filePath = saveFolder & "\" & objAtt
objAtt.SaveAsFile filePath
Set objAtt = Nothing
'upload saved file
Dim vPath As String
Dim vFile As String
Dim vFTPServ As String
vPath = "C:\inetpub\wwwroot\WEBSITE\attachments"
vFTPServ = "IPADDRESS"
fNum = FreeFile()
Open filePath For Output As #fNum
Print #fNum, "USERNAME PASSWORD"
Print #fNum, "bin" ' bin or ascii file type to send
Print #fNum, "put " & filePath
Print #fNum, "close" ' close connection
Print #fNum, "quit" ' Quit ftp program
Close
Shell "ftp -n -i -g -s:" & vPath & " " & vFTPServ, vbNormalNoFocus
Next
Next
End If
End If
objConn.Close
Set rsMsgs = Nothing
Set objConn = Nothing
End Sub
어떤 도움을 주셔서 감사합니다. J.
오류를 어떻게 확인합니까? 명령 창 내용의 사본을 어딘가에 저장합니까? – mellamokb
셸 명령'& "> FTPOutput.txt"'의 끝에 이것을 추가하여 FTP 프로그램의 출력을 텍스트 파일로 리디렉션하여 FTP가 반환 할 수있는 오류를 읽을 수있게합니다. – Kratz
답변을 주셔서 감사합니다. 출력 할 파일을 얻을 수 없지만 몇 가지 방법을 시도해 보았습니다. Shell "ftp -n -i -g -s :"& vPath & ""& vFTPServ & "> C : \ Users \ jw \ FTPOutput.txt ", vbNormalNoFocus ?? – JBoom