Notifications
Clear all

userform e hiperlink

14 Posts
3 Usuários
0 Reactions
2,486 Visualizações
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

Olá galera expert do excel...

mais uma vez, precisando de um help...

utilizo um Userform para preencher um formulario no excel.
cada preenchimento é dado por um codigo sequencial.

gostaria de configurar o textbox do numero sequencial para quando inserir este numero na planilha, inserisse como um link e que esse link fosse um hiperlink para abrir uma planilha com nome da celula ao lado.
exemplo.
o textbox vai inserir o codigo na celula "A3", na celula "B3" esta o nome da planilha para abrir.

porque:

cada codigo sequencial inserido, é uma planilha que foi salvo em uma determinada pasta.

nao sei se consegui explicar.....

agradecido...

abraço..

 
Postado : 14/09/2017 2:30 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Anexe uma planilha de exemplo e explique mais detalhadamente o que deseja. Assim fica mais fácil para alguém ajudar.

att,

 
Postado : 14/09/2017 4:08 pm
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

brunoxro,

Fiz uma imagem da planilha explicando,
porque estou montando ainda a planilha e esta meio confuso
não sei se ajuda....

vlw.. obrigado.

 
Postado : 15/09/2017 5:50 am
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

olá, pesquisando aqui.
vi esse codigo, em viewtopic.php?f=10&t=4726.
é a mesma situação que preciso, porem, gostaria que o endereço fosse automático, sem a necessidade de selecionar o arquivo.
o que mudaria, seria o nome da planilha, onde este nome seria relacionado a um célula.

nesse link.. tbem tem um exemplo parecido: viewtopic.php?f=23&t=16455&p=84119&hilit=textbox+com+hiperlink#p84119

Private Sub CommandButton1_Click()

    Dim sArquivo
    Dim sEspecificação As String
    Dim sTítulo As String
    
    sEspecificação = "Arquivos de Excel (*.xls*),*.xls*"
    sTítulo = "Selecione um arquivo do Excel:"
    
    sArquivo = CStr(Application.GetOpenFilename(sEspecificação, , sTítulo, , False))
    
    If sArquivo <> CStr(False) Then
        Range(RefEdit1.Value) = TextBox1
        ActiveSheet.Hyperlinks.Add Range(RefEdit1.Value), sArquivo
    Else
        'Nenhum arquivo foi selecionado
    End If
End Sub
 
Postado : 15/09/2017 9:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Faltaram alguns detalhes, mas veja se consegue ajustar a sua necessidade :

Private Sub CriarHyperlinks()
    Dim sArquivo
    Dim sCaminho As String
    Dim sNome As String
    Dim sNome2 As String
    Dim sNomeCompleto
    
    Dim sNumero
    
    'Não citou como cria o numero sequencial,
    'o mesmo tem de ser alimentado nesta Variável
    sNumero = 1
    
    'Estamos pegando os nomes em C1 e D1,se for atraves de TexTbox
    'tem de ajustar as linhas abaixo
    sNome = Range("C1").Value
    'sNome = TextBox1.Value
    
    sNome2 = Range("D1").Value
    'sNome2 = TextBox2.Value
    
    'Montamos o nome do arquivo
    sNomeCompleto = "At-" & sNumero & "_" & sNome & "_" & sNome2
       
    'Caminho (Pasta) definida na rotina
    sCaminho = "P:LABORATÓRIOAnálise técnica C.QAT"
       
    'Montamos o Hyperlink
    sArquivo = sCaminho & sNomeCompleto & ".xlsm"
      
        If sArquivo <> CStr(False) Then
            ActiveSheet.Hyperlinks.Add Range("A11"), sArquivo, TextToDisplay:=sNomeCompleto
        Else
            'Nenhum arquivo foi selecionado
        End If

End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/09/2017 11:23 am
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

Mauro,

nao consegui entender esta parte:
If sArquivo <> CStr(False) Then
ActiveSheet.Hyperlinks.Add Range("A11"), sArquivo, TextToDisplay:=sNomeCompleto
Else
'Nenhum arquivo foi selecionado
End If

o numero sequencial é dado por um textobox que fiz.
Me.txtcod = Range("A3").Value + 1
no range ("A3") tem uma formula que busca o ultimo valor da coluna A, usei um textbox para inserir este codigo.
neste teu codigo, quando for inserido este numero sequencial, utilizando este textbox "txtcod", ele sera inserido na planilha em formato de link??
e neste link sera o hiperlink para abrir a planilha??

vlw... obrigado

 
Postado : 15/09/2017 11:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Zeuh, é que fiz uma adaptação rápida da rotina que postou e ficou esta linha, mas pode apagar, ela fazia a verificação se foi selecionado algum arquivo, se não ela dava mensagem de nenhum arquivo selecionado, mas como está utilizando nomes da planilha para montar o nome d o arquivo, apague e deixe somente a instrução que cria o Hyperlink ;

'Esta instrução cria o Hyperlink, tambem ficou "A11" mas ajuste ao range que pretende.

ActiveSheet.Hyperlinks.Add Range("A11"), sArquivo, TextToDisplay:=sNomeCompleto

Será criado o Hyperlink na celula definida com o Caminho e Nome do arquivo da forma que você pediu :

'Montamos o nome do arquivo
    sNomeCompleto = "At-" & sNumero & "_" & sNome & "_" & sNome2

"At-1_KK_TTT.xlsm"

Qq duvida retorne

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/09/2017 12:16 pm
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

Mauro,

fiz conforme teu codigo acima, o link ficou na celula A11, porem, ele nao abre o arquivo aparece uma mensagem "não é possivel abrir o arquivo solicitado"

