Excel vbaによってフォルダやその下にあるファイル名のリストを取得する方法

この記事では主に、excel vbaを使用してフォルダを取得する方法を説明します。内容には、EXCEL VBAを使用して、フォルダとサブフォルダ内のすべてのファイルを取得してハイパーリンクを確立する方法、EXCEL VBAを使用してフォルダ内のファイル名を自動的に抽出する方法、およびVBAを使用して現在のEXCELファイルのパスを取得する方法が含まれます。

EXCEL VBAは、フォルダーとサブフォルダー内のすべてのファイルを取得し、ハイパーリンクを作成する

1、まず、新しいエクセルを作成し、好みに名前をつけて、開きます。

2、開いた後、Altキーを押しながらF11キーを押すと、vbaコードエディターが開きます。

3、メニューバーの[挿入]をクリックして、[標準モジュール]を選択すると、左下隅に[Module 1]が表示されます。

4、[Module 1]をダブルクリックすると、右側に[Module 1]の編集インターフェースが表示され、次のコードをコピーして、このインターフェースに貼り付け、F5を押して実行します。

Sub フォルダを検索する()
'Columns(1).Delete

On Error Resume Next

Dim f As String
Dim file() As String
Dim i, k, x
x = 1
i = 1: k = 1
ReDim file(1 To i)
file(1) = InputBox("検索したいフォルダを入力してください:") & "\"

Do Until i >k
f = Dir(file(i), vbDirectory)
Do Until f = ""
If InStr(f, ".") = 0 Then
k = k + 1
ReDim Preserve file(1 To k)
file(k) = file(i) & f & "\"
End If
f = Dir
Loop
i = i + 1
Loop

For i = 1 To k
f = Dir(file(i) & ".")
Do Until f = ""
'Range("a" & x) = f
Range("a" & x).Hyperlinks.Add Anchor:=Range("a" & x), Address:= _
file(i) & f, TextToDisplay:=f
x = x + 1
f = Dir
Loop
Next

End Sub

5、検索するファイルのアドレスをダイアログボックスにコピーし、[OK]を押すと完了です。

EXCELでVBAを使用して、フォルダー内のファイル名を自動的に抽出する方法

まず、VBAによってフォルダを自動的に抽出するためのパスを指定する必要があります。例を挙げます。”F:\ファイル\excel ファイル”

Sub qgrmdtj()

myPath ="F:\ファイル\excel ファイル" 'ファイルパスを変数に定義します
n = 1
myFile = Dir(myPath & "*.*")
Do While myFile <> ""
Cells(n, 1) = myFile
myFile = Dir '次のファイルを検索する
n = n + 1
Loop

End Sub

上記のコードをモジュールにコピーし、F5キーを押して実行すると、結果が列Aに表示されます。

VBAが現在のEXCELファイルのパスを取得する方法

1、まず、Excelワークシートを開き、開発ツールでVBAエディターを開きます。

2、セルにデータを入力します。

3、VBAエディターにモジュールを挿入します。

4、

Sub がファイルのパスを取得します()

Dim filess, tempfile
ss=Application.GetOpenFilename(, , "ファイルを開きます")
If filess=False Then
MsgBox "ファイルを選択していません。プログラムはまもなく終了します!": Exit
Subtemp=Split(filess, "\")。
MsgBox "選択した" & temp(UBound(temp)) & "のパスは:" & Chr(10) & filess _& Chr(10) & "現在のパスは:" & Chr(10) & ThisWorkbook.FullName, vbokonty+64,"戻るパス"

End Sub

モジュールにコードを入力して実行します。

5、[実行]ボタンをクリックすると、[マクロ]ダイアログボックスが表示されます。

ファイルを選択すると、プログラムは選択したファイルのパスをすぐにポップアップし、そして現在のワークブックのパスをポップアップします。

Vbaは、指定されたフォルダーのすべてのフォルダーを読み取る

最初に明確すべきなのは、[現在のパス]は何であるかということです。Officeアプリケーション(WordやExcelなど)で現在開いているドキュメントのパスであるか? または、Officeアプリケーションが配置されているパスであるか?

“”で検索すると、デフォルトでは[ドキュメント]フォルダの最初のドキュメントが返されるようです。.classPathが、PC端末の[ドキュメント]の最初のドキュメントのドキュメント名であるかもしれません。

次の関数は、MsgBoxを使用して、指定されたディレクトリ内のすべてのファイル名を表示します。

Function EnumAllFiles(strPathName As String)

Dim strFileName As String
strFileName = Dir(strPathName & ".")

While strFileName <> ""
If MsgBox("ファイル名" & strFileName & ". 列挙を続けるかどうか?", vbDefaultButton1 Or vbYesNoCancel Or vbQuestion) <> vbYes Then Exit Function
strFileName = Dir
Wend

End Function

EXCEL vbaは、指定されたフォルダー名を読み取り、ループでサブフォルダーを開く

フォルダーを検索するためのキーコードは次のとおりです。

[ツール]–[参照設定]にmicrosoft scripting runtimeのチェックマークを付ける

次の2つの関数を使用して、再帰的に検索します。

sub main()

Dim objFSO As Object
Dim objTemplateFolder As Object
Set objFSO = New Scripting.FileSystemObject
Set objTemplateFolder = objFSO.GetFolder(“D:\”)
getFiles objTemplateFolder

end sub

Sub getFiles(ByRef theFolder As Object)

Dim folder As Object
Dim c As New Scripting.FileSystemObject
'ここで操作を実行します。フォルダを閉じて、名前を取得します。

For Each folder In theFolder.subFolders
getFiles folder 'サブフォルダーを再帰的に検索します。
Next

End Sub

excel vbaが開いているすべてのexcelファイル名を取得する方法

ThisWorkbookオブジェクトのBeforeCloseイベントに対応するため、次のコードを追加します

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim fileStr As String
fileStr = "$111.xls$333.xls$“ '最初と最後は$で分割し、ファイル名はループに検索します。

For I = Workbooks.count To 1 Step -1
If InStr(fileStr, Workbooks(I).Name) <> 0 Then Workbooks(I).Close False 'Falseは保存せずに閉じる trueは保存して閉じる
End If
Next

End Sub

閉じるとき、開いているすべてのExcelファイルを検索し、操作を保存せずに閉じます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です