Home > Software design >  Getting text from header columns
Getting text from header columns

Time:02-11

I have an MS Word document with a three-column header like in the screenshot below. Please advise a VBA macro to get the text in each of the columns (in my case "foo", "bar" and "baz").

So far I have tried

Sub Test()
  MsgBox Documents(1).Sections(1).Headers(wdHeaderFooterPrimary).Range.Text
End Sub
enter code here

, but it returns text with zeros ("foo0bar0baz"), which seems not to be suitable to break this text in general case, when the column texts themselves can contain zeros (e.g. "foo0", "0bar00" and "0baz").

enter image description here

CodePudding user response:

You use the Split function to create an array of the text. You will need to know what character has been used to separate the columns. It will probably be either a normal tab or an alignment tab.

For a normal tab:

Sub SplitHeader()
   Dim colHeads As Variant
   colHeads = Split(ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text, vbTab)
   Debug.Print colHeads(0)
   Debug.Print colHeads(1)
   Debug.Print colHeads(2)
End Sub

For an alignment tab:

Sub SplitHeader()
   Dim colHeads As Variant
   colHeads = Split(ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text, Chr(48))

End Sub
  • Related