2012-10-25 55 views
1

所以像主題標題所說,我正在尋找一些宏的幫助。 我需要它作爲我的工作,所以每次執行客戶端備份時,他都會向郵箱發送郵件,並將這些郵件導出到文件夾中。 這是郵件格式:Excel宏如果文件存在

備份融洽成功客戶的名稱文件備份集Taak 2012年10月23日(20 30)

宏的需要做幾件事情:

  • 提取客戶
  • 提取物或備份whas成功的名稱或失敗或錯過
  • ,寫成功或f在右邊的單元格中發生的消息

這甚至可能嗎?

Public Function FileFolderExists(strFullPath As String) As Boolean 
'Author  : Ken Puls (www.excelguru.ca) 
'Macro Purpose: Check if a file or folder exists 
    On Error GoTo EarlyExit 
    If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = True 

EarlyExit: 
    On Error GoTo 0 
End Function 

Public Sub TestFolderExistence() 
'Author  : Ken Puls (www.excelguru.ca) 
'Macro Purpose: Test if directory exists 
    If FileFolderExists("c:\test") Then 
     MsgBox "Folder exists!" 
    Else 
     MsgBox "Folder does not exist!" 
    End If 
End Sub 
+3

是的,這可能是可能的。你試過什麼了? –

+0

atm我從我的outlook提取郵件到direcotry,然後我有這個代碼來檢查文件是否存在,公共函數FileFolderExists(strFullPath As String)作爲布爾型 '作者:肯普爾斯(www.excelguru.ca) 「宏目的:檢查是否一個文件或文件夾存在 對錯誤轉到EarlyExit 如果不風向(strFullPath,vbDirectory)= vbNullString然後FileFolderExists = TRUE EarlyExit: 對錯誤轉到0 端功能 –

+0

的問題是我不有一個線索如何編寫宏的那些搜索客戶端的名稱日期如果備份whas成功或不... –

回答

0

以下將字符串拆分爲單詞(但僅在ClientName爲一個單詞時才起作用)。

Sub Test() 
    Const sIn As String = "Backup Rapport Geslaagd ClientName File Backup Set Taak 2012-10-23 (20 30), " 
    Dim sArr() As String 

    sArr = Split(sIn, Space(1)) 

    Debug.Print "Success=" & sArr(2) 
    Debug.Print "ClientName=" & sArr(3) 
    Debug.Print "Date=" & sArr(8) 
End Sub 

有很多方法可以將文本輸入到單元格中。舉個例子:

Range("A1").Value = "Hello" 

Range("A2").Value = sArr(2) 

編輯

擴展子取一個字符串和範圍,並輸入文字:

Option Explicit 

Sub SplitMailStringAndEnterValues(psMail As String, poRange As Range) 
    Dim sArr() As String 

    '***** Check that poRange is an object 
    If Not poRange Is Nothing Then 
     sArr = Split(psMail, Space(1)) 

     '***** Check that sArr is an array 
     '***** and that it contains at least 9 strings 
     If IsArray(sArr) And UBound(sArr) >= 8 Then 
      '***** Enter values starting in range poRange and use 
      '***** offset to place other values to the right 
      poRange.Value = sArr(2)     'Success 
      poRange.Offset(0, 1).Value = sArr(3) 'ClientName 
      poRange.Offset(0, 2).Value = sArr(8) 'Date 
     End If 
    End If 
End Sub 

現在稱這個爲每個郵件串,而不是寫作列中的整個字符串:

Call SplitMailStringAndEnterValues("Backup Rapport Geslaagd ClientName File Backup Set Taak 2012-10-23 (20 30)", Range("Sheet2!A2")) 
+0

謝謝你olle,但在你的例子中,我需要把每一天,併爲每個客戶主題關閉電子郵件中手動代碼我認爲? –

+0

使用'Dir'命令查找文件夾中的文件。 Lopp通過它們,併爲每個代碼調用一次代碼,而不是使用'sIn'。還有一個提示:您可以將子Test'變成函數,以從郵件字符串中返回所需的值。 –

+0

我想我沒有把Dir命令弄掉...... –