Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2460 / 13646 ツリー ←次へ | 前へ→

【67900】フォルダーからファイル名を取得 koko 11/1/15(土) 8:40 質問[未読]
【67901】Re:フォルダーからファイル名を取得 Yuki 11/1/15(土) 9:09 発言[未読]
【67904】Re:フォルダーからファイル名を取得 koko 11/1/15(土) 11:12 質問[未読]
【67907】Re:フォルダーからファイル名を取得 Jaka 11/1/15(土) 15:41 発言[未読]
【67909】Re:フォルダーからファイル名を取得 Yuki 11/1/15(土) 19:54 発言[未読]
【67910】Re:フォルダーからファイル名を取得 koko 11/1/16(日) 9:14 お礼[未読]

【67900】フォルダーからファイル名を取得
質問  koko  - 11/1/15(土) 8:40 -

引用なし
パスワード
   1つのフォルダーの中に50から60のファイルがあります
このファイル名を全て取得してファイル名一覧表を作成しようと
思っています
1つずつ選択してPathを削除したファイル名を取得してセルに書き入れる
ことは出来たのですが
一括取得してセルに書き入れることができればと思っています
よい方法がありましたら教えていただきたいのですが
よろしくお願いいたします

【67901】Re:フォルダーからファイル名を取得
発言  Yuki  - 11/1/15(土) 9:09 -

引用なし
パスワード
   ▼koko さん:
>1つのフォルダーの中に50から60のファイルがあります
>このファイル名を全て取得してファイル名一覧表を作成しようと
>思っています
>1つずつ選択してPathを削除したファイル名を取得してセルに書き入れる
>ことは出来たのですが

これはどのようにして取得されているのですか?

>一括取得してセルに書き入れることができればと思っています
>よい方法がありましたら教えていただきたいのですが

一括取得とはどのような意味でしょうか。
配列にいれて一括で表示みたいな方法ですか?

【67904】Re:フォルダーからファイル名を取得
質問  koko  - 11/1/15(土) 11:12 -

引用なし
パスワード
   ▼Yuki さん:
>これはどのようにして取得されているのですか?

 テキストボックスからフォルダーにあるファイルを一つ選択して
 Path名を削除しました
 以下のようにして一つずつ選択をして処理をしています
Private Sub CommandButton1_Click()
Dim Ex_Name As String
Dim LastRow As Long
   UserFormFile.TextBoxFile = Get_OpenFile
   Ex_Name = GetFileName(TextBoxFile.Text)
   LastRow = Range("C65536").End(xlUp).Row
   ThisWorkbook.Worksheets("File").Cells(LastRow + 1, 3) = Ex_Name
End Sub
Function GetFileName(ByVal F_NAME As String) As String
  Dim F_Cnt As Integer
  Dim F_Instr As Integer
  Do
    If InStr(1, F_NAME, "\") = 0 Then
      Exit Do
    Else
      F_NAME = Trim(Mid(F_NAME, (InStr(F_NAME, "\") + 1)))
    End If
  Loop
  GetFileName = F_NAME
End Functio

>一括取得とはどのような意味でしょうか。
>配列にいれて一括で表示みたいな方法ですか?

一つずつ選択するのではなくフォルダーにある全てのファイルを取得して一度に処理をしたいのです
配列に入れてもかまいません

よろしくお願いします

【67907】Re:フォルダーからファイル名を取得
発言  Jaka  - 11/1/15(土) 15:41 -

引用なし
パスワード
   Sub xlsファイル出力Dir()
Dim SarchFile As String, Gy As Long
Dim FldNm As String
FldNm = CreateObject("WScript.Shell").SpecialFolders("Desktop")
SarchFile = Dir(FldNm & "\*.xls")
Gy = 0
Do Until SarchFile = ""
  Gy = Gy + 1
  Cells(Gy, 1).Value = SarchFile
  SarchFile = Dir()
Loop
If Gy = 0 Then
  MsgBox Dir(FldNm, vbDirectory) & "内にxlsファイルはありませんでした。"
End If
End Sub

Sub getF()
検索フォルダ = CreateObject("WScript.Shell").SpecialFolders("Desktop")
With CreateObject("Scripting.FileSystemObject")
  For Each FNM In .GetFolder(検索フォルダ).Files
    Ct = Ct + 1
    Cells(Ct, 1).Value = FNM.Name
  Next
End With
End Sub

【67909】Re:フォルダーからファイル名を取得
発言  Yuki  - 11/1/15(土) 19:54 -

引用なし
パスワード
   ▼koko さん:
配列にいれて一度にシートに貼り付けています。
ホルダー選択のダイアログも出して起きます。
Sub GetFileNm()
  Dim strDir     As String
  Dim FNM
  Dim i        As Long
  Dim objFileDialog  As FileDialog
  Dim varFiles    As Variant
  ' ホルダー選択
  Set objFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
  With objFileDialog
    .Filters.Clear 'フィルターのクリア
    .InitialFileName = CreateObject("WScript.Shell").SpecialFolders("Desktop")
'    .Filters.Add "Excelワークブック", "*.xls" 'フィルターの設定1
    .Show 'ダイアログの表示
    If .SelectedItems.Count > 0 Then
      strDir = .SelectedItems(1)
    End If
  End With
  Worksheets("File").Cells.ClearContents
  If strDir = "" Then Exit Sub
  ' ホルダ内容のセット
  With CreateObject("Scripting.FileSystemObject").GetFolder(strDir)
    ReDim varFiles(1 To .Files.Count, 1 To 1)
    For Each FNM In .Files
      i = i + 1
      varFiles(i, 1) = FNM.Name
    Next
  End With
  Worksheets("File").Range("A1").Resize(UBound(varFiles)).Value = varFiles
End Sub

【67910】Re:フォルダーからファイル名を取得
お礼  koko  - 11/1/16(日) 9:14 -

引用なし
パスワード
   ▼jakaさん;yuki さん:
早速利用させていただきましところ
大変うまくいきました
ご丁寧にありがとうございました
助かりました

2460 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free