Vba用弹窗先择文件夹把表格数据写入模板并保存到指定的子文件夹中
时间: 2024-12-19 14:17:41 浏览: 2
在VBA (Visual Basic for Applications) 中,你可以使用 `Shell` 函数打开文件浏览器让用户选择文件夹,然后利用 `Application.Workbooks.OpenText` 方法读取选定文件夹内的表格数据,并将数据写入一个模板Excel工作簿。最后,通过 `SaveAs` 方法将处理后的文件保存到指定的子文件夹。
这是一个简单的示例:
```vba
Sub WriteDataToTemplate()
' 弹出文件浏览框让用户选择文件夹
Dim folderPath As String
folderPath = Application.GetOpenFilename("Please select a folder", , "Folder(*.*)")
' 检查路径是否已选中
If folderPath <> "" Then
' 使用通配符读取文件夹里的CSV或其他文本文件
Dim filePath As String
filePath = Dir(folderPath & "\*.csv") ' 这里假设都是CSV文件
Do While filePath <> ""
' 打开模板工作簿
Dim wbTemplate As Workbook
Set wbTemplate = Workbooks.Open(folderPath & "\template.xlsx")
' 写入数据
With wbTemplate.Sheets(1) ' 假设数据在第一个工作表
.Range("A1").LoadFromText filePath ' 将数据加载到第一行
End With
' 清除临时文件
Kill filePath
' 保存修改并关闭模板工作簿
wbTemplate.SaveAs ThisWorkbook.Path & "\" & Left(filePath, InStrRev(filePath, "\")) & "_processed.xlsx" ' 保存到子文件夹
wbTemplate.Close SaveChanges:=True
filePath = Dir ' 继续处理下一个文件
Loop
' 提示操作完成
MsgBox "Data processing completed."
Else
MsgBox "No folder selected."
End If
End Sub
```
阅读全文