A preprocessor will avoid virus threats and, the users of your local spreadsheet only have to do the "normal" things to enable content and macros. (Usually, just once, unless the spreadsheet is resaved under a different name or moved to a different folder.)
Anyway, a "Hello, World" exmple would not do justice to the concept of a preprocessor; however, here is a brief outline of what you might do to recreate "Hello, World":
1. Server provides a string. "DISPLAY,<quote>Hello<comma>World<quote>,Destination"
2. Local spreadsheet downloads string aand passes it to the preprocessor
3. Preprocessor parses the string as COMMAND, arguments
a. COMMAND = DISPLAY
b. argument 1 = <quote>Hello<comma>World<quote>
c. argument 2 = Destination
4. Preprocessor looks up COMMAND in its dictionary (or simple Case statements)
5. When Preprocessor finds DISPLAY, it calls the Display macro
a. The preprocessor doesn't know how many arguments any command needs
b. It is best to let each command macro grab the arguments
6. The Display Macro looks for two arguments and throws an exception if one is missing
a. Alternatively, each macro can have defaults
b. For example, if only one argument is available to the Display Macro, it is assumed to be the content and the default destination might be the ActiveCell.
7. The Display macro outputs the content to the valid destination
That's it. LOL
Of course, there is error-checking, argument stacking, nesting levels tracking (to allow for IF-THEN-ELSE and DO LOOP constructs.)
This is not trivial. I am very curious as to what use case requires an interpreter or a macro injection scheme? I am willing to wager that, if your project involves data manipulation, you can achieve your goals without overtaxing Excel VBA, which is slow enough as it is.
If you can share a bit of information about your project, perhaps we can suggest alternate ways to do things.
I do realize that, sometimes, you just have to write your own scripting language. I've done a couple, but they were mostly a labor of love. And, they never got completely done. I started in VB6 and, by the time it was useful, VB.net had been released and it was doing all the stuff I had to write code for! DOH!