2019-06-26ねぇもりさん、Excel作業をマクロ化したいんだけどさ、処理対象のファイルの形式(.xlsx)は変えたくないんだよねもりそれなら、「処理対象のファイル」と「マクロファイル」を分けようExcel作業をマクロで自動化するには、おもに2つのパターンがありますね。分ける方法を紹介します。GetOpenFilenameメソッドで「ファイルを開くダイアログ」を出現させ、ユーザが処理対象のファイルを選択する→そのファイルに対してマクロ処理するという流れです。スポンサーリンクContentsユーザが選択したファイルに対して処理を実行する方法1ファイルに対して処理をする複数ファイルを一括選択・処理するユーザが選択したファイルに対して処理を実行する方法1ファイルに対して処理をするまずはこのパターンです。"キャンセルしました。"キャンセルしました。Subマクロを実行すると、ファイルを開くダイアログが登場します。変数fNameには、選択したファイルのフルパスが格納されます。ファイルが選択されなかった場合(ユーザがキャンセルした場合)、文字列型のFalseが返ります。GetOpenFilenameメソッドは、「ユーザが指定したファイルのフルパス」を取得するのみで、ファイルを開く操作までは行いません。ファイルを開く処理は、WorkBooks.Openメソッドで実行します。Workbooks.Open(fName)で、「開いたファイル」を「変数wb」にオブジェクトとして格納するので、あとはwbに対する処理を記述すればOKです。World"ユーザが選択したファイル(wb)に対して、ちゃんと処理が実行されているのを確認できます。複数ファイルを一括選択・処理するユーザが選択した複数のファイルに対して、同一の処理を繰り返し行うパターンです。社内の各部署から回収した同一形式のExcelファイルに対して同一のマクロを実行する場合、1ファイルずつ選択するのは面倒くさいですよね。下記のように、複数ファイルをまとめて処理することも可能です。"キャンセルしました。"キャンセルしました。Subファイルを開くダイアログで、処理対象のファイルをすべて選択します。押しながらファイルを選択します。MultiSelect:=True(複数ファイル選択可)とした場合、その返り値は「配列形式」です。そのため、あらかじめ変数fNameをVariant型で宣言しています。ユーザがキャンセルした場合はBoolean型のFalseが返ります。GetOpenFilenameの返り値が「配列形式」という特性を利用して、「変数fNameが配列であるか否か」でキャンセル判定をします。した場合、選択されたファイルが1つのみでも、返り値は配列形式です。まとめ「ファイルを開くダイアログ」を使うと、処理対象のファイルとマクロファイルを分けることができる。もりさんのプログラミング。