以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]将word文档内容提取到当前表的不同单元格  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91127)

--  作者:jyh7081
--  发布时间:2016/9/29 22:55:00
--  [求助]将word文档内容提取到当前表的不同单元格
给word文档做上简单标记,按标记把word内容提取到当前表。具体如下:
A:之后的文字串,放入当前行的“第一列”;
B:之后的文字串,放入当前行的“第二列”;
C:之后的文字串,放入当前行的“第三列”;
D:之后的文字串,放入当前行的“第四列”;
END结束。

如图:

图片点击可在新窗口打开查看此主题相关图片如下:gif.gif
图片点击可在新窗口打开查看

附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文件夹.rar




[此贴子已经被作者于2016/9/30 7:38:57编辑过]

--  作者:有点蓝
--  发布时间:2016/9/30 9:09:00
--  
Dim app As New MSWord.Application
Dim s As String = StrToWide(" ")
try
    Dim c As String = "第一列"
    Dim doc = app.Documents.Open("F:\\H\\问题测试\\新建文件夹\\文档.docx")
    Dim dr As Row = Tables("表A").AddNew
    For Each k As object In doc.Paragraphs
        If Len(Trim(k.Range.text)) > 1 Then
            Select Case k.Range.text.TrimStart(" ",s).SubString(0,2)
                Case "B:"
                    c = "第二列"
                Case "C:"
                    c = "第三列"
                Case "D:"
                    c = "第四列"
            End Select
            dr(c) &= k.Range.text & vbcrlf
        End If
    Next
    
    dr("第一列") = dr("第一列").TrimEnd(vbcr,vblf)
    dr("第二列") = dr("第二列").TrimEnd(vbcr,vblf)
    dr("第三列") = dr("第三列").TrimEnd(vbcr,vblf)
    dr("第四列") = dr("第四列").TrimEnd(vbcr,vblf)
    app.quit
catch ex As exception
    msgbox(ex.message)
    app.quit
End try

[此贴子已经被作者于2016/9/30 9:12:25编辑过]

--  作者:jyh7081
--  发布时间:2016/9/30 13:14:00
--  
已经很好了,还有点小问题:

1、我把指定文件代码换成文件打开器选择打开,代码写不全,请帮忙一下。

2、假如我在窗体放入一个按钮和一个WebBrowser打开word文档,做好标记后,点击按钮导入该文件。代码怎么改?

3、Case "B:"这句    能不能写成Case "B:" or "GG"  这种双条件选择的形式(意思是满足一种条件就可以)?

谢谢版主!

--------------------
Dim app As New MSWord.Application
Dim s As String = StrToWide(" ")
try
    Dim c As String = "第一列"
    \'Dim doc = app.Documents.Open(ProjectPath&"\\文档.docx")
  
    Dim dlg As New OpenFileDialog 
    dlg.Filter= "Word文件|*.docx" 
    If dlg.ShowDialog = DialogResult.Ok Then
    Dim doc = app.Documents.Open(dlg) 
        
        
        Dim dr As Row = CurrentTable.AddNew
        For Each k As object In doc.Paragraphs
            If Len(Trim(k.Range.text)) > 1 Then
                Select Case k.Range.text.TrimStart(" ",s).SubString(0,2)
                    Case "B:"
                        c = "第二列"
                    Case "C:"
                        c = "第三列"
                    Case "D:"
                        c = "第四列"
                End Select
                dr(c) &= k.Range.text & vbcrlf
            End If
        Next
        
        dr("第一列") = dr("第一列").TrimEnd(vbcr,vblf)
        dr("第二列") = dr("第二列").TrimEnd(vbcr,vblf)
        dr("第三列") = dr("第三列").TrimEnd(vbcr,vblf)
        dr("第四列") = dr("第四列").TrimEnd(vbcr,vblf)
        app.quit
    catch ex As exception
        msgbox(ex.message)
        app.quit
    End try

[此贴子已经被作者于2016/9/30 13:18:08编辑过]

--  作者:有点蓝
--  发布时间:2016/9/30 14:27:00
--  
帮助请看完整,半路抄代码也要理解代码的使用


Dim doc = app.Documents.Open(dlg.FileName

如果都是存储到第二列,可以这样,否则不行
Case "B:","GG"

--  作者:jyh7081
--  发布时间:2016/9/30 15:38:00
--  
谢谢版主!正在学习,只是学的慢点。请包涵!另外:

假如导入当前打开的word文档,“ Dim doc = app.Documents.Open(ProjectPath&"\\文档.docx")” 这句代码怎么改动?
--  作者:有点蓝
--  发布时间:2016/9/30 16:11:00
--  
当前打开的不就是? Dim doc = app.Documents.Open(dlg.FileName)

Dim doc = app.Documents.Open(ProjectPath&"\\文档.docx")指当前项目目录下的文档

--  作者:jyh7081
--  发布时间:2016/9/30 16:45:00
--  
我是这个意思:
在窗体放入一个按钮和一个WebBrowser;把word文档在WebBrowser中打开,做好标记后,点击按钮导入该文件。
--  作者:有点蓝
--  发布时间:2016/9/30 17:02:00
--  
不行,WebBrowser中打开已经占用了这个文件,没有办法在其他地方再操作
--  作者:有点蓝
--  发布时间:2016/9/30 17:14:00
--  
参考下这个


改了下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:webbrowser控制word_测试.table