需求:
在辛苦生成报表后,要交付给用户的文件越“干净”越好!比如,在工作文件(workfile)中可能创建了很多vlookup区域(vlookup range names),这些名称会随着工作文件而“另存为”在待交付文件中。不要小看这些区域,实践证明,如果区域较多时,会额外占用很多空间。而且,这些区域对用户而言没有任何意义,所以,最好删除掉。
代码:
Sub deleteVBACode()
Dim nm As Name
Dim wkBook As Workbook
Dim fileName As String '定义delivery文件的完整路径(包括文件名)
fileName = "在此指定delivery文件的完整路径"
Set wkBook = GetObject(fileName) '非常重要的一句!
'删除无效名称
For Each nm In wkBook.Names
If InStr(1, nm.RefersTo, "#REF!") > 0 Then
'List the name before deleting
Debug.Print nm.Name & ": deleted"
nm.Delete
End If
Next nm
End Sub
参考文章:
http://www.cnhup.com/index.php/archives/delete-the-bad-references-in-the-active-workbook-using-vba-in-excel/