宏基于标题和周围文本将数据从Word复制到Excel

问题描述 投票:0回答:2

我是vba和宏观制作的新手,所以我想请求帮助。基本上,我得到一个MS Word文件,每周包含30个案例,我必须获取一些数据并将它们放在excel中的列下。我想自动完成这项任务。

基本上MS word文件看起来像这样:

https://imgur.com/a/0msJs

复制这些项目需要花费很多时间。

我在考虑两种方法:

  1. 在标题和引文上添加标签,因为它们实际上没有任何标题或任何可以区分它们的标题:/标题A与B和/或引用123 A.B.C. 234(图中黄色和紫色突出显示)。并指示宏在/ title和/ cite之后采用段落。
  2. 指示宏在“OVERVIEW:”之后查找整个段落,因为此数据由此字符串区分。

简介:我希望宏在MS Word上运行,将所有案例标题(黄色)复制到现有Excel工作表的列中,将所有引用(紫色)复制到另一列,将所有概述(红色)复制到另一列,等等

使用示例excel和word文件:file

注意:上面附带的文件中的案例名称和排列不匹配,因为我已经编辑并排序了excel文件。我只需要宏来复制数据,然后我会稍后对其进行排序。 MS Word按原样出现。

excel vba excel-vba ms-word
2个回答
0
投票

我不打算为你编写代码,但为了让你开始使用这段代码,如果粘贴到Word中的vb模块中,会将当前word文档中的任何选定文本复制到excel中的空白电子表格中。

Sub copytext2XL()
Dim r As Range 'nb this is a Word range, not an Excel range
Dim xl
Dim wb, ws, xlr
Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.workbooks.Add
Set ws = wb.worksheets(1)
Set xlr = ws.Range("a1")

Set r = Selection.Range
 r.Copy
 xlr.PasteSpecial 3

End Sub

0
投票

我会说你需要将所有内容都放到Excel中。

Sub Sentence_Click()

Dim num As Variant
'Microsoft Word object
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Word document object
Dim WordNam As String
WordNam = "C:\Users\Excel\Desktop\September Week 1 2017.docx"

'Open word document
objWord.Documents.Open WordNam
j = 1
n = objWord.Documents(WordNam).Paragraphs.Count
For Each num In Array(7, 13, 23)
For i = 1 To n
    If i = num Then
        ThisWorkbook.Worksheets(1).Cells(j, 1) = objWord.Documents(WordNam).Paragraphs(i)
        Debug.Print num
        j = j + 1
    End If
Next i
Next num
'Close objects
objWord.Documents.Close
objWord.Quit SaveChanges:=wdDoNotSaveChanges


End Sub

然后以您选择的任何方式解析Excel中的数据。

如您所见,我是基于段落编号导入的,而不是基于颜色。我想你加了那些颜色;我不认为这份文件会像你那样来找你。

© www.soinside.com 2019 - 2024. All rights reserved.