VBA检查具有动态名称的打开文件

时间:2018-08-06 20:32:03

标签: excel-vba

我有一个工作簿,可在SQL Server上运行查询并返回结果。然后,我有了一个宏,该宏可以创建一个面向客户的副本,并使用结果和日期中的值对其进行动态命名,然后将其保存到单个用户的桌面上,以方便我的员工使用。如果宏第二次运行,并且此动态命名的文件已从原始运行中打开,则会出现错误。如何检查以确定动态命名的文件是否从先前的运行中打开,并在开始第二次运行之前将其关闭。

Sub CreateCustomerCopy ()    
ThisFile = ("Purchase History - Billing Acct# " & Range("A4").Value & " - " & Format(Date, "YYYYMMDD"))

Range("A2:A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste

'Save to Desktop of Variable User
Dim strPath As String
Dim Myar As Variant
strPath = "C:\Users\username"
Myar = Split(strPath, "\")
Debug.Print CurDir & "\" & Myar(UBound(Myar))

ActiveWorkbook.SaveAs Filename:="C:\Users\" & Myar(UBound(Myar)) & "\Desktop\" & ThisFile, _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

结束Sub()

1 个答案:

答案 0 :(得分:0)

检查工作簿是否已打开,如果已打开,则将其关闭:

Dim wb As Workbook
On Error Resume Next
Set wb = Application.Workbooks.Item(ThisFile)
If (Not wb Is Nothing) Then wb.Close