2012-12-05 3 views
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.

+0

오류를 어떻게 확인합니까? 명령 창 내용의 사본을 어딘가에 저장합니까? – mellamokb

+0

셸 명령'& "> FTPOutput.txt"'의 끝에 이것을 추가하여 FTP 프로그램의 출력을 텍스트 파일로 리디렉션하여 FTP가 반환 할 수있는 오류를 읽을 수있게합니다. – Kratz

+0

답변을 주셔서 감사합니다. 출력 할 파일을 얻을 수 없지만 몇 가지 방법을 시도해 보았습니다. Shell "ftp -n -i -g -s :"& vPath & ""& vFTPServ & "> C : \ Users \ jw \ FTPOutput.txt ", vbNormalNoFocus ?? – JBoom

답변

0

사용자 이름과 비밀번호는 두 줄로 구분되어야한다고 생각합니다. 또한 ">"대신 ">>"를 사용하여 FTP 명령 결과를 텍스트 파일로 출력하십시오.

관련 문제