2017-05-17 1 views
1

네트워크 드라이브에 저장된 Excel 스프레드 시트로 사용자 Tasklist을 내보내는 Outlook 매크로가 있습니다.새로 만든 통합 문서에서 워크 시트를 삭제하려고하면 런타임 오류가 발생합니다. - Outlook VBA

통합 문서가 이미 디렉터리 (If statement taken form here)에 있는지 확인하려고합니다.

하지 존재하는 경우, 올바른 사용자 이름으로 이미 존재하는 경우라는 하나의 워크 시트에 새 통합 문서는 "시트 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 위치에 저장되도록 위의 코드를 어떻게 수정합니까? 이처럼

+2

통합 문서에서 유일한 시트를 삭제할 수 없습니다 - 엑셀은 당신이 "Sheet1의를"이름을 변경하여 ... 하나 다시 추가 시작하는거야 "알고"하지 않습니다 "Sheet1_old"그런 다음 새 시트를 추가 한 다음 "Sheet1_old"를 삭제하십시오. –

+0

@TimWilliams - 감사합니다. 그런데 위의 코드를 수정하여 시트의 이름을 바꾸는 방법은 무엇입니까? 위의 코드를 수정하여 이름 변경 위치를 표시하지만 438 오류가 표시됩니다. - 개체가이 속성을 지원하지 않습니다. – scb998

답변

2

:

exWb.Sheets("Sheet1").Name = "Sheet1Old" 
exWb.Sheets.Add().Name = "Sheet1" 
exWb.Sheets("Sheet1Old").Delete 
+0

감사합니다. Tim -이 특정 매크로에 대한 다른 문제가 있습니다. 대기! :피 – scb998

관련 문제