2017-01-03 212 views
0

我最近开始尝试使用vba来自动执行Microsoft Word中的一些日常任务。我正在研究一个代码,它允许用户选择一个目标文件夹以及要复制到所选目标文件夹的文件(.doc)。使用vba复制粘贴微软word文件到另一个文件夹

以下代码运行时没有错误,但是文件不会将复制粘贴到目标文件夹中。

我将非常感谢任何帮助来解决这个分钟的问题。

问候,

德里克

Sub copydocs() 

Dim items As Long 
Dim file_path As Variant 
Dim folder_path As Variant 

    'Ask user for input' 

    items = InputBox("Give me some input") 


    'Select Destination Folder 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     folder_path = .SelectedItems(1) 
     .Show 
    End With 


    ' Open the file dialog 
    For i = 1 To items 
     With Application.FileDialog(msoFileDialogFilePicker) 
      .AllowMultiSelect = True 
      .Show 
      file_path = .SelectedItems(1) 
     End With 

     ' Copy paste  
     Dim fs As Object 
     Set fs = CreateObject("Scripting.FileSystemObject") 
     fs.CopyFile file_path, folder_path 
     Set fs = Nothing 

    Next i  

End Sub 

回答

0

有几个问题。

变量i没有在任何地方声明。

您正试图在对话返回之前保存文件夹路径。

Sub copydocs() 
    Dim i As Integer    ' CHANGE: New declare. 
    Dim fs As Object    ' CHANGE: Moved to top. 
    Dim items As Long 
    Dim file_path As Variant 
    Dim folder_path As Variant 

    'Ask user for input. 
    items = InputBox("Give me some input") 

    'Select Destination Folder 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     ' CHANGE: Switched order of next two lines. 
     .Show 
     folder_path = .SelectedItems(1) 
    End With 

    ' Open the file dialog 
    For i = 1 To items 
     With Application.FileDialog(msoFileDialogFilePicker) 
      .AllowMultiSelect = True 
      .Show 
      file_path = .SelectedItems(1) 
     End With 

     ' Copy paste 
     Set fs = CreateObject("Scripting.FileSystemObject") 
     fs.CopyFile file_path, folder_path 
     Set fs = Nothing 
    Next i 
End Sub 
相关问题