2015-03-02 89 views
0

對於知道這一點的人來說,我認爲應該非常簡單。我有一個Access表,其中列出了特定文件夾中的PDF名稱以及它們通過唯一參考號鏈接的代理。一個Agent有很多PDF。MS Access VBA將PDF文件移動到記錄集中指定的文件夾

我想要做的是讓用戶按下表格上的按鈕,並將PDF文件複製到相應的代理文件夾中。我的代碼有點混亂,我從我們這裏的代碼片段和谷歌代碼中拼湊了一些代碼。

它創建文件夾,但留下一些空的。它也僅移動每個代理的一個PDF。我猜我需要一個循環,但我不知道在哪裏放一個。

Private Sub Command2_Click() 
Dim intCurrPos As Integer, intNextPos As Integer, intLength As Integer 
Dim strSlash As String, strFolder As String, strRSFolder As String 
Dim fs, cf, x 
Dim db As DAO.Database 
Dim rs As DAO.Recordset 
On Error GoTo Err_CreateFolder 

Set db = CurrentDb 
Set rs = db.OpenRecordset("tbl_PDF_Agent", dbOpenDynaset, dbReadOnly) 
On Error Resume Next 

Set fs = CreateObject("Scripting.FileSystemObject") 
strSlash = "\" 
intCurrPos = 4 
strFolder = CurrentProject.Path 
intLength = Len(strFolder) 

    If intLength > 3 Then 
     Do 
      intNextPos = InStr(intCurrPos, strFolder, strSlash) 
      intCurrPos = intNextPos + 1 
       If intNextPos > 0 Then 
        If fs.FOLDEREXISTS(Left(strFolder, intNextPos - 1)) = False Then 
         Set cf = fs.CreateFolder(Left(strFolder, intNextPos - 1)) 
        End If 
       Else 
        If fs.FOLDEREXISTS(Left(strFolder, intLength)) = False Then 
         Set cf = fs.CreateFolder(Left(strFolder, intLength)) 
        End If 
       End If 
     Loop Until (intNextPos = 0) 
    End If 

    While Not rs.EOF 
     strRSFolder = strFolder & "\" & rs!Agent 
     Set fs = CreateObject("Scripting.FileSystemObject") 
      If fs.FOLDEREXISTS(strRSFolder) = True Then 
       'MsgBox "'" & strRSFolder & "' already exists!" 
      Else 
       Set cf = fs.CreateFolder(strRSFolder) & "\" 
        If fs.FOLDEREXISTS(strRSFolder) = True Then 
        fs.CopyFile CurrentProject.Path & "\" & rs!FullName, _ 
        (strRSFolder) & "\" & rs!FullName 

        Else 
         'MsgBox "'" & strRSFolder & "' was not successfully created!" 
        End If 
      End If 
     rs.MoveNext 
    Wend 

    MsgBox "Done" 

    Exit Sub 

任何人都可以給的指針會很棒。

回答

0

我對你的目標有點不清楚,但是如果你想把所有的PDF文件轉移到一個特定的代理文件夾中,假設完整的UNC位置的PDF文件的初始和目的地路徑都存儲在表中兩列,您可以遍歷表中的這些記錄,使用VB Name函數並將源文件夾和目標文件夾字符串傳遞給記錄集中的函數。這是一些僞代碼(Field1是源UNC位置,Field2是目標UNC位置):

Do While Not Recordset.EOF 
    Name Recordset!Field1 AS Recordset!Field2 
Recordset.MoveNext 
Loop 
相關問題