vba判断工作表是否有密码 (vba工作表是否存在)

新建工作簿、工作表比较简单,关键是要判断工作簿、工作表是否已存在。

1 新建工作簿

判断某个工作簿是否存在?我们可以使用dir()函数遍历某一路径下的文件来判断.

dir函数返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。如果指定的文件存在,那么反回此目录,否则返回0;

语法:Dir[(pathname[, attributes])]

dir()中的pathname如果使用了通配符,值是迭代返回的,dir使用一次返回一次值,直到迭代到空值为止。

attributes 可选参数。常数或数值表达式。如果省略,则会返回匹配 pathname 但不包含属性的文件。 attributes 参数的设置可为:

vbNormal 0 (缺省) 指定没有属性的文件。

vbReadOnly 1 指定无属性的只读文件

vbHidden 2 指定无属性的隐藏文件

VbSystem 4 指定无属性的系统文件 在Macintosh中不可用。

vbVolume 8 指定卷标文件;如果指定了其它属性,则忽略vbVolume 在Macintosh中不可用。

vbDirectory 16 指定无属性文件及其路径和文件夹。

vbAlias 64 指定的文件名是别名,只在Macintosh上可用。

在 Microsoft Windows 中, Dir 支持多字符 (*) 和单字符 (?) 的通配符来指定多重文件。

在 Macintosh 中,这些字符作为合法文件名字符并且不能作为通配符来指定多个文件

由于 Macintosh 不支持通配符,使用文件类型指定文件组。可以使用 MacID 函数指定文件类型而不用文件名。比如,下列语句返回当前文件夹中第一个TEXT文件的名称:

Dir("SomePath", MacID("TEXT"))

下面我们可以通过一个小实例来了解一下这个函数的用法:

Sub test()

Dim myfile

myfile = Dir("D:/工作日志/*.xlsx") '返回对应路径下第一个符合*.xlsx的文件名称

Do While myfile <> "" '当返回的文件名为空时停止循环

....Debug.Print myfile '将返回的结果显示在立即窗口

....myfile = Dir '返回对应路径下一个符合条件的文件名称

Loop

End Sub

以下是判断工作簿是否存在并新建工作簿的实例:

如果不做是否存在的判断,当存在你需要保存的工作簿时,Excel会有提示是否覆盖的提示。

vba判断工作簿是否打开,vba工作表是否存在

2 新增工作表

以下实例是在新建工作表时,先通过遍历全部工作表来判断是否已存在你需要新增的工作表:

vba判断工作簿是否打开,vba工作表是否存在

源代码请见:

https://github.com/wwuhn/Excel-VBA/blob/master/new_book_sheet

-End-