Re: Freeze Panes VBA Without Select
Short answer to the OP: Yes, you can. Contrary to pretty much everything I've seen on this subject around the web, amusingly enough. For the quick $0.20 answer to a $2.00 question, here's how:
With Windows("My Workbook Name.xlsx")
.SplitColumn = 1
.SplitRow = 1
.FreezePanes = True
End With
The reference you want is the Windows("My Workbook Name.xlsx"). That's the relevant part. The SplitColumn and SplitRow are the just the references to the cells you want to freeze. i.e. SplitColumn 1 is Column "A". SplitRow 3 would be Row 3. Hmmm. What do you think SplitColumn 5 would be? (A,B,C,D,E) Yeah, "E". You get the idea. But it's the Windows("My Workbook Name.xlsx") that you're really asking about here.
Now that I've given you the proverbial fish, I want to at least show the fishing, as it were, though mostly because I really just want to address some of things that have been passed around in this thread (and really, all over the web about this subject).
First thing, the whole "why would you want to?" question.
Short answer: it doesn't matter. I feel that asking that question turns the purpose of the discussion away from "how do you do it?" and towards "can you provide me with an acceptable rationale to try?" It's like I'm on trial for wanting to do something, and it's frustrating to me when it seems like someone is more concerned about convincing someone else that figuring it out isn't worth it. It's like I have to justify my desire to do something before you'll be willing to help me. I don't want to have to justify my desire. I just want to know how to do it. Please don't make me argue my reason for wanting it. Please just say, "Here's how" or "I don't know." (Yeah, perhaps, "Well, depending on what you want to do, there might be a better way" is legitimate, but it almost *never* comes across as helpful.)
Long answer: I'm running code. I like to be able to stop in and troubleshoot a code with the visual aspects of a spreadsheet intact like I did it all manually. That way, it saves me time if I ever have to go back and change/fix/add/alter/whatever something at a later date. I'm constantly learning, and my ability to write code is constantly evolving. If I wrote something a year ago, it's probably with a slightly different mindset on code than I have now. I want to be able to go back and step-through a year-old code, and be able follow exactly what's happening both on the screen and in the code. In order to do that, I want to be able to see it like I would have manually done it. In this case, that involves Freezing Panes at the position I would have if I were doing it manually. No I don't really care all that much whether or not you like my rationale, or if you agree with my reason, or whether you think the color pink looks good on the towels in the bathroom or not. Regardless though, I still want to know how to FreezePanes on a sheet that's not active. Ironically in this case, it's not even on a worksheet that ever gets saved or is even seen by the user. I create the tab in the code on the fly, temporarily use it to parse data, record the data, and delete the tab. But I still want to freeze the panes so I can step-through it later if need be. 
Okay, second thing, really the more fun one, in my opinion, Freeze Panes is Visual, and therefore impossible on an inactive window.
Nah. Everything is binary. There are no "eyes", only "i's", as in "index." Think about it. From what most of us who deal in VBA either already know or are quickly learning, everything either has or is part of an index. Workbooks(Index) - Sheets(Index) - Range (Index) - UserForm.Controls(Index) - Shapes(Index) You get the idea. You can reference the index by either number or name. VBA doesn't really care. It just needs to be pointed to the index associated with the object, and the netherworld of VBA becomes your proverbial oyster.
Now, most of us are familiar not only with the "index" aspect of pretty much every object under the sun in VBA, but also with the "cheating" shortcuts of ThisObject and ActiveObject i.e.: ThisWorkbook and ActiveWorkbook, etc. Really, that's all the "ActiveWindow" is. It's a cheat shortcut to an Indexed Object without referencing the index behind it (or is that "over" it?). Anyway, once I realized that the "ActiveWindow" command was just the cheat shortcut around the direct index catalogue of the object, I figured that the "Windows" object must be indexed just like every other object. So, a little tinkering, and I found that I could reference that Windows index through the name I gave the "Windows" object, just like I do with every other object in VBA.
And voila! I don't need to have ActiveWindow, I can reference Windows(Index). In my current project, I've got a bunch of windows open, and I'm passing information back and forth between them (huge, massive indexed databases with 100's of 1,000's of records with dozens of fields in each record, manipulated through dozens of UserForms, etc.). Like, really big. 100 mb spreadsheets, etc. Not to impress you, just to impress *upon* you that memory is, well, precious at times! So I don't do anything active if I can get away with it. And I pretty much can.
So then I just
to figure out what index I needed to reference, and it returned the index number. Hmmm. Well that's pretty simple! So I plugged in
MsgBox Windows(MyWorkbook.Name).Index
and it returned the index number! Woo-Hoo! Now I'm getting excited, because I'm getting somewhere!
So I played a little more and came up with
MsgBox Windows(MyWorkBook.Name).Caption
and it returned my Workbook Name! (Shocking! I know! That's like asking "What's John's name?" Right?
From there, plugging it in was pretty easy. I set my Workbook variable .Name in the Windows(Index) feature, and I have my
Windows(MyWorkbook.Name).FreezePanes = True
Ah, fascinating! 
From there, I just referenced the SplitRow and SplitColumn index (again, everything's indexed) to tell the VBA what cells to freeze, and suddenly the impossible again returned to I.M.Possible. Pretty much everything is. Whether I have rationale for it that you like or not. 
Lastly, thirdly?, nextly?, (whatever) . . . there's also the UnFreeze To ReFreeze requirement. :roll: ??? Nah. The only reason we have to UnFreeze to ReFreeze manually is because it's a toggle button. It's an on/off switch, but that's just the interface, not the function. Just call it off. If it was off before, it's still off now. Or, just call it on. If it was on before, it's still on now. No reason to toggle it back and forth once you're underneath the GUI (graphic user interface) toggle. Just call it what it is. VBA understands. It's just like setting the .Left, .Top, .Height, or .Width of a UserForm (or any other object for that matter). You don't need to hide it to redefine it. You don't need to unload it. You just . . . redefine it. Same principle.
For what it's worth (or not), there's my rant. There's my solution. There's my two cents on a long-dead, but here-to-fore unsolved thread. Hope it helps someone. Somewhere. Sometime. Somehow. In someway. Eh, probably not, but at least it's fun to fantasize about.
James
(In hindsight, I guess this turned into more of a blog than a post. Would that be a "plog", maybe?) And of course, now I'm playing around with trying to figure out how to freeze panes on a Worksheet that's not even visible. Why do I want do that? I don't. I just started thinking about it while writing all this, and it made me want to know how! 