1. 如何用vba提取word單元格指定部分欄位
假如有規律的話可用數組,相對簡單一點,要不用INSTR查找,嗯,就煩了
第一,提取 :之前的字元
DIM s,arr
s="War_ID : SM3766R12-CA88770.9-23"
arr=split(s,":")
msgbox arr(0)
得到的是:分號前的字元串,
第二個 問題
Sub aaa()
Dim s, arr
s = "War_ID : SM3766R12-CA88770.9-23"
arr = Split(s, ":")
s = arr(1)
Set arr = Nothing
arr = Split(s, "-")
MsgBox arr(0)
End Sub
2. vba實現按特定的字元段落拆分word文檔
下面代碼把原文檔按照指定的標識(這里是「END」)進行拆分。拆分之後的文檔生成在源文檔當前目錄下,文件名後面附加「_1」、「_2」、「_3」等。
Option Explicit
Const Token = "END"
Sub SplitDocumentByToken()
Dim oNewDoc As Document
Dim strSrcName As String, strNewName As String
Dim nStart As Integer, nEnd As Integer, nIndex As Integer
Dim fContinue As Boolean
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
strSrcName = ActiveDocument.FullName
nIndex = 1
fContinue = True
Selection.StartOf WdUnits.wdStory
Do While fContinue
nStart = Selection.Start
Selection.Find.ClearFormatting
With Selection.Find
.Text = "^13" & Token & "^13"
.Replacement.Text = ""
.Forward = True
.Wrap = WdFindWrap.wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
If Selection.Find.Execute Then
nEnd = Selection.End
Else
nEnd = ActiveDocument.Content.End
fContinue = False
End If
ActiveDocument.Range(nStart, nEnd).Copy
strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
fso.GetBaseName(strSrcName) & "_" & nIndex & "." & fso.GetExtensionName(strSrcName))
Set oNewDoc = Documents.Add
Selection.Paste
oNewDoc.SaveAs strNewName
oNewDoc.Close False
nIndex = nIndex + 1
Selection.Collapse WdCollapseDirection.wdCollapseEnd
Loop
Set oNewDoc = Nothing
Set fso = Nothing
MsgBox "結束!"
End Sub