Ir ao conteúdo

Posts recomendados

Postado

Boa noite!

Estou com uma dúvida, em relação ao uso de macro com os botões vba.

 

Eu fiz uma macro para importar dados de planilhas e utilizei botão activeX para fazer o tal. ficou assim
 

Citação

Private Sub btExecuta_Click()

'Definição de variáveis
'-------------------------

Dim W               As Worksheet
Dim sht             As Worksheet
Dim Wnew            As Workbook
Dim ArqParaAbrir    As Variant
Dim a               As Integer
Dim NomeArquivo     As String

'Capturando o arquivo para importar

ArqParaAbrir = Application.GetOpenFilename("Arquivo para importar (*.xls*), *.xls*", _
                Title:="Escolha os arquivos", MultiSelect:=True)
                

If Not IsArray(ArqParaAbrir) Then

    If ArqParaAbrir = "" Or ArqParaAbrir = False Then
    
    MsgBox "Processo inválido. Não foi selecionado arquivos..."
    Exit Sub
       
       End If
       
End If


Application.ScreenUpdating = False


Set W = Sheets("Compilador")
W.Select

'W.UsedRange.EntireColumn.Delete
W.Select
Range("A1:AK900").Select
Selection.ClearContents

For a = LBound(ArqParaAbrir) To UBound(ArqParaAbrir)

    NomeArquivo = ArqParaAbrir(a)
    
    Application.Workbooks.Open ArqParaAbrir(a)
    
    Set Wnew = ActiveWorkbook
    
    'percorre cada uma das planilhas da pasta de trabalho importada
    For Each sht In Wnew.Sheets
    
        sht.Select
        sht.Range("A1").CurrentRegion.Select
        
        Selection.Copy Destination:=W.Cells(final, 1).End(xlUp).Offset(1, 0)
        
        
    
    Next sht
    
    Application.DisplayAlerts = False
    
        ActiveWorkbook.Close savechanges:=False
               
    Application.DisplayAlerts = True
    
    W.Cells(final, 1).End(xlUp).Offset(1, 0).Select
        
    
Next

W.UsedRange.EntireColumn.AutoFit

Application.ScreenUpdating = True


MsgBox "Processo concluído com sucesso!"
End Sub

 

até então ok... Todavia quando fiz outro botão desta vez "simples" para copiar esses dados para um banco de dados, o botão some cada vez que rodo o importador, dai resolvi fazer o botão de activex, dai o 2º problema, não estou conseguindo rodar nenhuma macro de copia nele....  alguma solução?

A primeira planilha fica como " temporário" para coletar dados e receber algumas fórmulas.

 

depois transfiro para o banco de dados em forma de colar especial sem fórmulas.

 

Citação

Sub Copiador1()
'copia da planilha1 da linha A2 até a última célula preenchida
'e cola na primeira linha em branco da coluna 1 da planilha2

'localiza a última linha preenchida da coluna 1 da plan2
ultimalinha = Sheets("BD_Atendimento").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Compilador").Select
Range("A1:AJ1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("BD_Atendimento").Select
Cells(ultimalinha + 1, 1).Select
' seleciona a próxima linha em branco da plan2
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub

essa macro acima, só não funciona no botão activex, quando rodo em forma de macro normal, da certo, quando clico no botão activex e coloco esse cod, da errado.

 

valeu!

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...