みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル マクロ ファイル名の(追加)取得

エクセル2010を使用しています。
VBA(マクロ)で以下の作業を実行したいと考えていますが、
初心者につき、ご教示いただけますでしょうか。

現在、マクロ実行ファイル(エクセル)と同じフォルダ内にあるファイルの
ファイル名を全て(マクロ実行ファイルに)記載する
というマクロを使っています。
※以下です。

Sub ファイル名取得()
FolderPath = Cells(10, 7).Value 'パスは、G10セルから読み込む
buf = Dir(FolderPath & "\*.*")
cnt = 9 '実施行-1行目を指定
Do While buf <> ""
If (buf Like "*.xls?") And buf <> ThisWorkbook.Name Then
cnt = cnt + 1
Cells(cnt, 6) = buf 'F10からファイル名を記載
End If
buf = Dir()
Loop
End Sub

現在、このマクロだと都度「上書き」になっているのですが
使用上の都合で
上記を実行して記載されたファイル名に
「追加」することもできると助かるのに・・と考えています。
※以下「2」を質問させていただています!
→1.マクロファイルと同じパスにあるファイルのファイル名を取得(記載):上記マクロで実行中
→2.1を実行後、同パスにファイルを追加し、ファイル名取得(記載)も1の後に追記

上記マクロは上記として、別途「追加」機能としてのマクロ(VBA)でも構いませんし、
上記を変更して「追加」にも対応できるマクロ(VBA)でも構いません!

具体的にイメージできていないまま質問してしまっているかもしれないので、
いくつかケース(構造)があるようでしたら、
ご面倒でなければ
どのような動きがスムーズなのか?
エラーが出にくいのか?等
併せて ご教示いただけますと、幸いです。

尚、説明がわかりにく等あれば
当然、補足させていただきますので、
ご指摘ください!

よろしくお願い致します。

投稿日時 - 2016-12-06 14:38:39

QNo.9264690

困ってます

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

こんにちは
Sub ファイル名取得()
  Dim FolderPath As String
  Dim buf    As String
  Dim cnt    As Long
  Dim v     As Variant
  
  FolderPath = Cells(10, 7).Value 'パスは、G10セルから読み込む
  buf = Dir(FolderPath & "\*.*")
  cnt = Range("F" & Rows.Count).End(xlUp).Row
  cnt = IIf(cnt < 9, 9, cnt)
  Do While buf <> ""
    If (buf Like "*.xls?") And buf <> ThisWorkbook.Name Then
      v = Application.Match( _
          buf, Range("F1", Range("F" & Rows.Count).End(xlUp)), 0)
      If IsError(v) Then
        cnt = cnt + 1
        Cells(cnt, 6) = buf
      End If
    End If
    buf = Dir()
  Loop
End Sub
こんな感じですか?

投稿日時 - 2016-12-06 15:03:23

お礼

いつもご親切にありがとうございます!
質問の内容だと補足が必要なのか不安だった箇所すら
問題無くスムーズに動くものでした!!
ありがとうございます!!!

IF文(IIF)を使って 追加の想定をしたり、
vと変数を置いて 既にあるファイル名かを確認しているんですかね。
いつも勉強になります!


本当にありがとうございました!!!!!!

投稿日時 - 2016-12-06 15:30:46

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問