quinta-feira, 22 de abril de 2010

Achando o último dia do mês


Em algumas aplicações, principalmente as financeiras, às vezes é necessário obter o último dia de cada mês.

Seguem duas formas, uma com fórmula do Excel e outra em VBA.

Detalhe interessante: dia zero é o último dia do mês anterior.


;-)



Private Sub teste()
Dim ultimo_dia_mes As Date
ultimo_dia_mes = CDate(1 & "/" & Month(Now()) + 1 & "/" & Year(Now())) - 1
If ultimo_dia_mes = Format(Now, "dd/mm/yyyy") Then
MsgBox "ultimo dia"
End If
End Sub





Acrescentando intervalos à data corrente

Uma dica simples para "fechar a loja" por hoje, afinal o dia começa cedo e agora (01:58 hrs) é bem cedo...
Supondo que numa célula, haja a fórmula com a data de hoje: =AGORA( ).
Se eu quiser saber a data daqui a 5 dias, basta fazer isto: = agora() + 5.
Para acrescentar 1 hora e 15 minutos: =agora() + tempo(1;15;0).

É isso aí.
Pelo menos não fecho o dia com um assunto "não Excel".

;-)))

Onde vamos parar ???

Não acredito no que acabo de ver.
Uma grande revista de informática escrevendo "tuíte" no seu site...
Daqui a pouco vai aparecer o "aipéd" e coisas do gênero!
Para mim só tem uma explicação: preguiça de escrever certo.

Arghhh....

p.s.: Apesar do assunto não ter nada a ver com o "Equicél" (perceberam como ficou ridículo?), fica a dica para não fazerem isso em seus textos no Office e espero que o Word continue indicando essas aberrações como palavras incorretas.

sábado, 17 de abril de 2010

Video aulas no YouTube

Para quem gosta de vídeo-aulas, o YouTube está "recheado" de tutoriais de Excel e também de muitos outros softwares.
http://www.youtube.com/results?search_query=excel&aq=f
Sempre gostei de cursos multimídia, mas dando uma olhada nos tutoriais de Excel do YouTube, notei que a qualidade ainda deixa muito a desejar.
O vídeo é só razoável e o áudio muito pobre, provavelmente gravado com esses microfones caseiros (se não estiver enganado, são de eletreto).
Até hoje não vi nenhum curso multimídia que se comparasse em qualidade de aúdio e vídeo com os cursos da antiga Editora Terra, estes com vídeo muito bem trabalhado e áudio gravado em um estúdio de verdade.
Boa sorte para quem quiser tentar.

;-)

A pessoa que inventou deve ter achado o máximo!


Costumo dizer que a maioria dos inventores não usa o que inventa, pois certas "invenções" simplesmente não são funcionais, causam mais problemas do que ajudam ou é totalmente inútil.
Exemplo "simples" é a faixa de opções do Office 2007 que até hoje, não vi alguém que soubesse explicar qual é a lógica do agrupamento dos comandos.
Veio para atrapalhar a vida de quem já estava habituado com o funcional, intuitivo e tradicional menu.
Pior de tudo é que, outros desenvolvedores de software acharam linda a invenção e estão adotando o mesmo visual e agrupamento...
Vou deixar aqui a imagem de uma invenção que ilustra bem a situação. Pensaram na segurança para evitar spammer's e o recurso ficou tão seguro que nem o próprio dono da conta consegue mandar um simples e-mail!
Aliás, acho que nem mesmo o inventor dessa ... (deixa pra lá...) consegue acertar na primeira tentativa as letras.

;-)



quarta-feira, 14 de abril de 2010

Relógio numa célula

Bem simples:

;-)



Dim hora_atual As Date

Sub hora()

ThisWorkbook.Sheets("Plan1").Range("A1").Value = Format(Time, "hh:mm:ss")
Call acerta_hora

End Sub

Sub acerta_hora()

