OK, then in light of your desire to experiment, the answer to your original question works like this...
The object model for a table is that the AllTables collection holds all tables. (Microsoft believes in simple names.) If you wish to pass a table by its name, then in the place where you use it you can reference AllTables(name) as though it were [name] and you would get similar results. Each table has a collection of Fields. If you pass the name of the field, you have to know the name of the table because Fields collections are specific to the table of reference. So this becomes AllTables(tablename).Fields(fieldname) to get to a field, where both tablename and fieldname can be passed by name to get the effect of [tablename].[fieldname] - and of course, from there you can delve into properties, because each field has properties that could be referenced indirectly this way.
So... YES, you can pass table names and field names. Forms have collections of Controls, so again you can pass control names - but they are specific to forms, which are in the AllForms collection. Hope you see the direction this is going. Also be it noted that if diddling with forms, you have to test whether the form is open first. If it is not, the form's contents, including the controls, are not accessible.
A word of warning... there is a group of tables, many of which start with MSys, that are the internal structural tables used by Access to define your schema, relationships, and many other factors. They are generically called "the system tables." By default, they do not show up in the navigation pane. DO NOT EVER write to one of those tables. You could potentially destroy the database. DO NOT EVER delete one of those tables. You WILL destroy the database.
There are also ways to pass the actual object (By Reference) to a subroutine. Not a name... but an instantiated object (technically, a pointer) variable. Access usually gives you several ways to get from point A to point B.