📜  excel vba 当前文件夹 - VBA (1)

📅  最后修改于: 2023-12-03 15:30:39.861000             🧑  作者: Mango

Excel VBA 当前文件夹 - VBA

在Excel VBA中,我们经常需要获取当前文件夹的路径,或者在当前文件夹中创建、查找或保存文件。本文将介绍如何在VBA中获取当前文件夹路径,以及如何在当前文件夹中创建、查找或保存文件。

获取当前文件夹路径

获取当前文件夹路径的方法如下:

Dim currentPath As String
currentPath = ThisWorkbook.Path

这里使用ThisWorkbook.Path来获取当前文件夹的路径,将其赋值给变量currentPath。获取到的路径包括当前工作簿所在的文件夹路径。如果需要去掉工作簿文件名,可以使用以下代码:

currentPath = Left(currentPath, Len(currentPath) - Len(ThisWorkbook.Name))

这里使用了VBA内置函数Left和Len,分别表示字符串的左截取和长度。

在当前文件夹中创建文件

在当前文件夹中创建文件的方法如下:

Dim fileName As String
fileName = currentPath & "\test.txt"
Open fileName For Output As #1
Print #1, "Hello World!"
Close #1

这里使用了VBA的Open语句打开一个文件,使用Print语句向文件中写入内容,使用Close语句关闭文件。文件名可以自定义,这里使用了currentPath变量和字符串连接符“\”将文件名和路径拼接起来。

在当前文件夹中查找文件

在当前文件夹中查找文件的方法如下:

Dim searchPattern As String
searchPattern = "*.xlsx"
Dim filePath As String
filePath = Dir(currentPath & "\" & searchPattern)
While filePath <> ""
    ' 处理文件
    filePath = Dir
Wend

这里使用了VBA内置函数Dir来查找文件。其中searchPattern表示文件名模板,支持通配符,比如“*.xlsx”表示查找所有扩展名为xlsx的文件。Dir函数返回符合模板的第一个文件路径,如果没有找到,则返回空字符串。我们可以使用While循环来遍历当前文件夹中的所有符合条件的文件。

在当前文件夹中保存文件

在当前文件夹中保存文件的方法如下:

Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogSaveAs)
dlg.InitialFileName = currentPath & "\test.xlsx"
If dlg.Show = -1 Then
    ActiveWorkbook.SaveAs dlg.SelectedItems(1), xlWorkbookDefault
End If

这里使用了VBA内置的FileDialog对象来打开“另存为”对话框。我们通过设置InitialFileName属性来指定默认保存路径和文件名。如果用户选择了保存,我们可以通过Show方法返回值为-1来判断,然后使用SelectedItems属性获取用户选择的文件路径和名称,最后使用ActiveWorkbook.SaveAs方法将工作簿保存为指定路径和名称的文件。

总结

在Excel VBA中,获取当前文件夹路径和在当前文件夹中创建、查找、保存文件是非常常见的操作。我们可以使用ThisWorkbook.Path和Dir函数快速获取当前文件夹路径和查找符合条件的文件,使用Open、Print和Close语句创建文件并向文件中写入内容,使用FileDialog对象保存工作簿到指定的路径和文件名。