Code isn't a bunch of executable strings. You can't "execute" or "invoke" a string literal.
purch
Isn't a valid executable instruction, regardless of whether the value of that variable contains perfectly valid VBA code - as far as VBA is concerned, that's not code, that's a local variable, nothing more... the compiler is telling you that it doesn't know what to do with an instruction that does nothing.
I am attempting to break up the row into a Purchase object for each budgetCode
You'll soon learn that a Type isn't an object, and won't play well with a Collection. Also, with 370 columns in a pivoted recordset, you're making your life much harder than it needs to be. If you mean to iterate budget codes, make your query return the budget codes and iterate that.
You'll need a class module - in its simplest form, it could be just a bunch of public fields:
'class PurchaseItem
Public ID As Long
Public Name As String
Public PurchaseDate As Date
Public BudgetCode As String
Public TransactionCode As String
'...
Now as you iterate your recordset, you create a New PurchaseItem every time, and Add it to a Collection:
Dim items As Collection
Set items = New Collection
Dim current As PurchaseItem
Do While Not rst.EOF
Set current = New PurchaseItem
current.ID = rst.Fields("ID").Value
current.Name = rst.Fields("Name").Value
current.PurchaseDate = rst.Fields("Date").Value
current.BudgetCode = rst.Fields("BudgetCode").Value
current.TransactionCode = rst.Fields("TransactionCode").Value
'...
items.Add current
rst.MoveNext
Loop
And now you have all your items in the items collection.
As Purchase?Dimstatements aren't executable. What are you trying to achieve exactly?Collection.