① VBA獲取某文件夾下所有文件和子文件目錄的文件
【引用位置】 https://blog.csdn.net/pashine/article/details/42100237
'-------------------------------------------
'獲取某文件夾下的所有Excel文件
'-------------------------------------------
Sub getExcelFile(sFolderPath As String)
On Error Resume Next
Dim f As String
Dim file() As String
Dim x
k = 1
ReDim file(1)
file(1) = sFolderPath & ""
End Sub
'-------------------------------------------
'獲取某文件夾下的所有文件和子目錄下的文件
'-------------------------------------------
Sub getAllFile(sFolderPath As String)
'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) = sFolderPath & ""
'-- 獲得所有子目錄
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) & " . ") '通配符 . 表示所有文件,*.xlsx Excel文件
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
Sub Read_Word()x0dx0aDim worDoc As objectx0dx0aDim wordappl As objectx0dx0aDim mydoc As Stringx0dx0aDim myappl As Stringx0dx0amydoc = thisworkbook.path & "\" & "文件名.doc"x0dx0a'本文檔目錄下的doc文件,這里可以直接改成路徑+文件名的形式x0dx0aSet wordappl = CreateObject("Word.application")'設置wordappl對象x0dx0aSet worDoc = wordappl.Documents.Open(mydoc)x0dx0a'打開word文檔,mydoc變數指定路徑和文件名x0dx0aworDoc.Activate'激活打開的文檔x0dx0awordappl.Selection.WholeStory '全選文檔x0dx0awordappl.Selection.Copy'復制選擇內容到剪貼板x0dx0aworDoc.Application.Quit'關閉word文檔x0dx0aSet WordApp = Nothing'釋放對象變數的內存x0dx0aWorkbooks(1).Sheets(2).Activate '激活excel第一個工作簿的第二個工作表x0dx0aActiveSheet.UsedRange.Clear'把當前工作表清空,如果有重要數據,這條刪除x0dx0aCells(1, 1).Select'選擇A1單元格x0dx0aActiveSheet.Paste'粘貼復制的內容x0dx0awordappl.quitx0dx0aset wordappl =nothingx0dx0aEnd Sub
③ 如何在Excel中用VBA創建文件夾
方法/步驟
1
方法1:使用VBA的MkDir語句創建文件夾。
代碼如下:
Sub xyf()
On Error Resume Next
VBA.MkDir ("c:/例子")
End Sub
其中 VBA.MkDir ("c:/例子")表示在C盤創建一個名為「例子」的文件夾
On Error Resume Next語句表示如果已經有這個文件夾,則不創建。
如下圖所示:
④ vba讀取文件夾中的文件名
提取當前文件夾下的文件名稱並放在A列
Sub 按鈕1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("scripting.filesystemobject")
Set ff = fso.getfolder(ThisWorkbook.Path) 'ThisWorkbook.Path是當前代碼文件所在路徑,路徑名可以根據需求修改
ActiveSheet.UsedRange.ClearContents
a = 1
For Each f In ff.Files
Rem 如果不需要提取本代碼文件名,可以增加if語句 if f.name<> thisworkbook.name then.....
Rem 如果值需要提取某類文件,需要對f.name的擴展名進行判斷
Rem 個人感覺split取 擴展名:split(f.name,".")(ubound(split(f.name,"."))),然後再判斷,避免文件名還有其他「.」
Cells(a, 1) = f.Name '相對路徑名
Cells(a, 2) = f '全路徑名
a = a + 1
Next f
Application.ScreenUpdating = True
End Sub
⑤ vba 查找打開文件夾的文件
以下代碼,樓主可以參考,打開文件夾,選擇文件後自動打開
Sub text()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path & "\"
.Title = "請選擇對應文本文件"
.AllowMultiSelect = False
If .Show Then f = .SelectedItems(1) Else Exit Sub '
End With
Shell "RUNDLL32.EXE URL.DLL,FileProtocolHandler " & f, vbMaximizedFocus
End Sub
⑥ vba操作文件夾
Sub 拷貝文件夾()
On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
For i = 2 To 100
If Cells(i, 1) = "" Then Exit For
OldString = "路徑說明書"
NewString = "路徑" & Cells(i, 1) & "說明書"
fs.Copyfolder OldString, NewString
Set fs = Nothing
Next
End Sub
⑦ vba如何自動創建文件夾
給你一個最簡單的方法x0dx0aSubprogramx0dx0aIfDir("F:\"&Format(Date,"YYYY-M-D"),vbDirectory)<>""Thenx0dx0aMsgBox"文件夾存在"x0dx0aElsex0dx0aMsgBox"文件夾不存在!,系統將創建一個名為"&Format(Date,"YYYY-M-D")&"的文件夾"x0dx0aMkDir"F:\"&Format(Date,"YYYY-M-D")日期的格式可以自己該
⑧ EXCEL如何使用VBA打開相對路徑下的文件或文件夾
打開文件如下:
Workbooks.Open ("C:對賬單對帳單.xlsx")
這里你可以把「C:對賬單」換成你的絕對路徑,
你可以用:a = ThisWorkbook.Path
a = ThisWorkbook.Path
Workbooks.Open ("" & a & "&" "&對帳單.xlsx")
來獲取你當前表的絕對路徑,然後再打開,因為不知道你的具體情況,如果有問題可以hai我
如果當前文件夾下還有A文件夾可以用代碼:
Workbooks.Open ("" & a & "&" A"&b.xlsx")