- ベストアンサー
エクセルVBAでのブック名の取得について。
こんにちは。よろしくお願いします。 自身:a.xls 他:1.xls、2.xls、3.xls 上記全てを開いた状態で、a.xlsのA列に、a.xls以外のブック名を文字列として取得しました。 A 1.xls 2.xls 3.xls この状態で、更に、 追加:11.xls、12.xls、13.xls というブックを開いた場合(1、2、3は開いたまま)に、B列に上記3つのみのブック名を文字列として取得したいと考えています。が、A列に取得したところで行き詰ってます・・・。 ご教授願えると嬉しいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
取得したブック名がA列に無い事をCOUNTIFで確認してからB列に貼り付ける…で、良いと思います。 こんな感じで……。 Sub test() Dim wb As Object Dim i As Integer i = 1 For Each wb In Workbooks If wb.Name <> ActiveWorkbook.Name And Application.WorksheetFunction.CountIf(Range("A:A"), wb.Name) = 0 Then Cells(i, 2).Value = wb.Name i = i + 1 End If Next End Sub End Sub
その他の回答 (2)
- web2525
- ベストアンサー率42% (1219/2850)
A列に表示されているブックは開いた状態であれば 取得したブック名がA列に表示されていない場合のみB列に表示 とか A列の最終行を最初に取得して、その数までブック名を取得したらB列に移動して書き込む とか 今ちょっと手が離せないので、マクロまでは作れないので考え方のみになってしまいますが。
お礼
お忙しいにも関わらず、アドバイスをありがとうございました。 色々な方法があるのですね!まだまだ勉強と柔軟な考え方が必要だと感じました。
- web2525
- ベストアンサー率42% (1219/2850)
現在のマクロはどのような形式でしょうか? マクロ自体を補足で提示してもらえれば回答を得られやすいと思いますよ。
補足
Sub test() Dim wb As Object Dim i As Integer i = 1 For Each wb In Workbooks If wb.Name <> ActiveWorkbook.Name Then Cells(i, 1).Value = wb.Name i = i + 1 End If Next End Sub こんな感じなところでとまってます。
お礼
満足な結果を得ることがでしました。 すんなりと納得のいく回答に感謝しています。 ありがとうございました!