将格式化的 Word 文本复制到 Access
Copying formatted Word text into Access
我正在尝试改编此页面 中的 VBA,以便循环遍历所有选定的文件或特定文件夹中的所有文件。这可能吗?谢谢
您可以执行以下两项操作之一:不要拆分文件选择器函数和导入函数,或者 return 文件选择器函数中的集合或数组。
我会选择后者的教育价值:
选择文件
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
函数进行任何操作。
我正在尝试改编此页面
您可以执行以下两项操作之一:不要拆分文件选择器函数和导入函数,或者 return 文件选择器函数中的集合或数组。
我会选择后者的教育价值:
选择文件
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
函数进行任何操作。