hora_atual = Now + TimeValue("00:00:01")
Application.OnTime hora_atual, "hora"
End Sub

Sub parar()
Application.OnTime EarliestTime:=hora_atual, Procedure:="hora", Schedule:=False
End Sub


terça-feira, 13 de abril de 2010

Listando emails do Outlook numa tabela do Access

Esta demanda partiu de um colega que precisou listar os emails pelos títulos em ordem cronológica.
Abaixo o código para consulta ou para quem precisar.
Rodamos no Office 2007.
Não esquecer de marcar a referência "Microsoft ActiveX Data Objects", qualquer versão.

;-)




Sub Listar_emails_Access()

Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection

Dim contador_itens As Integer
Dim nms As Outlook.NameSpace
Dim fld As Outlook.MAPIFolder
Dim itm As Object

Set nms = Application.GetNamespace("MAPI")
Set fld = nms.PickFolder

cnn.Open "Provider=Microsoft.JET.OLEDB.4.0;" & "Data Source=" & "C:\banco.mdb"

rst.Open "Tabela1", cnn, adOpenKeyset, adLockOptimistic

contador_itens = fld.Items.Count

For Each itm In fld.Items
If itm.Class = olMail Then
rst.AddNew
rst!titulo = itm.Subject
rst!Data = itm.ReceivedTime
rst.Update
End If
Next itm

rst.Close
cnn.Close

MsgBox "Fim"

End Sub

terça-feira, 6 de abril de 2010

Código para importação de arquivo texto delimitado

Vou deixar aqui só para eventual consulta.
O delimitador é o ponto-e-vírgula.
Arquivo texto sem cabeçalho.

;-)

Sub importa_delimitado()
   
    Dim entrada         As String       'linha do txt
    Dim i               As Single       'número de caracteres
    Dim linha           As Integer
    Dim coluna          As Integer
    Dim texto           As String       'texto a ser gravado na célula
    Dim ultimo          As Boolean      'controle do último caracter da linha
   
    Open "C:\Users\kazu\Desktop\pasta1.csv" For Input As #1
        
    linha = 1
    coluna = 1
    Do While Not EOF(1)
        Line Input #1, entrada
        For i = 1 To Len(entrada)
            If Mid(entrada, i, 1) = ";" Then
                Cells(linha, coluna).Value = texto
                coluna = coluna + 1
                texto = ""
            Else
                'Se for o último caracter, grava na célula
                If i = Len(entrada) Then
                    texto = texto & Mid(entrada, i, 1)
                    Cells(linha, coluna).Value = texto
                    coluna = coluna + 1
                    texto = ""
                    ultimo = True
                End If
                If Not ultimo Then texto = texto & Mid(entrada, i, 1)
            End If
            ultimo = False
        Next
        linha = linha + 1
        coluna = 1
    Loop
 
    Close #1
 
End Sub


domingo, 4 de abril de 2010

Inserindo células copiadas em outro intervalo


Boas!

Para inserir um grupo de células em outro intervalo, muita gente costuma primeiro inserir novas células para depois colar o conteúdo copiado.
O meio mais fácil de fazer isso, é clicar com o botão direito, selecionar "Inserir células copiadas..." e depois optar por deslocar as células à direita ou abaixo.
No exemplo bem simples, eu inseri os números 4, 5 e 6 na primeira coluna em seus respectivos lugares.

;-)

Obtendo o reembolso pelo Windows OEM

Apenas vou deixar o link aqui.
Parabéns ao Otto Teixeira que conseguiu essa façanha e que muitos outros tenham sucesso contra a prepotência das empresas.

http://ottoteixeira.com/2010/03/21/como-conseguir-o-reembolso-pelo-windows-oem/

Espero que o link da Info não saia do ar tão rapidamente:
http://info.abril.com.br/noticias/tecnologia-pessoal/ele-rejeitou-o-windows-e-foi-reembolsado-24032010-34.shl


;-)

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.