“O objeto invocado foi desconectado de seus clientes.”

1

Eu tenho um botão que solicita entrada e cria uma nova guia. A primeira execução funciona muito bem, mas execuções subsequentes lançam esse erro:

Aquiestáocódigo:

SubbtnAddProject()DimtemplateAsWorksheetDimnewSheetAsWorksheetDimnewNameAsStringnewName=Application.InputBox("Enter Project Name")        'get name
    Worksheets("Template").Visible = True                       'Unhide template
    Set template = ActiveWorkbook.Sheets("Template")            'identify template
    template.Copy After:=Sheets(Sheets.Count)                   'create copy
    Set newSheet = ActiveSheet                                  'identify new sheet
    newSheet.Name = newName                                     'rename sheet
    'deleteNames (newSheet.Name)                                'delete copied named ranges with worksheet scope
    newSheet.Range("D2").Value = newName                        'Change header on new sheet
    Worksheets("Template").Visible = False                      'Hide template
    Worksheets("Consolidated Grid").Activate                    'switch back to dashboard
    updateProjectIndex (newName)
End Sub

O erro é lançado em newSheet.Name = newName e me deixa com uma planilha chamada "Template (2)"

O que está causando isso?

Caso seja relevante, aqui está o updateProjectIndex sub que basicamente adiciona uma nova linha à lista de projetos (em dois lugares):

Sub updateProjectIndex(newName)
    Application.ScreenUpdating = False
    Sheets("Dashboard").Select

    ActiveSheet.Rows(12).Select
    Selection.Copy
    Selection.Insert Shift:=xlDown

    ActiveSheet.Range("B13").Value = newName


    Sheets("Consolidated Grid").Select

    ActiveSheet.Columns("F:F").Select
    Selection.Copy
    Selection.Insert Shift:=xlRight

    ActiveSheet.Range("G1").Value = newName


    Sheets("Dashboard").Select
    ActiveSheet.Range("B13").Select
    Application.ScreenUpdating = True
End Sub
    
por Scott Beeson 07.04.2016 / 15:38

2 respostas

2

Seu código funciona bem para mim, embora eu precise remover as sub chamadas adicionais (por isso removi updateProjectIndex(newName) AND Worksheets("Consolidated Grid").Activate

Para depurar, experimente este código em um novo Excel no seu PC para ver se o problema é a pasta de trabalho relacionada a essa pasta de trabalho ou ao Excel

O problema está no código em um evento

Tente comentar essas duas linhas de código e veja se o problema persiste ou não. Se não houver problema, descomente um de cada vez até ver o erro e elimine o caminho.

Eu recomendo que você faça isso com uma cópia do seu arquivo para que você possa dividi-lo o quanto quiser!

    
por 07.04.2016 / 15:50
1

Acho que descobri, embora não tenha certeza do motivo. Eu tinha o seguinte código no meu Workbook_Open sub:

   Worksheets("Dashboard").Activate
    If InStr(Application.ActiveWorkbook.Path, "sharepoint.com") Then
        Range("1:1").Select
        Selection.EntireRow.Hidden = True

    Else
        Range("1:1").Select
        Selection.EntireRow.Hidden = False
    End If

A intenção era garantir que as pessoas soubessem que estavam abrindo uma versão off-line. Eu estou supondo que o conflito foi com o Worksheets.Activate aqui? Talvez alguém possa explicar.

De qualquer forma, remover isso parece ter corrigido o problema em 100%.

Atualização: substituiu todo o código, mas o .Activate e ainda está funcionando. Eu estou supondo que ativar uma pasta de trabalho de sua própria rotina Workbook_Open estava causando algum tipo de loop?

    
por 07.04.2016 / 15:53