|
如附件。
1,在excel中写vba:我想在excel中用vba语句统计word文档中以“社会”开头,后面跟着2个任意字的词,即每个词总共4个字,如“社会主义”、“社会和谐”、"社会而奋"(有的不一定是一个有完整含义的词,这个就是这种)等等,并把该文档中所有符合这个要求的这些词依次自动录入到excel首列当中。
2,在word中写vba语句:如果我不在excel中写vba语句,而在word中写vba语句,但还统计到excel中去,又该如何操作合适?
我写了一段代码(在附件表1的代码区),不过根本不能完全解决问题。似懂非懂的感觉,请老师们指点一下,多谢你们的辛苦。
3,如果在excel中在不打开word的情况下达到目的代码和打开word的情况下达到目的代码是否有区别啊,如果有在哪里
数目统计不对, - Sub 统计词语()
- Dim objWord As Object
- Dim strWordfile$
- Dim strFind$, arr
- Dim strWhat$
- Dim blFind As Boolean
- On Error GoTo ErrorHandler
- Application.ScreenUpdating = False
- Do
- strWhat = Application.InputBox(prompt:="请输入要查找的字符串", Title:="提示", Default:="社会", Type:=2)
- Loop Until strWhat <> "False"
- strWordfile = "89.docx"
- Set objWord = GetObject(ThisWorkbook.Path & Application.PathSeparator & _
- strWordfile)
- With objWord.ActiveWindow.Selection.Find
- .ClearFormatting
- .Text = "社会[!^1-^125]{2}"
- .Replacement.Text = ""
- .Forward = True
- .Wrap = wdFindContinue
- .MatchWildcards = True
- Do
- blFind = .Execute
- strFind = strFind & objWord.ActiveWindow.Selection.Text & ","
- Loop Until Not blFind
- End With
- If Len(strFind) > 1 Then
- strFind = Left(strFind, Len(strFind) - 1)
- objWord.Close False
- Set objWord = Nothing
- arr = Split(strFind, ",")
- Columns(1).ClearContents
- Range("a1").Resize(UBound(arr)).Value = WorksheetFunction.Transpose(arr)
- MsgBox "统计完成", vbInformation + vbOKOnly
- End If
- Application.ScreenUpdating = True
- Exit Sub
- ErrorHandler:
- MsgBox Err.Number & vbCrLf & _
- Err.Description
- Application.ScreenUpdating = True
- End Sub
复制代码
|
|