2015-01-05 72 views
1

是否可以用文件重命名文件夾? 下面的代碼創建一個文件夾並將附件保存在那裏。在我需要使用保存的第二行文件中的日期重命名該文件夾之後。 我可以檢索日期,但代碼無法重命名文件夾。是否可以用文件重命名文件夾?

Option Explicit 

Public Sub SalvarAnexo(Item) 

    Dim Atmt As Attachment 
    Dim FileName As String 
    Dim objFSO As Object 
    Dim objFile As Object 
    Dim strData As String 
    Dim caminhoTemp As String 
    Dim caminhoFinal As String 
    Dim caminhoFtp As String 

    'MsgBox "Mensagem Recebida de " & Item.Sender & "!" 
    caminhoTemp = "C:\temp" 
    caminhoFinal = "C:\" 


    For Each Atmt In Item.Attachments 
     If Right$(Atmt.FileName, 3) = "TXT" Then 
      Set objFSO = CreateObject("Scripting.FileSystemObject") 
      FileName = caminhoTemp & "\" & Atmt.FileName 
      Atmt.SaveAsFile FileName 
      Set objFile = objFSO.OpenTextFile(FileName, 1) 
      strData = objFile.ReadLine 
      strData = objFile.ReadLine 
      strData = Left$(strData, 10) 
      strData = Replace(strData, "-", "") 

      caminhoFinal = caminhoFinal & strData 

      Name caminhoTemp As caminhoFinal 
      objFile.Close 


      MsgBox "Your date is " & strData 
     End If 
    Next Atmt 

End Sub 
+1

首先您的目標文件夾c:\已經存在。其次,你實際上正在做的是用空名稱重命名文件夾。試着做你剛纔試圖用代碼手工完成的事情,你會發現問題。你真正想要做的是將臨時文件夾的內容轉移到最終位置。 – Rob

+1

先關閉文件,然後重命名文件夾。 –

+0

多張貼:http://pt.stackoverflow.com/questions/45994/%C3%89-poss%C3%ADvel-renomear-uma-pasta-com-arquivos-dentro-usando-vba-outlook – pnuts

回答

3
objFSO.MoveFolder("c:\oldname", "c:\newname") 

在 「使用oldName」 文件夾中的文件應該被全部關閉。

下面編輯每託默勒格(謝謝!):

你可以得到的文件夾對象並將其重命名:

Set fdr = objFSO.GetFolder("oldname") 
    fdr.Name = "newname" 

這些文件中的 「使用oldName」 文件夾中應該全部關閉。

「oldname」是Fullsplec。

「newname」就是這個名字。

+0

我想你也可以簡單地設置[文件夾對象的名稱屬性](http://msdn.microsoft.com/en-us/library/zawxett8(v = vs.84).aspx)。 – Tomalak

+0

你試過了嗎? –

+1

我不需要,因爲文檔說我可以。 ;) – Tomalak

2

您可以

Name "C:\oldname" As "C:\newname" 

直接做到這一點,而不FileScriptingObject的開銷,你的具體情況還沒有爲FileScriptingObject已經被調用,以打開文本文件一個巨大的節省。

+2

這是這裏最簡單的解決方案(如果OP不一定必須使用FSO進行重命名)。 –