Esta foi uma pergunta feita num fórum e como é uma informação interessante, resolvi postar aqui.
Muita gente, aliás, todo mundo que trabalha com planilhas no dia a dia costuma proteger os arquivos mais críticos com senha de abertura do arquivo.
Até aí a coisa é simples meso para usuários básicos. Mas quando se quer automatizar este tipo de arquivo com VBA, por exemplo, abrindo-o através de outro arquivo, fica ou pouco complicado. Mas nem tanto.
Se reparar bem, ao ativar no próprio VBA o método Open da coleção Workbooks, será possível ver que um dos parâmetros da função é a senha de abertura do arquivo. O exemplo abaixo abre um arquivo de Excel via VBA:
1
2
3
| Sub AbreArquivo()
Call Workbooks.Open(FileName:="C:\arquivo.xls")
End Sub |
Porém, caso o arquivo contenha senha de abertura, bastaria adicionar o seguinte argumento:
1
2
3
4
| Sub AbreArquivoComSenha()
Call Workbooks.Open(FileName:="C:\arquivo.xls", _
Password:="1234")
End Sub |
Para informação, o método devolve um objeto do tipo Workbook que pode ser manipulado depois de aberto.
Isso resolve o problema. Claro, é preciso tomar os devidos cuidados para proteger o projeto VBA e não expor indevidamente a senha para o usuário. Recomenda-se também adicionar um tratamento de erros para inibir ainda mais as mensagens.
Em tempo, a mesma informação é válida para o Word/VBA, porém a coleção utilizada é a Documents e o nome do parâmetro é PasswordDocument. O código abaixo mostra um exemplo da aplicação.
1
2
3
4
| Sub AbreDocumentoComSenha()
Call Documents.Open(FileName:="C:\Documento.doc", _
PasswordDocument:="1234")
End Sub |
Abraços
Tomás
Fala pessoal,
Antes de mais nada, o título não refere a nada técnico OK? Programadores podem pensar que se trata do retorno de uma função ou algo parecido, enfim, programador tem cada uma.
Também não se trata de uma segunda versão de algum filme, com vinganças ou carnificina sem justificativa, coisa dos anos 80.
Bom, quem acompanha o blog deve ter percebido que parei um pouco com os posts. Mas não desisti do blog. Apenas alguns eventos dessa vida maluca que a gente leva me forçaram a deixar o blog de lado por um tempo. De qualquer forma, vamos fazer de conta que fui abduzido por seres extraterrestres, sem mais detalhes.
Tratarei de voltar a postar o quanto antes dicas de todo o tipo com o mesmo objetivo de sempre, que é dar uma força para a comunidade, satisfazer meu ego e quem sabe ganhar um graninha com os links patrocinados, porque o provedor não é de graça né?
Aquele abraço
Tomás
Fonte: Google Descovery

