Notifications
Clear all

ThisWorkbook vs Application

7 Posts
3 Usuários
0 Reactions
1,456 Visualizações
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Amigos, gostaria de saber se alguém tem alguma ideia para esta situação.

Estou montando um relógio ponto (bem simples) que me pediram aqui no trabalho. Usando VBA, porque preciso garantir critérios de segurança e restrições (que me deram).

Para implementar estas questões de segurança e restrições, entre os recursos que estou inserindo, coloquei 2 códigos, um deles retira a visualização de tudo (barras cabeçalhos. etc.), e o outro desabilita o botão direito do mouse.

São eles:

Sub FullScreen_ON()
Application.ScreenUpdating = False
Dim i As Integer
Dim barras, nTela, Cont
On Error Resume Next
For Each barras In Application.CommandBars
    barras.Enabled = False
Next
Application.DisplayFullScreen = True
ActiveWindow.DisplayHeadings = False
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHorizontalScrollBar = False
'ActiveWindow.DisplayVerticalScrollBar = False
ActiveWindow.DisplayWorkbookTabs = False
Application.DisplayStatusBar = False
Application.ScreenUpdating = True
End Sub
Sub MenuBotaoDireito_OFF()
    Application.CommandBars("Worksheet Menu Bar").Enabled = False
    Application.CommandBars("Cell").Enabled = False
    Application.CommandBars("Sheet").Enabled = False
    Application.CommandBars("Ply").Enabled = False
    Application.CommandBars("Row").Enabled = False
    Application.CommandBars("Column").Enabled = False
End Sub

Porém, estou naquele velho dilema: Chamando os códigos ao abrir a planilha:

Private Sub Workbook_Open()

'Seção de segurança
    'módulo Mod_Security
Call FullScreen_ON
Call MenuBotaoDireito_OFF
Application.Visible = False

'Inicia o ponto
frm_ponto.Show

End Sub

Esses códigos só vão executar quando o usuário habilitar as macros. (O que seria um ponto frágil).

Dentre as opções que conheço, não atendem:
- Registrar as macros não será possível;
- Mexer na configuração dos PCs/Excel para rodar as macros automaticamente também não será possível;
- Editar a ribbon seria uma ideia, mas não é viável, porque no fechamento do mês vou precisar restaurar o Excel para o "padrão", para trabalhar com ele como planilha eletrônica mesmo (fazer cálculos etc).

Então,gostaria de saber se alguém teria uma outra sugestão de como lidar com isso (por exemplo, há como, ao fechar a planilha, incluir um código no evento BeforeClose que oculte a ribbon, por exemplo, somente nesta pasta de trabalho?

Resumindo, eu queria achar uma forma de trocar comandos que se refiram ao Excel por comandos que se refiram à pasta de trabalho:

Por exemplo, comandos como estes:

Application.DisplayStatusBar = True
ActiveWindow.DisplayHeadings = True

Por algo mais ou menos assim:

ThisWorkbook.DisplayStatusBar = True
ThisWorkbook.Window.DisplayHeadings = True

Alguém tem alguma ideia?

 
Postado : 21/11/2014 8:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Gilmar, boa tarde!

Não sei se entendi a sua dúvida... mas....

Segue:

Private Sub Workbook_Open()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    Application.DisplayFormulaBar = False
    ActiveWindow.DisplayHeadings = False
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
    Application.DisplayFormulaBar = True
    ActiveWindow.DisplayHeadings = True
End Sub

Att,

 
Postado : 21/11/2014 10:19 am
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Obrigado, Marciel, mas não era isso não.

Isso que vc sugeriu, na verdade eu já fiz (do mesmo modo que eu inseri as macros que desabilitam, tb coloquei as macros que reabilitam.

O que gostaria de saber mesmo, é uma forma de manipular via código, não o "application", mas somente a "pasta de trabalho" (sem editar diretamente o ribbon. (seria mais como manipular o ribbon via código)

 
Postado : 21/11/2014 10:57 am
(@selmo)
Posts: 236
Reputable Member
 

O que gostaria de saber mesmo, é uma forma de manipular via código, não o "application", mas somente a "pasta de trabalho" (sem editar diretamente o ribbon. (seria mais como manipular o ribbon via código)

Cogitou a hipótese de utilizar uma ribbon dinâmica? Você criaria parte do conteudo com XML e o restante ativaria ou alteraria com VBA.

Registrar as macros não será possível;
- Mexer na configuração dos PCs/Excel para rodar as macros automaticamente também não será possível;

Converta o arquivo para .EXE com o XLtoEXE. Assim as macros serão executadas sem a necessidade de habilitar ou desbloquear a central de confiabilidade.
http://cpap.com.br/orlando/XLtoExeMais.asp

Em todo o caso. seria facil criar a Ribbon e depois ativar ou desativar as opçoes normais editando o XML.

Dá uma olhada nesse artigo, acho que pode lhe interessar.
http://www.linhadecodigo.com.br/artigo/ ... amico.aspx

 
Postado : 21/11/2014 12:21 pm
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

selmo,

Obrigado, mas eu estava tentando evita estas estratégias.

converter a plan para *.exe não estava nos planos, mesmo assim, tentei usar o programa que vc indicou, e é bloqueado na empresa :/

Sobre criar toda a ribbon (eu tinha descartado, pelo trabalho que vai dar, e por termos diferentes versões do Excel).

Enfim, acho que vou acabar ficando com a dor de cabeça mesmo (deixar como está).

 
Postado : 24/11/2014 4:29 pm
(@selmo)
Posts: 236
Reputable Member
 

Entendo, mas só por curiosidade, as macros que serão executadas, qual o problema em habilitar na central de confiabilidade a execução?

 
Postado : 25/11/2014 11:52 am
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Entendo, mas só por curiosidade, as macros que serão executadas, qual o problema em habilitar na central de confiabilidade a execução?

Pessoas, muitas delas.

Como trabalho em uma empresa que também fabrica computadores, o pessoal do TI é muuuuuuito chato. Eles devem achar que se eu trocar o papel de parede do Windows o computador explode (e olhe que já levei bronca por causa disso).

E também, várias pessoas vão utilizar o arquivo, e tenho que prever a rotatividade de pessoas e de computadores (se um computador novo vier, ou se for formatado, já não daria muito certo).

Além disso, como estou fazendo um relógio ponto (bem simples), a ideia é evitar que ele seja burlado (mas não quero criar algo super demorado de fazer, porque não trabalho com isso - um motivo para não querer refazer toda a ribbon).

 
Postado : 25/11/2014 12:01 pm