[英]Excel VBA search directory and add hyperlink to directory workbooks in a new workbook
I am using VBA to loop through a specified directory, open excel workbooks that exist in the directory, copy a range from a worksheet and paste the contents to a new workbook. 我正在使用VBA遍历指定的目录,打开目录中存在的excel工作簿,从工作表中复制范围并将内容粘贴到新工作簿中。
code 码
Private Sub LoopThroughFiles()
Dim x As Workbook
Dim y As Workbook
' Create new workbook, name file, name sheets, set target directory
Set NewBook = Workbooks.Add
With NewBook
.SaveAs Filename:="C:\NewFileName" _
& Format(Date, "yyyymmdd") & ".xlsx"
NewBook.Sheets("Sheet1").Name = ("NewSheet")
End With
Dim dirName As String
' this is the directory to open files from
dirName = ("C:\TargetDirectory\")
Dim StrFile As String
StrFile = Dir(dirName & "*.*")
Do While Len(StrFile) > 0
If Right(StrFile, 4) = "xlsx" Then ' Filter for excel files
Workbooks.Open (dirName & StrFile) ' Open the workbook
Worksheets("TargetSheet").Range("A2:AA2").Copy ' Copy paste to new book
NewBook.Sheets("NewSheet").Columns("A").Find("", Cells(Rows.Count, "A")).PasteSpecial (xlPasteValuesAndNumberFormats)
Application.DisplayAlerts = False
Workbooks(StrFile).Close False ' Close target workbook without saving
Application.DisplayAlerts = True
End If
StrFile = Dir
Loop
End Sub
Something like this 像这样
I have used my code from Loop through files in a folder using VBA? 我已经使用VBA通过文件夹中的文件遍历我的代码了吗? to work with the xlsx
files directly. 直接使用xlsx
文件。
Also I have improved the use of variables to handle the workbooks you are working with 此外,我还改进了变量的使用方式来处理您正在使用的工作簿
The code would also beenfit from error handling (ie if Target Sheet wasn't present etc) 该代码也将因错误处理而适应(例如,如果目标表不存在等)
Private Sub LoopThroughFiles()
Dim NewBook As Workbook
Dim WB As Workbook
Dim rng1 As Range
' Create new workbook, name file, name sheets, set target directory
Set NewBook = Workbooks.Add
With NewBook
.SaveAs Filename:="C:\temp\file" _
& Format(Date, "yyyymmdd") & ".xlsx"
.Sheets(1).Name = ("NewSheet")
End With
Dim dirName As String
' this is the directory to open files from
dirName = ("C:\temp\")
Dim StrFile As String
StrFile = Dir(dirName & "*.xlsx")
Application.DisplayAlerts = False
Do While Len(StrFile) > 0
Set WB = Workbooks.Open(dirName & StrFile) ' Open the workbook
WB.Worksheets("TargetSheet").Range("A2:AA2").Copy ' Copy paste to new book
Set rng1 = NewBook.Sheets("NewSheet").Columns("A").Find("", Cells(Rows.Count, "A"))
rng1.PasteSpecial xlPasteValuesAndNumberFormats
NewBook.Sheets(1).Hyperlinks.Add NewBook.Sheets(1).Cells(rng1.Row, "AB"), dirName & StrFile, dirName & StrFile
WB.Close False ' Close target workbook without saving
StrFile = Dir
Loop
Application.DisplayAlerts = True
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.