Notifications
Clear all

Ajuda com codigo de versionamento readonly e fazer hyperlink

10 Posts
2 Usuários
0 Reactions
3,449 Visualizações
(@faelcarvalho)
Posts: 8
Active Member
Topic starter
 

Bom doa galera, estou com 1 problema em um codigo feito para quando o usuario clicar em salvar automaticamente o Excel criar um versão readonly e fazer um hyperlink da mesma no menu de projetos
O problema é que algumas vezes quando clico em salvar o excel trava totalmente e fecha, porém as vezes funciona...
será que poderiam me ajudar?
O codigo é esse:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim nameFile As String
Dim version As String
nameFile = ActiveWorkbook.Name
version = Format(Now, "dd-mm-yyyy-hhmm")
nameFile = nameFile & "-" & version & ".xlsm"
Dim namePlan As String
namePlan = nameFile
ActiveWorkbook.SaveCopyAs "C:Documents and SettingsalexDesktoptestandoExcel" & nameFile
nameFile = "C:Documents and SettingsalexDesktoptestandoExcel" & nameFile

SetAttr nameFile, vbReadOnly

Plan1.Activate
Dim value As Integer
value = ActiveSheet.Range("G1")
value = value + 1
ActiveSheet.Range("G1") = value
ActiveSheet.Range("B" & value).Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
nameFile, _
TextToDisplay:=namePlan

End Sub

 
Postado : 08/10/2012 6:03 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Aparentemente o "erro" só se dará, quando o arquivo ainda estiver dentro do mesmo minuto, pois tera o mesmo nome/descrição.

Nos teste que fiz assim funcionou:

Dim nameFile As String
Dim version As String
nameFile = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
version = Format(Now, "dd-mm-yyyy-hhmmss")
nameFile = nameFile & "_" & version & ".xlsm"
Dim namePlan As String
namePlan = nameFile

ActiveWorkbook.SaveCopyAs "C:Documents and SettingsalexDesktoptestandoExcel" & nameFile

SetAttr "C:Documents and SettingsalexDesktoptestandoExcel" & nameFile, vbReadOnly


Plan1.Activate
Dim value As Integer
value = ActiveSheet.Range("G1")
value = value + 1
ActiveSheet.Range("G1") = value
ActiveSheet.Range("B" & value).Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=nameFile, TextToDisplay:=namePlan

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

 
Postado : 08/10/2012 7:18 am
(@faelcarvalho)
Posts: 8
Active Member
Topic starter
 

Aparentemente o "erro" só se dará, quando o arquivo ainda estiver dentro do mesmo minuto, pois tera o mesmo nome/descrição.

Nos teste que fiz assim funcionou:

Dim nameFile As String
Dim version As String
nameFile = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
version = Format(Now, "dd-mm-yyyy-hhmmss")
nameFile = nameFile & "_" & version & ".xlsm"
Dim namePlan As String
namePlan = nameFile

ActiveWorkbook.SaveCopyAs "C:Documents and SettingsalexDesktoptestandoExcel" & nameFile

SetAttr "C:Documents and SettingsalexDesktoptestandoExcel" & nameFile, vbReadOnly


Plan1.Activate
Dim value As Integer
value = ActiveSheet.Range("G1")
value = value + 1
ActiveSheet.Range("G1") = value
ActiveSheet.Range("B" & value).Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=nameFile, TextToDisplay:=namePlan

Primeiramente obrigado pela atenção Reinaldo, o excel agora está dando erro ao salvar, ele apresenta primeiramente essa mensagem:

"Erros ao salvar C:/...Talvez o microsoft office excel possa salvar o arquivo removendo ou reparando aguns erros.para fazer os reparos em um novo arquivo, clique em Continuar.Para cancarlar o salvamento do arquivo, clique em Cancelar."

E quando clico em salvar da o seguinte erro:
"o Excel encontrou erros ao salvar. No entanto, o excel pode salvar minimamente o arquivo em C:......XLSB"

 
Postado : 08/10/2012 8:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Para mim continua sem dar erro (veja o anexo), talvez possa mandar seu arquivo (sem os dados) para que possamos testar
Obs.: Altere o diretorio

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

 
Postado : 08/10/2012 8:49 am
(@faelcarvalho)
Posts: 8
Active Member
Topic starter
 

Realmente a sua está funcionando 100%
Anexei as 3 planilhas minhas aqui, sendo que a Planilha Financeira e a planilha Tecnica são as que utilizam o codigo, já a de configuração é onde são contidas informações de usuarios recursos, etc...

A senha para acesso da planilha é ADM/123 (selecionar o CheckBox p/ logar como admin)

desde já obrigado pela ajuda

 
Postado : 08/10/2012 9:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Rafael, Não entendo onde possa estar gerando erro.Não encontrei/não tive problemas em salvar a copias, e gerar os hiperlinks com nenhum dos 2 arquivos.
Sómente ao abrir um dos arquivos pelo hiperlink, qdo navega-se de um para o outro, é solicitado novamente a senha para os mesmos, devido ao codigo no windows.activate.
Obs.:As formulas na coluna A da plnilha Descritiva (PlanilhadeEstimativaTecnica.xlsm) estão gerando um erro de referencia circular.
Referencia circular e gerado quando uma formula faz alusão a propria celula onde está "ancorada" para definir seu valor/conteudo.
Exemplo.: Em A5 = SE(Técnica!G11="";A50=0;SE(Técnica!G11<>"";Técnica!G11)).
Essa formula poderia ser: SE(Técnica!G11="";0;Técnica!G11)

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

 
Postado : 08/10/2012 9:59 am
(@faelcarvalho)
Posts: 8
Active Member
Topic starter
 

Obrigado pela dica Reinaldo, vou testar as planilhas em outro PC para ver se o problema não é no proprio Excel x)
Vlw!!

 
Postado : 09/10/2012 5:48 am
(@faelcarvalho)
Posts: 8
Active Member
Topic starter
 

Reinaldo sem querer abusar da sua boa vontade, será que vocÊ sabe o comando para que eu nao precise passar um caminho no SaveCopyAs?
Por exemplo minha planilha ativa encontra-se em C:/Planilhas, queria saber se tem como o VBA descobrir o caminho da planilha original e salvar a versão ReadOnly minha na mesma pasta.
Desde já muitissimo obrigado!

 
Postado : 09/10/2012 6:30 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Voce pode experimentar assim

   Path = ThisWorkbook.Path ' Obtem o caminho da planilha aberta
   ChDir Path                        ' Altera o diretorio de trabalho   
    ActiveWorkbook.SaveCopyAs nameFile 'Salva o arquivo
    
    SetAttr nameFile, vbReadOnly ' Altera o atributo

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

 
Postado : 09/10/2012 6:45 am
(@faelcarvalho)
Posts: 8
Active Member
Topic starter
 

Muito obrigado pela ajuda Reinaldo :D

 
Postado : 09/10/2012 6:57 am