|
没有使用正则表达式,纯粹用字符比较。这样可以不用引用更多的库。
思路容易,细节比较繁琐。代码就懒得注释了。
- Sub 格式转换()
- '
- ' 宏在 2015/1/16 Friday 由 刘小军(csnAlex-ExcelHome.net) 编写
- '
- Dim s As String, i As Integer, j As Integer, k As Integer, st As String, mr As Range
- Dim ss As String, sline() As String
- Dim ErrChar() As Variant, oChar As Variant
- ErrChar = Array(".", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", " ", "…")
- ActiveDocument.Paragraphs.Last.Range.InsertBefore " " & Chr(13)
- ActiveDocument.Range(0, 0).Select
- Do Until Selection.End = ActiveDocument.Paragraphs.Last.Range.Start
- s = Selection.Paragraphs(1).Range.Text
- Select Case Left(s, 2)
- Case "标题"
- If i = 1 Then Selection.InsertBefore " " & Chr(13)
- i = 0
- Case "[变"
- i = 1
- Set mr = Selection.Paragraphs(1).Range
- Case " " & Chr(13)
- If i = 1 Then
- mr.End = Selection.Start + 1
- st = mr.Text
- sline() = Split(st, Chr(13))
- j = UBound(sline) - 1
- k = InStr(1, sline(0), "接主变")
- If k > 0 Then
- ss = "【注" & Mid(sline(0), k - 1, 1) & "←主变】如"
- Else
- k = InStr(1, sline(0), "接")
- ss = "【注" & Mid(sline(0), k - 1, 1) & "←注" & Mid(sline(0), k + 1, 1) & "】如"
- End If
- For k = 1 To j
- st = Trim(sline(k))
- If IsNumeric(Left(st, 1)) Then
- If k > 1 Then ss = ss & ","
- st = Replace(st, " ", ",")
- For Each oChar In ErrChar '进行一系列替换,即删除无效字符
- st = Replace(st, oChar, "")
- Next
- ss = ss & st
- Else
- ss = ss & "(" & st & ")"
- End If
- Next
- mr.Text = ss
- End If
- End Select
-
- Selection.MoveDown wdParagraph, 1
- Loop
-
- MsgBox "处理完毕,建议另存文件。", vbInformation + vbOKOnly, "Code By csnAlex-ExcelHome.Net"
-
- End Sub
复制代码
|
|