Paulo, são tantas coisas pra fazer que acabei me esquecendo do seu caso, andei dando uma olhada e como ainda temos algumas diferenças nas Linhas e como todas agora serão na coluna 15, ajustei a rotina para que verfique a coluna e depois faz uma verificção se a palavra "DOCUMENTO" está na linha 2 ou nas linhas 2 e 6 e então continua a rotina, fazendo a verificação se na celula clicada já existe um hyperlink, se não abre a janela para selecionar o arquivo e grava na celula o caminho.
Outra coisa é que esta rotina não precisa ser colocada no evento de cada aba, e sim somente no evento do Workbook e valerá para todas as abas, então apague as rotinas que colocou nas abas e cole esta no Evento do Workbook, ou seja, de dois cliques em "EstaPasta_de_trabalho" e cole a rotina abaixo.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim sRgn As Range
Dim sArquivo
Dim sEspecificação As String
Dim sTítulo As String
Dim sNome
Dim sPath As String
Dim sDirAtual As String
'Verifica se foi clicado em qualquer Celula da coluna 15 (O), se não sai da rotina
'Padronizei todas as planilhas de cadastros para coluna 15 (O)
If Target.Column = 15 Then
'Faz a verificação qto a palavra Documento em qual linha se encontra
If Range("O2").Value = "DOCUMENTO" Then sCase = 1 'Se for somente na Linha 2 define o Case como 1
If Range("O2").Value = "DOCUMENTO" And Range("O6").Value = "DOCUMENTO" Then sCase = 2 'Se for na Linha 2 e 6 define o Case como 2
'Os Cases são somente para verificação das linhas que contem a palavra DOCUMENTO
'e dependendo da linha que foi selecionada sai da rotina, se não continua
Select Case sCase
Case 1
If Target.Row <= 2 Then Exit Sub
Case 2
If Target.Row <= 6 Then Exit Sub
Case Else
End Select
'Verifica se na celula já existe Hyperlink, Se existir abre o arquivo e sai da rotina
If ActiveCell.Hyperlinks.Count Then Exit Sub
'Se não existir continua
'Definimos e armazenamos o endereço da celula clicada
Set sRgn = Range(Target.Address(0, 0))
sDirAtual = CurDir 'Armazena em memória o caminho original
'Definimos o novo caminho (Diretório) dos PDF(s)
sPath = "P:"
ChDrive sPath
ChDir sPath
'Textos da caixa de dialogo
sEspecificacao = "Arquivos de PDF (*.pdf*),*.pdf*" 'Tipo do
sTítulo = "Selecione um arquivo PDF:"
'Definimos e armazenamos o endereço da celula clicada
Set sRgn = Range(Target.Address(0, 0))
sArquivo = CStr(Application.GetOpenFilename(sEspecificacao, , sTítulo, , False))
'Redefinimos para o caminho anterior
ChDrive sDirAtual
ChDir sDirAtual
'Armazenamos somente o Nome do arquivo sem o caminho
sNome = Dir(sArquivo)
'Se nenhum arquivo foi selecionado sai da rotina
If sArquivo <> CStr(False) Then
sRgn = sNome 'Coloca somente o Nome do arquivo na celula
ActiveSheet.Hyperlinks.Add sRgn, sArquivo 'Cria o hyperlink
Else
'Nenhum arquivo foi selecionado
End If
Else
End If
End Sub
Faça os testes e veja se agora acertamos.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 01/06/2015 6:55 pm