A few years ago at a conference, an erstwhile colleague who was giving the keynote presentation referred to “My ex-colleague Terry Freedman, the Excel guru.” While flattering, it was more the case that I made a great deal of use of, at the time, Visual Basic and Visual Basic for Applications. It so happened that most of the applications I created were in Excel, but that was not exclusively the case.
For example, I created a project management program in Microsoft Access because the ones available off the shelf were far too fully-featured for my requirements. I wanted a simple application that would enable me to easily assign tasks to people and people to tasks in a team of around six people. True, I could have used a spreadsheet, or the back of a few envelopes, but I wanted to use the relational database functionality to ensure that a change to one variable would be instantly reflected everywhere else.
I also created a lesson planner in Word that made generating a lesson plan a job of minutes. This was back in the days when school inspectors and some headteachers expected deetailed lesson plans for every lesson. The most important thing, of course, was in the thinking, but having to write out a hugely detailed lesson plan for five lessons a day, five days a week, was simply awful. Therefore I devised a planner that entailed filling in a form, using drop-down menus as much as possible, and then clicking ‘OK’. The VBA then kicked in and squirted all the information from the form into a pre-formatted lesson plan template and saved it as a document — the teacher didn’t even have to specify what to call it or where to save it, unless they wanted to.
I very much enjoyed figuring out how to do this kind of thing, but twenty odd years later I find myself in the same mode of thinking as James Somers, who writes, in an article in the New Yorker:
I couldn’t have put it better myself. My usual procedure was to figure out what I wanted the application to do, drawing it out in flowcharts if it was super complicated, and then working out how to actually make it happen. Sometimes this entailed applying what I already knew, but other times it would require a trawl on the internet (on websites or forums dedicated to VBA in specific applications), finding something that was similar to what I wanted to do, tweaking it, and then testing it.
The process took place over several days, because I did have other work to do, and often I would play around with it in my own time. This investment was worth it in the end because the applications I created made everybody’s life easier and enabled us to do more than we could have otherwise with very little effort. Above all, there was a huge sense of achievement at the end of it, and I have to say that I was not averse to the acclaim I received! I also enjoyed the process whereby someone else on the team would say, “It would be great if the program would let me do X”, to which I’d respond, “OK, let me see if I can make that happen.” I don’t recall a time that I couldn’t, and the finbished product was always better as the result of thiis type of collaboration.
But enter ChatGPT. For the purposes of this article I asked ChatGPT:
Tell me how to create a user form in Microsoft Word that will enable the user to fill in certain fields or select from drop-down menus and then have the answers inserted into a document and formatted properly
Here’s the response:
Creating a user form in Microsoft Word involves using form controls such as text fields, drop-down menus, and checkboxes. Follow these steps to create a user-friendly form:
Enable Developer Tab:
Go to the "File" tab and select “Options.”
In the Word Options dialog box, choose "Customize Ribbon.”
Check the "Developer" option in the right column.
Click "OK" to enable the Developer tab.
Insert Form Controls:
Go to the "Developer” tab.
Click on "Design Mode" to enable form design.
Click on the control you want to insert (Text Box, Combo Box for drop-downs, etc.) under the "Controls” group.
Text Boxes:
Insert text boxes for open-ended responses.
Click "Rich Text Content Control" for more formatting options.
Combo Boxes (Drop-down Menus):
Insert a Combo Box from the "Controls" group on the Developer tab.
Right-click on the Combo Box and choose "Properties" to set the list items.
Checkboxes:
Insert checkboxes from the "Controls” group.
You can group related checkboxes together.
Content Controls Properties:
Right-click on each control and select "Properties" to set default values, formatting, and more.
Protect the Document:
Go to the "Developer" tab and click on "Protect Document.”
Choose "Filling in forms" to allow users to fill in the form.
Add Instructional Text:
Use regular text or add content controls with instructional text to guide users.
Design the Document:
Design the document around the form controls, leaving space for user input.
Test the Form:
Exit design mode and test the form. Users can now fill in the fields, select from drop-down menus, and check checkboxes.
Retrieve Form Responses:
After users have filled in the form, you can access the responses:
Navigate to the "Developer" tab, click "Design Mode" to disable it.
You can now see and interact with the filled form.
Automate Formatting (Optional):
You can use VBA (Visual Basic for Applications) to automate the formatting of responses. This requires some programming knowledge.
Remember, creating a user form with Microsoft Word can be limited in terms of functionality compared to dedicated form-building tools or applications. If you need more advanced features or data processing, consider using Microsoft Excel or other dedicated form-building platforms.
Not bad, but somewhat lacking in specifics. So I asked a supplementary question:
How can I use VBA to take the responses from a form and put them into a document in the correct places.
Again, here is ChatGPT’s response:
Using VBA (Visual Basic for Applications) in Microsoft Word, you can automate the process of taking responses from a form and placing them in specific locations within the document. Here's a basic example to get you started:
Open the Word Document:
Open your Word document that contains the form.
Access the Developer Tab:
Go to the "Developer” tab.
Open the VBA Editor:
Click on "Visual Basic" to open the VBA editor.
Insert a Module:
Right-click on any item in the Project Explorer on the left and select "Insert" -> "Module." This is where you'll write your VBA code.
Write the VBA Code:
Use the following example code as a starting point. This code assumes you have form fields named "TextBox1" and "ComboBox1" in your document. Adjust the field names and document structure according to your specific setup.
Sub PopulateDocument()
' Access the form fields
Dim txtBox As ContentControl
Dim comboBx As ContentControl
' Set references to specific form fields by their titles
Set txtBox = ActiveDocument.SelectContentControlsByTitle("TextBox1")(1)
Set comboBx = ActiveDocument.SelectContentControlsByTitle("ComboBox1")(1)
' Get user input (responses from the form)
Dim userResponseTextBox As String
Dim userResponseComboBox As String
userResponseTextBox = InputBox("Enter text:”)
Run the Code:
Close the VBA editor and run the code by pressing F5 or selecting "Run" from the "Run” menu.
So there you go: hours or even days of figuring stuff out reduced to literally four minutes. You can see why I felt a sense of loss, of redundancy. All those hard-earned skills — not just in VB or VBA but also Python, Java and, to a lesser extent, JavaScript, not to mention the old BASIC — simply not needed any more.
Nevertheless, I take solace from the conclusion Somers comes to:
I think he is right, and I see this as analogous to the writing sphere. I’ver thought for a long time now that as ChatGPT and its ilk are used more and more for creating texts, extracting data and summarising texts, those of us who are pretty good at wielding a pen or a keyboard in a way that moves people will be in even more demand. I don’t care that ChatGPT can do a better job than I can at some tasks, because I don’t want to do those tasks anyway.
I also think, if Somers and his friend are right, that I have been vindicated in my belief that the pronouncements of so-called and often self-styled education gurus at conferences were frequently inconsistent. Their ‘argument’ was always along the lines of:
By the time the kids who are entering your school now are leaving, the jobs they will be doing are ones we cannot even imagine now. Therefore we must make sure they can do programming.
Well I’m sorry, but if the first sentence is true then the second sentence doesn’t follow logically in my opinion. Maybe computational thinking would be useful to teach and for some students to learn, but it’s inconceivable that every students would need to leave school as a skilled programmer. It would be a lot better, in my opinion, if they learnt so-called soft skills such as how to collaborate with people, and how to find out information that they may be so familiar with that they’ve forgotten how vital it is. This is the pink slip problem.
Also, to learn how to use tools like ChatGPT to maximise their effectiveness. After all, ChatGPT et al may be brilliant, but the old adage garbage in garbage out must still apply. At least until AI can actually think for us before we’ve asked it a thing!
You may also be interested in reading 9 incredibly useful AI resources