Forçando seus clientes a Ativar Excel Macros

Para usar qualquer macro no Excel, os usuários devem ativar macros. Ou seja, eles devem dar permissão Excel para executar macros em seu ambiente. Para ativar macros, os usuários clicam no botão Conteúdo no aviso de segurança que aparece acima da barra de fórmulas Ativar.

image0.jpg

A linha inferior é que você pode escrever todas as macros extravagantes do mundo, mas eles nunca funcionará a menos que seus usuários habilitar as macros. Isto suscita a pergunta você pode forçar os usuários a ativar macros? A resposta é sim - com um pouco de artifícios.

A ideia é relativamente simples. Você cria uma folha com o nome, digamos, Start. Essa folha contém apenas uma simples advertência informando que as macros devem ser ativadas. Você, então, esconder todas as folhas no livro, exceto para que a folha INÍCIO. Finalmente, você gravar uma macro simples que unhides todas as folhas quando o livro é aberto.

image1.jpg

Neste ponto, quando o livro é aberto, Excel irá pedir ao usuário ativar macros. Os usuários serão forçados a fazê-lo, porque todos eles vão ver é a sua folha Start. As outras folhas serão escondidos!

Para fazer este trabalho técnica, você precisa de duas macros: Um macro oculta todos, mas a folha de início, quando o livro se fecha e outra macro que unhides todos, mas a folha de iniciar quando o livro é aberto.

Em primeiro lugar, abordar as ações que precisam acontecer quando o livro se fecha. :

  1. Ative o Editor do Visual Basic pressionando ALT + F11 no seu teclado

  2. Na janela Project, encontrar o seu nome do projeto / pasta de trabalho e clique no sinal de mais ao lado e veja todas as folhas.

  3. Clique ThisWorkbook.

  4. Na caixa drop-down do Evento, selecione o evento BeforeClose.

    image2.jpg
  5. Digite ou cole o seguinte código:

Private Sub Workbook_BeforeClose (Cancel As Boolean) "Passo 1: Declare seus ws variablesDim Como Worksheet'Step 2: Unhide os SheetSheets de partida (" START ") Visible = xlSheetVisible'Step. 3: Comece looping através de todos worksheetsFor Cada ws Em ThisWorkbook.Worksheets 'Etapa 4: Verifique cada planilha nameif ws.Name lt;> "START" Then'Step 5: Esconder o sheetws.Visible = xlVeryHiddenEnd If'Step 6: Loop para próxima worksheetNext ws'Step 7: Salve o workbookActiveWorkbook.SaveEnd Sub

Na Etapa 1, você declarar um objeto chamado ws para criar um recipiente de memória para cada planilha que você fará um loop em.

Na Etapa 2, você garante que a folha de INÍCIO é visível.

Na Etapa 3, você inicia o looping, dizendo Excel que pretende avaliar todas as planilhas neste livro.

Na etapa 4, você simplesmente comparar o nome START para a folha que está actualmente a ser enrolado. Essa etapa assegura que as ações que vêm a seguir são aplicadas a todos os exemplares, excepto a folha de INÍCIO.

Se os nomes das folhas são diferentes, no Passo 5 você ocultar a folha usando a propriedade xlVeryHidden. Esta propriedade não apenas oculta a folha, mas também impede que o usuário reexibir-lo manualmente usando a interface do usuário.

Você loop de volta para obter a próxima folha na Etapa 6.

Na etapa 7, depois de todas as folhas são avaliadas, a macro guarda o livro e termina.

Agora, você tem que escrever uma macro para lidar com todas as ações que precisam acontecer quando o livro é aberto:

  1. Ative o Editor do Visual Basic pressionando ALT + F11.

  2. Na janela Project, encontrar o seu nome do projeto / pasta de trabalho e clique no sinal de mais ao lado e veja todas as folhas.

  3. Clique ThisWorkbook.

  4. Na caixa drop-down do Evento, selecione o evento Open.

    image3.jpg
  5. Digite ou cole o seguinte código:

Private Sub Workbook_Open () 'Passo 1: Declare seus ws variablesDim Como Worksheet'Step 2: Iniciar loop através de todos worksheetsFor Cada ws Em ThisWorkbook.Worksheets'Step 3: Unhide All Worksheetsws.Visible = xlSheetVisible'Step 4: Loop para próximos ws worksheetNext "Passo 5:. Esconder Iniciar SheetSheets (" Start ") Visible = xlVeryHiddenEnd Sub

Na Etapa 1, você declarar um objeto chamado ws para criar um recipiente de memória para cada planilha que loop.

Na Etapa 2, você inicia o looping, dizendo Excel que pretende avaliar todas as planilhas neste livro.

Na Etapa 3, você reexibir a folha que está actualmente a ser enrolado. Esta etapa unhides eficazmente todas as planilhas de cada folha é feita visível.

Você loop de volta para obter a próxima folha no Passo 4.

Depois de todas as folhas se tornam visíveis, Passo 5 esconde a folha de INÍCIO. Mais uma vez, você usa a propriedade xlVeryHidden para que o usuário não será capaz de mostrá manualmente a folha usando a interface do usuário.

Depois de ambas as macros são implementadas, você terá um livro que irá funcionar apenas se o usuário permite macros!

menu