When it comes to programmatically working with documents, I'm all about Google Docs, Sheets and Slides. But I recently found myself needing to step over to the Dark Side and write some code to interact with Microsoft Word. After a quick Visual Basic for Applications (VBA) refresher, I managed to eek out the code I needed. Surprisingly, I found myself impressed by the capabilities VBA offers. The API is massive and appears to let you automate nearly everything related to Word Docs. I suppose being an ancient and archaic incredibly mature product has its benefits.
In the interest of leaving breadcrumbs for myself, or for helping some other soul who finds themselves needing to write some Word VBA code, I'm publishing a bit of test code I wrote while tackling my project. It's CS 101 level stuff: iterate through the currently selected table and display the max and min numeric values found. But given how rusty my VBA skills are, working through this example was quite helpful.
Here's the code:
Sub TableInfo() minVal = 0 maxValue = 0 Dim t As Table If Selection.Tables.Count > 0 Then Set t = Selection.Tables(1) t.Range.Copy For Each r In t.Rows For Each c In r.Cells v = Left$(c, Len(c) - 2) v = Replace(v, "$", "") v = Replace(v, ",", "") If IsNumeric(v) Then If Val(v) > maxValue Then maxValue = Val(v) End If If minValue = 0 Or Val(v) < minValue Then minValue = Val(v) End If End If Next Next MsgBox "Min: $" & Format(minValue, "##,##") & ", Max: $" & Format(maxValue, "##,##") Else MsgBox "You're not currently on a table." End If End Sub
And here's a screenshot, note the new toolbar item I added:
You can download the Word file containing the code here. Happy Hacking!
No comments:
Post a Comment