• ベストアンサー

エクセル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列に取得したところで行き詰ってます・・・。 ご教授願えると嬉しいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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

aa723aa
質問者

お礼

満足な結果を得ることがでしました。 すんなりと納得のいく回答に感謝しています。 ありがとうございました!

その他の回答 (2)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

A列に表示されているブックは開いた状態であれば 取得したブック名がA列に表示されていない場合のみB列に表示 とか A列の最終行を最初に取得して、その数までブック名を取得したらB列に移動して書き込む とか 今ちょっと手が離せないので、マクロまでは作れないので考え方のみになってしまいますが。

aa723aa
質問者

お礼

お忙しいにも関わらず、アドバイスをありがとうございました。 色々な方法があるのですね!まだまだ勉強と柔軟な考え方が必要だと感じました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

現在のマクロはどのような形式でしょうか? マクロ自体を補足で提示してもらえれば回答を得られやすいと思いますよ。

aa723aa
質問者

補足

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 こんな感じなところでとまってます。

関連するQ&A