Vba 字符,这应该允许 '在此处关闭MS Word,但不显示弹出消息: 使用objDoc .Selection.HOME键单位:=wdLine .Selection.MoveRight单位:=wdCharacter,计数:=5,扩展:=wdExtend .Selection.Copy .Documents.Close 退出 以 设置objDoc=Nothing 端接头

Vba 字符,这应该允许 '在此处关闭MS Word,但不显示弹出消息: 使用objDoc .Selection.HOME键单位:=wdLine .Selection.MoveRight单位:=wdCharacter,计数:=5,扩展:=wdExtend .Selection.Copy .Documents.Close 退出 以 设置objDoc=Nothing 端接头,vba,ms-access,ms-word,ms-access-2010,Vba,Ms Access,Ms Word,Ms Access 2010,您的命令按钮的点击事件: 此子例程应在命令按钮的单击事件中运行。它本质上调用FileToOpen函数和GetWordContent子例程,以便用户选择MS Word文档,然后让VBA将MS Word文档中的格式化文本复制并粘贴到Access中打开表单上的富文本备忘录文本框中 请注意,此子例程进行了一些假设,并引用了可能尚未设置的控件/表/字段等的名称。这些假设是: 表单的命令按钮称为cmdGetWordData Access数据库有一个名为tblWordDump 您的表单已绑定到表tblWord

您的命令按钮的点击事件:

此子例程应在命令按钮的单击事件中运行。它本质上调用
FileToOpen
函数和
GetWordContent
子例程,以便用户选择MS Word文档,然后让VBA将MS Word文档中的格式化文本复制并粘贴到Access中打开表单上的富文本备忘录文本框中

请注意,此子例程进行了一些假设,并引用了可能尚未设置的控件/表/字段等的名称。这些假设是:

  • 表单的命令按钮称为cmdGetWordData
  • Access数据库有一个名为tblWordDump
  • 您的表单已绑定到表tblWordDump
  • tblWordDump有两个备忘录文本字段,分别名为WordDocDataSrcWordDocData,用于存储导入的文件路径/名称和文本内容,这两个字段都添加到表单中
  • Private Sub cmdGetWordData\u Click()
    '此子例程在命令按钮上运行;它将同时调用FileToOpen函数和GetWordContent子例程
    '检索所选MS Word文档的文本内容。
    '然后,它会将所选MS Word文档的路径和文本内容存储在Access表中的两个字段中。
    '注意:此代码假定您的Access数据库具有:
    '-一个名为tblWordDump的表
    '-此表中名为WordDocDataSrc的备注文本字段,用于存储导入的MS Word文件的路径
    “-此表中名为WordDocData的备注文本字段,其TextFormat属性设置为“Rich text”,
    '将存储导入的MS Word文件的文本和文本格式
    作为字符串的Dim strFile
    Dim strWordContent作为变体
    '通过文件对话框选择文件
    strFile=FileToOpen
    '选择或未选择文件时的条件
    如果_
    Len(strFile)>0_
    然后
    文件编号:GoToRecord,acNewRec
    GetWordContent标准文件
    MsgBox“导入成功”,vbInformation或vbOKOnly
    其他的
    MsgBox“未选择文件”、VBEQUOTION或vbOKOnly
    如果结束
    端接头
    

    这一点你可以随便看看。

    我对你的工作真的没有经验。不过,我还是找到了这篇文章,它似乎有一些不错的建议:非常感谢你的回答!我试图在反映实际项目的测试环境中实现。见我的更新上面。代码接受文本,但不保留格式。我是否忽略了实现中的某些内容?我无法访问您的示例,因为我们的公司防火墙不允许我从gdrive下载。您希望保留什么格式?我可以看到马车返回和新线路没有保留,所以我会看看是否有办法保留这些。。你还想保留其他格式吗?我需要粗体字、回车和要点。目前,代码似乎基本上只带来纯文本。它为您保留了哪种格式?目前没有(对不起,我应该检查一下)。我认为问题可能出在SQL语句上,因为执行
    Debug.Print CVar(objDoc.Range.Text)
    表明至少回车符和新行正在进入即时窗口,而不是备忘录文本字段(我并没有将我的示例文件设置为富格文本,但即使这样,它也会将所有内容放在一行中)。我会做一些挖掘:)@rohrl77我已经更新了我的答案和访问文件的链接。我所做的测试效果不错,但我认为在某些格式方面存在一些限制。我确实在一个文件上达到了一些数据限制,所以它可能不适用于冗长的MS Word文档。希望这有帮助:)