2015-01-05 77 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进行重命名)。 –