① GetOpenFilenameメソッドでは、一つのフォルダーからしか選択できません。どのようなUIにするかから、考える必要があります。
例えば、
AフォルダとBフォルダで固定なら、選択ボタン、リストボックス、ラベルをそれぞれ2つ用意する。
あるいは、
任意のフォルダから複数のファイルを選択するなら、リストボックスを2列表示にして、1列目にファイル名、2列目にフォルダーのパスを格納する。GetOpenFilenameメソッド選択したファイルをリストボックスに追加していくようにする。
② PageSetupオブジェクトのBlackAndWhite プロパティをFalseに設定すればいいでしょう。
印刷後に、設定をもとに戻すコードも必要になるでしょう。
③ PrintOut後はOS側に処理が渡されますのでそれをマクロで制御するのは難しいでしょう。
ForループでPrintOutしてますので、その中で、APIのSleep関数で0.5秒ぐらい待機させる。
停止ボタンでフラグを立てて、フラグが立っていたらForループを抜ける、という処理にすれば
それ以降のブックの印刷はキャンセルできます。
Excel VBA を学ぶなら moug モーグ | 即効テクニック | [停止]ボタンでマクロを停止する
追記
このぐらいの要件になると、どのようなUIにするかが重要になってきます。
UIの設計がまずいとユーザーにとって使いにくいものになります。
どのようなUIかいいかは、処理内容や作業手順によって変わってきます。
ファイルの存在するフォルダが数カ所の固定なら、下記のようなUIが考えられます。

0. 一つ目のリストボックスでフォルダーを選択すると、
0. 2つ目のリストボックスにそのフォルダーに存在するファイル名のリストが表示される。
0. そこで印刷したいファイルを複数選択して、➡ボタンのクリックで
0. 3つの目のリストに追加される。
0. それをフォルダーを選択しなおして繰り返す。
0. 3つ目のリストのブックを「印刷」ボタンで印刷する。
ファイルの存在するフォルダーが固定でなく、任意のフォルダーを選択できるようにしたい場合は、上記の①で回答したようにファイルダイアログ(GetOpenFilename)で選択したものをリストボックスにどんどん追加していくというUIが適切と考えられます。

これらはほんの一例です。作業内容を分析して、どのようなUIが適切なのか、ご自身で検討してください。コーディングはUIが決定してからです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。