Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Bruno Alcantara

Excel VBA - Importar dados de uma outra planilha com check

Recommended Posts

Olá gente boa!

Sou novato por aqui e também em programação em VBA.

Gostaria muito de contar com a ajuda dos senhores(as)!


Estou precisando de um código que ao clicar em um determinado botão (serão 30 no total), abra a opção para realizar a importação de uma outra planilha que estará na minha rede (é importante que o arquivo seja selecionado de qualquer diretório). 
Essa planilha que será importada terá um padrão definido (por exemplo, a célula A1 terá o mesmo nome do botão, esse dado deverá ser checado, e os dados a serem copiados estarão na range "A6:S56" da sheet com mesmo nome). Tudo em valores (texto e números).

 

Ao terminar a importação, seria importante retornar uma mensagem (sucesso ou falha caso não seja a planilha padrão) e também ter um "ok" ao lado do botão.


Até a parte de selecionar a planilha a ser importada eu consegui fazer (contando com a ajuda aqui do fórum em tópicos parecidos), depois disso faltou conhecimento.


 

 

Usei esse código para abrir a caixa e tentei ligar com um outro para copiar... não deu certo.


Sub Import()

Dim File As String
Dim FileToOpen

FileToOpen = Application.GetOpenFilename _
(Title:="Selecione o arquivo a ser importado", _
FileFilter:="Text Files *.xlsx (*.xlsx),")

File = FileToOpen

If FileToOpen = False Then
MsgBox "Você clicou em cancelar. Especifique um Arquivo.", vbExclamation
Exit Sub

Else: ImpTextFile FName:=File, Sep:="|"

End If

End Sub

 

 

 

Esse outro seria o código para copiar... furado! Aqui eu fui misturando tudo...


Function ImpTextFile(FName As String, Sep As String)

 

Dim RowNdx As Long
Dim ColNdx As Integer
Dim TempVal As Variant
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Integer
Dim SaveColNdx As Integer


D1_.Activate
Range("A1:S57").ClearContents
D1_.Cells(1, 1).Select

 

Application.ScreenUpdating = False

 

On Error GoTo EndMacro:
SaveColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row

 

Open FName For Input Access Read As #1

 

While Not EOF(1)
    Line Input #1, WholeLine
    If Right(WholeLine, 1) <> Sep Then
        WholeLine = WholeLine & Sep
    End If
    ColNdx = SaveColNdx
    Pos = 1
    NextPos = InStr(Pos, WholeLine, Sep)
    While NextPos >= 1
        TempVal = Mid(WholeLine, Pos, NextPos - Pos)
        Cells(RowNdx, ColNdx).Value = TempVal
        Pos = NextPos + 1
        ColNdx = ColNdx + 1
        NextPos = InStr(Pos, WholeLine, Sep)
    Wend
    RowNdx = RowNdx + 1
Wend

EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
Close #1

End Function

 

 

Alguém consegue me salvar?

 

Teste_Import.zip

ImagemPlanilhaFonte.jpg

Imagem_localImportacao.jpg

Imagem_Painel.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

E so inserir o codigo de copiar apos o Else do primeiro codigo.

 

Else 

 

Codigo de copiar dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×