我有一个Outlook宏,可以将用户Tasklist
导出到存储在网络驱动器上的Excel电子表格中。
我正在尝试检查目录中是否存在工作簿(If statement taken form here)。
如果没有,则使用一个名为“Sheet 1”的工作表创建一个新工作簿,如果已经有一个具有正确用户名的工作表,则打开它(add statement taken from here):
Dim FilePath As String
Dim TestStr As String
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Dim NAME_s As String
objExcel.DisplayAlerts = False
'Use the Application Object to get the Username
NAME_s = Environ("USERNAME")
FilePath = "the\directory\" & NAME_s & ".xlsx"
TestStr = ""
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0
If TestStr = "" Then
Set exWb = objExcel.Workbooks.Add(1)
exWb.Worksheets(1).Name = "Sheet1_old"
Else
Set exWb = objExcel.Workbooks.Open("J:\Efficiency Measures\PTaR\" & NAME_s & ".xlsx")
End If
exWb.Sheets.Add().Name = "Sheet1"
exWb.Sheets("Sheet1_old").Delete
当我单步执行If语句时,TestStr值将触发第一个条件,这是正确的,但exWb.Sheets("Sheet1").Delete
行触发运行时错误(工作簿必须包含至少一个可见工作表)。但我认为让objExcel.Workbooks.Add(1)
将新工作簿添加到一个名为“Sheet 1”的工作表指定的目录中。
如何修改上述代码以确保生成的新工作簿具有“工作表1”名称,并保存在FilePath
变量中指定的nework位置?
答案 0 :(得分:2)
像这样:
exWb.Sheets("Sheet1").Name = "Sheet1Old"
exWb.Sheets.Add().Name = "Sheet1"
exWb.Sheets("Sheet1Old").Delete