VBA编程:轻松获取文件地址和文件名

admin2023-11-16电脑知识浏览:171

No.1

VBA编程中有这样一种情景,就是当我们选择打开一个文件后,并不打算进行编辑,也就是说根本不想打开这个文件,而只是通过"打开文件"对话框来传递这个文件的地址和文件名。

怎么办呢?VBA给出了一个方法,可以方便地通过这个方法实现获取文件地址和名称。

如下图所示,GetOpenFilename方法可实现上述功能。

此文件是Application对象之下使用,使用方法:

Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

参数说明可以参考下图:

如果,在打开对话框中没有单击确定按钮,也就是没有选择任何文件,单击了取消按钮的时候,GetOpenFilename方法返回False。

根据返回值,就可以对程序过程进行一个判断,是传递文件名还是进行其它操作。

下图为另一个方法,实现保存文件名返回。

语法:Application.GetSaveAsFilename (InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

获取用户文件名,而不保存任何文件。

感觉这两个方法都有些欺骗性,也不知道为什么这么做。

不管怎么着,只要理解在什么场景下可以使用达到目的就行了。

下图为例进行说明

三个按钮,一个打开文件,一个保存文件,一个清除记录。

每打开一个文件就记录一条,每保存一个文件就记录一条,其实都没有执行真正的操作。

清除记录可把记录的内容删除。

看下代码就明白了。

No.2

Private Sub CommandButton1_Click()Dim O As Variant'定义变量O = Application.GetOpenFilename’返回值If O <> False Then‘如果不是False就执行工作表记录过程    WriteValue O, Me.CommandButton1.CaptionElse    MsgBox "没有选择文件!"End IfEnd Sub

Private Sub WriteValue(O As Variant, Cname As String)    Dim cell As Range, ir As Integer    Set cell = ActiveSheet.Range("B3")    ir = ActiveSheet.Cells(ActiveSheet.Cells.Rows.Count, cell.Column).End(xlUp).Row + 1    With ActiveSheet.Cells(ir, cell.Column)        .Value = "=row()-3"        .Offset(0, 1).Value = O        .Offset(0, 2).Value = Cname    End WithEnd Sub

以上代码实现对工作表进行记录,记录内容为打开或保存工作表的地址和文件名。

调用系统标准对话框有几种方法,前面文章里有过介绍,如Dialog对象,就是Microsoft Excel 中的所有内置对话框集合,有兴趣可以参考学习。

欢迎关注、收藏

---END---

热门文章