2017-07-06 80 views
0

我正在尝试从此页面调整VBA copy formatted text into access using vba,以便它可以遍历选定的所有文件或特定文件夹中的所有文件。这可能吗?谢谢。将格式化的Word文本复制到Access中

+0

这是可能的,是的。你的问题到底是什么?用filepicker选择多个文件?调整代码以便每个文件执行一次?选择扩展名为.doc或.docx的文件夹中的所有文件? –

+0

我想重复几个文件,而不是为每个文件重新运行它。我修改了AllowMultiSelect = True,但希望为所选的所有文件或特定文件夹中的所有文件(以最简单的文件为准)运行它。对不起,我对这一切都很陌生。谢谢。 – niawo

回答

1

您可以执行以下两项操作之一:不要拆分filepicker函数和导入函数,也不要从filepicker函数返回集合或数组。

我要选择教育价值后者:

选择文件

Public Function FilesToOpen() As Collection 

    ' This function will essentially allow you to browse to MS-Word document 
    ' and then store the path of that file for use in the GetWordContent function 

    Dim fDialog As Object 'Office.FileDialog 
    Dim varFile As Variant 

    Set fDialog = Application.FileDialog(3) 
    Set FilesToOpen = New Collection 
    With fDialog 
     .AllowMultiSelect = True 
     .Title = "Select Word document to import" 
     .Filters.Clear 
     .Filters.Add "Word files", "*.doc?" 

     If _ 
      .Show = True _ 
     Then 
      For Each varFile In .SelectedItems 
       FilesToOpen.Add varFile 
      Next 
     End If 
    End With 
End Function 

并打开它们

Private Sub cmdGetWordData_Click() 

    ' This subroutine runs on your command button; it will call both the FileToOpen function and GetWordContent subroutine 
    ' to retrieve the text contents of your chosen MS-Word Document. 
    ' It will then store both the path the text contents of of your chosen MS-Word Document in 2 fields in a table in Access. 

    ' NOTE: this code assumes that your Access database has: 
    ' - a table called tblWordDump 
    ' - a memo text field in this table called WordDocDataSrc to store the path of MS-Word file imported 
    ' - a memo text field in this table called WordDocData with the TextFormat property set to "Rich Text", 
    ' which will store the text and text formating of the MS-Word file imported 

    Dim collFiles As Collection 
    Dim strWordContent As Variant 

    ' Select files via File Dialogue 

    Set collFiles = FilesToOpen 
    Dim oneFile As Variant 

    ' Conditionals when a file was or wasn't selected 

    If _ 
     collFiles.Count <> 0 _ 
    Then 
     For Each oneFile In collFiles 

      DoCmd.GoToRecord , , acNewRec 

      GetWordContent CStr(oneFile) 
     Next oneFile 

     MsgBox "Import Successful", vbInformation Or vbOKOnly 

    Else 

     MsgBox "No File Selected", vbExclamation Or vbOKOnly 

    End If 

End Sub 

请注意,我试图改变尽可能少,并且没有做任何与GetWordContent f结。

+0

感谢您的支持。我在GetWordContent oneFile上收到“编译错误:ByRef参数类型不匹配”。 – niawo

+0

哦,这只是访问挑剔。 'GetWordContent CStr(oneFile)'应该做的。编辑答案反映了这一点。 –

+0

谢谢。我现在正在Set collFiles = FilesToOpen上运行时错误'424'。 – niawo

相关问题