'Esta instrução cria o Hyperlink, tambem ficou "A11" mas ajuste ao range que pretende.

ActiveSheet.Hyperlinks.Add Range("A11"), sArquivo, TextToDisplay:=sNomeCompleto

quando a isso, gostaria que o hiperlink fosse criado na sequencia do preenchimento.
neste modo, o hiperlink sempre é criado no range ("A11")..

cada linha da coluna A preenchido sera um hiperlink, com seu respectivo nome.

vlw pelo help

 
Postado : 15/09/2017 12:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Zeuh, como eu disse no inicio, faltaram detalhes, então eu só adaptei para que a rotina crie o Hyperlink em uma determinada celula conforme as informações que postou, e ficou "A11" que era a que estava no exemplo que postou, mas é só modificar, como não conheço seu projeto estou indo por suposição, pois não sei como são criados estes numeros e como você está lançando os dados nesta planilha.

Quanto ao Hyperlink criado, ele funciona corretamente, o que você tem de ver é :
O caminho que você indicou, existe ?

'Caminho (Pasta) definida na rotina
sCaminho = "P:LABORATÓRIOAnálise técnica C.QAT"

O nome do arquivo criado da forma que orientou, ele já existe na pasta acima ?

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/09/2017 1:12 pm
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

Mauro,

os numeros são criado em um textbox, os lançamento é atraves de um formulario Userform.

o caminho é este mesmo, uso em outras macros e funciona..

outro detalhe é: a sequencia da macro para salvar a planilha esta depois deste codigo... isso interferia em alguma coisa??
ou deveria salvar a planilha primeiro e depois criar o hiperlink??

grato...

 
Postado : 18/09/2017 9:13 am
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

.... pois não sei como são criados estes numeros e como você está lançando os dados nesta planilha.

... O caminho que você indicou, existe ?

'Caminho (Pasta) definida na rotina
sCaminho = "P:LABORATÓRIOAnálise técnica C.QAT"

O nome do arquivo criado da forma que orientou, ele já existe na pasta acima ?

[]s

Mauro,

os numeros são criado em um textbox, os lançamento é atraves de um formulario Userform.

o caminho é este mesmo, uso em outras macros e funciona..

outro detalhe é: a sequencia da macro para salvar a planilha esta depois deste codigo... isso interferia em alguma coisa??
ou deveria salvar a planilha primeiro e depois criar o hiperlink??

grato...

Mauro, inverti a sequencia da macro.. deu certo.
ele abre o arquivo.

o que gostaria agora é colocar o link de acordo com a sequencia... alterar este codigo: ActiveSheet.Hyperlinks.Add Range("A11"), sArquivo, TextToDisplay:=sNomeCompleto

ou seja, nao criar o hiperlink em A11, e sim, na celula que sera preenchido pelo formulario userform.

valeu....

agradecido...

 
Postado : 18/09/2017 9:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Zeuh, a questão é como eu disse anteriormente :

"não sei como são criados estes numeros e como você está lançando os dados nesta planilha."

Mas você dizer que

"os numeros são criado em um textbox, os lançamento é atraves de um formulario Userform"

, não ajuda muito, teria de conhecer quais rotinas utiliza.

Mas, se a questão agora está em somente modificar o lançamento no "Range("A11")", é só você ver a linha em que efetua o lançamento pelo userform na planilha e alterar na instrução.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2017 12:42 pm
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

Mauro,

eu precisaria inserir uma instrução no codigo abaixo para criar o hiperlink sempre na ultima linha, e nao em A11.
ActiveSheet.Hyperlinks.Add Range("A11"), sArquivo, TextToDisplay:=sNomeCompleto

outra coisa, teria algum codigo para ocultar as barras do excel, ficando apenas a parte do excel (parte das celulas)??
apenas nesta planilha...

quando abrir outro arquivo, planilhas de excel, as barras ficam normal, visivel.

valeu mano...

muito obrigado

 
Postado : 18/09/2017 2:13 pm
 Zeuh
(@zeuh)
Posts: 30
Eminent Member
Topic starter
 

bom dia,

obrigado Mauro, juntando seu codigo enviado e ajuste que foram feito, ele cria o hiperlink na sequencia das linhas que forem inserido valores, atraves de um formulário userform.

segue codigo abaixo e imagem da planilha. (codigo apenas para criar hiperlink)

Dim sArquivo
    Dim sCaminho As String
    Dim sNome As String
    Dim sNome2 As String
    Dim sNomeCompleto
    Dim linha As Long
linha = 1

While ThisWorkbook.Sheets("lista mestra").Cells(linha, 1) <> ""


linha = linha + 1

Wend
linha = linha - 1
   
    Dim sNumero
    'o mesmo tem de ser alimentado nesta Variável
    sNumero = txtcod
    sNome = txt_descrição.Value
    sNome2 = txt_cliente.Value

   
   
    'Montamos o nome do arquivo
    sNomeCompleto = "AT - " & sNumero & "_" & sNome & "_" & sNome2
       
    'Caminho (Pasta) definida na rotina
    sCaminho = "P:LABORATÓRIOAnálise técnica C.QAT"
      
    'Montamos o Hyperlink
    sArquivo = sCaminho & sNomeCompleto & ".xlsm"
     
        If sArquivo <> CStr(False) Then
        
        ActiveSheet.Hyperlinks.Add Range("A" & linha), sArquivo, TextToDisplay:=sNomeCompleto
 
                Else
            'Nenhum arquivo foi selecionado
        End If
 
Postado : 21/09/2017 5:39 am