Fennect
O navegador móvel da Mozilla, que está atualmente em desenvolvimento e possui o codenome Fennec, deverá ganhar uma versão alpha dentro de algumas semanas.
John Lilly, Chefe-Executivo da Mozilla, afirmou que o desenvolvimento do produto está progredindo rapidamente.
“Queremos ter certeza que a internet no celular será como a Web que conhecemos, ao contrário daquilo que a indústria móvel oferece hoje, que está fechada, com redes separadas e experiência de uso danificada para o usuário. A primeira coisa a fazer é trazer o Firefox para aparelhos móveis. Estamos trabalhando nisso, e nós vamos ver alguns alphas dentro de algumas semanas. ” disse Lilly em entrevista ao San Jose Mercury News:
Embora as primeiras versões do Fennec já estejam sendo testadas em aparelhos da Nokia, a Mozilla possui planos e intenção de trazer suporte multi-plataforma ao navegador.
O que é?
A função MsgBox exibe uma caixa de mensagem ao usuário e aguarda com que o
usuário clique em um de seus botões para que esta seja fechada.
A estrutura de chamada à função MsgBox se faz da seguinte forma:
MsgBox([prompt][, buttons] [, title] [, helpfile, context]) As VbMsgBoxResult
Prompt
Obrigatória. Expressão de seqüência de
caracteres exibida como mensagem na caixa de
diálogo. O comprimento máximo de prompt é de aproximadamente 1.024
caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, você poderá separar as linhas utilizando um
caractere de retorno de carro (Chr(13)), um caractere de
alimentação de linha (Chr(10)) ou uma combinação de caracteres
de retorno de carro e alimentação de linha (Chr(13) & Chr(10)) entre cada linha.
Buttons
Opcional. Expressão
numérica que é a soma de valores que especifica o
número e o tipo de botões a exibir, o estilo de ícone a utilizar, a identidade
do botão padrão e a modalidade da caixa de mensagem. Se omitido, o valor
padrão para buttons é 0.
Title
Opcional. Expressão de seqüência de caracteres exibida
na barra de título da caixa de diálogo. Se você omitir title, o nome do
aplicativo será inserido na barra de título.
Helpfile
Opcional. Expressão de seqüência de caracteres que
identifica o arquivo de Ajuda a ser utilizado para fornecer ajuda
sensível ao contexto relativa à caixa de diálogo. Se helpfile for
fornecido, context também deverá ser fornecido.
Context
Opcional. Expressão numérica que é o número de
contexto da Ajuda atribuído ao tópico da Ajuda apropriado por
seu autor. Se context for fornecido, helpfile também deverá ser
fornecido.
Definições
As definições do argumento buttons são as seguintes:
| Constante |
Valor |
Descrição |
| VbOKOnly |
0 |
Exibe somente o botão OK. |
| VbOKCancel |
1 |
Exibe os botões OK e Cancelar. |
| VbAbortRetryIgnore |
2 |
Exibe os botões Abortar, Repetir e Ignorar. |
| VbYesNoCancel |
3 |
Exibe os botões Sim, Não e Cancelar. |
| VbYesNo |
4 |
Exibe os botões Sim e Não. |
| VbRetryCancel |
5 |
Exibe os botões Repetir e Cancelar. |
| vbCritical |
16 |
Exibe o ícone Mensagem crítica. |
| vbQuestion |
32 |
Exibe o ícone Consulta de aviso. |
| vbExclamation |
48 |
Exibe o ícone Mensagem de aviso. |
| vbInformation |
64 |
Exibe o ícone Mensagem de informação. |
| vbDefaultButton1 |
0 |
O primeiro botão é o padrão. |
| vbDefaultButton2 |
256 |
O segundo botão é o padrão. |
| vbDefaultButton3 |
512 |
O terceiro botão é o padrão. |
| vbDefaultButton4 |
768 |
O quarto botão é o padrão. |
| vbApplicationModal |
0 |
Janela restrita do aplicativo; o usuário deve responder à caixa de
mensagem antes de continuar o trabalho no aplicativo atual. |
| vbSystemModal |
4096 |
Janela restrita de sistema; todos os aplicativos são suspensos até que o
usuário responda à caixa de mensagem. |
| vbMsgBoxHelpButton |
16384 |
Adiciona o botão ‘Ajuda’ à caixa de mensagens |
| VbMsgBoxSetForeground |
65536 |
Especifica a janela da caixa de mensagens como a janela de primeiro
plano |
| vbMsgBoxRight |
524288 |
O texto é alinhado à direita |
| vbMsgBoxRtlReading |
1048576 |
Especifica que o texto deve aparecer como leitura da direita para a
esquerda em sistemas hebraico e árabe |
O primeiro grupo de valores (0 a 5) descreve o número e o tipo de botões
exibidos na caixa de diálogo; o segundo grupo (16, 32, 48, 64) descreve o
estilo de ícone; o terceiro grupo (0, 256, 512) determina qual botão é o
padrão e o quarto grupo (0, 4.096) determina a modalidade da caixa de
mensagem. Quando estiver somando números para criar um valor final para o
argumento buttons, utilize somente um número de cada grupo.
Observação Essas constantes são especificadas pelo
Visual Basic for Applications. Como resultado, os nomes podem ser utilizados
em qualquer lugar do seu código em vez dos valores reais.
Como o MsgBox é uma Função (Function), é possível capturar o
valor retornado conforme a ação do usuário.
Valores retornados
| Constante |
Valor |
Descrição |
| vbOK |
1 |
OK |
| vbCancel |
2 |
Cancelar |
| vbAbort |
3 |
Abortar |
| vbRetry |
4 |
Repetir |
| vbIgnore |
5 |
Ignorar |
| vbYes |
6 |
Sim |
| vbNo |
7 |
Não |
Exemplo
Apesar do grande número de opções e parâmetro oferecidos pelo MsgBox,
vamos nos concentrar em sua funcionalidade mais simples neste momento, que é
emitir mensagens ao usuários. Veja este exemplo de código abaixo:
1
2
3
| Public Sub TesteMsgBox()
MsgBox "Seja bem vindo ao Microsoft Excel!"
End Sub |
Execute a função e terá o seguinte resultado:
Na código de exemplo, apenas o primeiro parâmetro é informado, o suficiente
para fazer uso de mensagens simples. Porém é possível personalizar ainda mais
a caixa de mensagem conforme mostra o próximo código de exemplo:
1
2
3
| Public Sub TesteMsgBox()
MsgBox "Seja bem vindo ao Microsoft Excel!", vbInformation, "Testando o MsgBox"
End Sub |
Note que mais dois parâmetros foram informados, o parâmetro Button e Title. Execute a função e terá o seguinte resultado:
O parâmetro Title permitiu alterar o título da MsgBox, enquanto
o parâmetro Button alterou o contexto da informação. Como foi informado
que o botão a ser mostrado seria do tipo vbInformation, um ícone de
informação foi adicionado ao caixa e mensagem. Outro tipos de Buttons podem
ser utilizadas, que geraram diferentes ícones, conjunto de botões, alterando
inclusive o som que é executado ao mostrar a caixa. Claro que o ideal é sempre
colocar uma mensagem que esteja de acordo com o contexto. Veja a diferença da
aparência se mudar o parâmetro para o seguinte:
1
2
3
| Public Sub TesteMsgBox()
MsgBox "Ocorreu algum erro!", vbCritical, "Testando o MsgBox"
End Sub |
O resultado da execução do código será a seguinte:
Note a mudança do ícone e do som emitido pelo aplicativo. A mensagem também
foi alterada para refletir a contexto do ícone utilizado.
Comentários
Como o MsgBox é uma função (Function), sua execução retorna um
valor que é do tipo VbMsgBoxResult. Quando se utiliza alguns tipos
especiais de parâmetros Button, este retorna nos dá uma alternativa de
analisar a decisão do usuário com base no retorno do MsgBox.
Quando helpfile e context são fornecidos, o
usuário pode pressionar F1 (Windows) ou AJUDA (Macintosh) para visualizar o
tópico de Ajuda que corresponde ao context. Alguns
aplicativos host, por exemplo, o Microsoft Excel, também adicionam
automaticamente um botão Ajuda à caixa de diálogo. Se o usuário clicar
em OK ou pressionar , a função InputBox retornará o que estiver
na caixa de texto. Se o usuário clicar em Cancelar, a função retornará
uma seqüência de caracteres de comprimento zero (“”).
Observação Para especificar mais que o primeiro
argumento nomeado, você deve utilizar InputBox em uma expressão. Para
omitir alguns argumentos posicionais, você deve incluir o delimitador de
vírgula correspondente.
Pratique!
Caso não consiga abrir os arquivos, clique nos links com o botão direito do
mouse e escolha “salvar como”.
Baixe a planilha para praticar.