MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]PastSpecial method of Range class failed - Importar dados

    Compartilhe
    avatar
    barroso
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 17/08/2017

    [Resolvido]PastSpecial method of Range class failed - Importar dados

    Mensagem  barroso em 5/8/2018, 22:22

    Fala galera boa tarde, estou um pouco sumido aqui do forum porque o tempo anda curto, estou tendo um problema com uma macro VBA no excel, sei que este e um forum de access mas espero que voces possam me dar essa forca mais uma vez, estou usando um codigo para importar dados de varios arquivos de excel que vi em video no youtube, tratei de fazer algumas adptacoes para minhas necessidades e em um principio funcionou bem mas depois quando adicionei as seguintes linhas de codigo em "ThisWorkbook" nos meus arquivos de origem:

    Código:

        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
        Application.DisplayFormulaBar = False
        ActiveWindow.DisplayWorkbookTabs = False
        Application.DisplayStatusBar = False

    Código:

        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
        Application.DisplayFormulaBar = True
        Application.DisplayStatusBar = True
        ActiveWindow.DisplayWorkbookTabs = True

    deixando o codigo em "ThisWorkBook" desta forma:

    Código:

    Private Sub Workbook_Activate()
        Application.ScreenUpdating = False
        Application.OnKey "^v", "AtajoTeclado"
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
        Application.DisplayFormulaBar = False
        ActiveWindow.DisplayWorkbookTabs = False
        Application.DisplayStatusBar = False
        Application.ScreenUpdating = True
    End Sub

    Private Sub Workbook_Deactivate()
        Application.ScreenUpdating = False
        Application.OnKey "^v"
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
        Application.DisplayFormulaBar = True
        Application.DisplayStatusBar = True
        ActiveWindow.DisplayWorkbookTabs = True
        Application.ScreenUpdating = True
    End Sub


    Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    End Sub


    ao executar a macro no arquivo de destino que importa os dados tenho o Run-time error ´1004´: PastSpecial method of Range class failed apontando para a linha
    Código:
    wsDestino.Cells(Columns.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

    Alguem pode me ajudar ver onde esta meu erro? Nao sei se e no arquivo de origem ou destino, esta e a macro executada no modulo de origem:


    Código:
    Option Explicit
    Dim nArchivo As Integer, Conteo As Integer, i As Integer, j As Integer, n As Integer
    Sub ImportarData()
    Call Clear
    Call ContarArchivos
      
    Application.ScreenUpdating = False
    Dim WorkBookOrigen As Workbook
        Dim wsOrigen As Excel.Worksheet, _
        wsDestino As Excel.Worksheet, _
        rngOrigen As Excel.Range, _
        rngDestino As Excel.Range, _
        NombreArchivo As String, _
        Carpeta As String
        
        Carpeta = ActiveWorkbook.Path & "\"

    nArchivo = 1

    NombreArchivo = Dir(Carpeta & "BASE_A_COPIAR" & "*.xlsm*")


    Do While Len(NombreArchivo) > 0
        


            Set WorkBookOrigen = Workbooks.Open(Carpeta & NombreArchivo)
                
                NombreArchivo = Dir()
                
            ThisWorkbook.Activate
                
            Set wsOrigen = WorkBookOrigen.Worksheets(2)
            Set wsDestino = Worksheets(1)
            
            Const celdaOrigen = "A2"
            
            Set rngOrigen = wsOrigen.Range(celdaOrigen)
            
            wsOrigen.Activate
            wsOrigen.Visible = True
            wsOrigen.Unprotect Password:="password"
            rngOrigen.Select
            Range(Selection, Selection.End(xlDown)).Select
            Range(Selection, Selection.End(xlToRight)).Select
            Selection.Copy
            
    Errores:
            If Err.Number = 1004 Then
                wsOrigen.Activate
                wsOrigen.Visible = True
                wsOrigen.Unprotect Password:="password"
                rngOrigen.Select
                Range(Selection, Selection.End(xlToRight)).Select
                Selection.Copy
            End If
            
                For n = 1 To 1
                wsDestino.Activate

    On Error GoTo Errores

                    wsDestino.Cells(Columns.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                Next n
                Application.CutCopyMode = False
            
            WorkBookOrigen.Save
            WorkBookOrigen.Close
            
            nArchivo = nArchivo + 1
            
        Call Progreso
                        

    Loop

    j = nArchivo - 1


    Application.ScreenUpdating = True


    MsgBox j & " Archivos procesados"

    End Sub
    Public Sub Progreso()
    Dim Contador As Integer
    Dim Maximo As Integer
    Dim Mitiempo As Double



    Maximo = nArchivo - 1
     
    For Contador = 1 To Maximo Step 1
        Mitiempo = Timer
        Do
            Loop While Timer - Mitiempo < 0.02
            Application.StatusBar = "Progreso: " & Maximo & _
            " de " & i & " (" & Format(Maximo / i, "Percent") & ")"
        DoEvents
    Next Contador
     
    Application.StatusBar = False
    End Sub
    Public Sub ContarArchivos()
    Dim cNombreArchivo, cCarpeta As String


    cCarpeta = ActiveWorkbook.Path & "\"

    Conteo = 1

    cNombreArchivo = Dir(cCarpeta & "BASE_A_COPIAR" & "*.xlsm*")

    Do While Len(cNombreArchivo) > 0
        cNombreArchivo = Dir()
        Conteo = Conteo + 1
    Loop

    i = Conteo - 1
    End Sub

    Muito obrigado a todos.
    avatar
    barroso
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 55
    Registrado : 17/08/2017

    Re: [Resolvido]PastSpecial method of Range class failed - Importar dados

    Mensagem  barroso em 5/8/2018, 23:32

    Resolvido, adicionei

    Código:
    Application.EnableEvents = False

    e

    Código:
    Application.EnableEvents = False

    No meu arquivo de destino.

      Data/hora atual: 19/8/2018, 02:25