Eventualmente dicas sobre outros programas, Windows e hardware.
domingo, 19 de dezembro de 2010
Mais uma opção ao Microsoft Office
Talvez algum desenvolvedor ainda tenha uma super idéia, faça algo realmente diferente e quem sabe, chame mais a atenção dos usuários em geral.
Link para quem quiser experimentar:
http://product.thinkfree.com/office
A propósito, +/- U$ 50.
;-)
quinta-feira, 9 de dezembro de 2010
Uma "outra" opção em suíte Office livre - LIBRE OFFICE
Ainda não testei, fica para outra ocasião e depois eu coloco aqui as impressões.
No time que toca o projeto, um brazuca, Claudio Filho que dentre outras coisas, co-fundou a comunidade BROffice.org.
Link:
http://www.documentfoundation.org/
;-)
segunda-feira, 6 de dezembro de 2010
Conectando o Excel 2007 via ADO
Sub ado_2007()
Dim cnn As New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\teste_ado.xlsx;" & _
"Extended Properties=" & Chr(34) & "Excel 12.0;HDR=Yes" & Chr(34)
cnn.Open
cnn.Close
End Sub
sábado, 13 de novembro de 2010
Separar planilhas
Por exemplo, a partir de planilha de vendas onde estão os dados de todos os vendedores, criar uma nova planilha para cada vendedor.
Muitas soluções criativas já foram propostas e eu vou deixar a minha aqui.
Fiz em Access pela facilidades que o aplicativo oferece.
Baixem o aplicativo no link, na pasta "Exemplos Excel" (apesar de ser em Access...).
O código está aberto para quem quiser melhorar ou personalizar, basta abrir segurando a tecla shift.
http://www.4shared.com/dir/jufLzdx2/Compartilhado.html
;-)
domingo, 7 de novembro de 2010
MariaDB
Criado pelos desenvolvedores do MySQL que não se deram bem com a Sun Microsystems, parece ser algo promissor, exatamente na contramão do MySQL, que neste momento aparenta estar com o futuro obscuro e incerto.
http://www.maria.org
;-)
quinta-feira, 4 de novembro de 2010
Verificando o tamanho das pastas e listando no Excel
Option Explicit
Dim objFSO As Object
Dim pasta As Object
Dim subpasta As Object
Dim linha As Integer
Dim diretorio As String
Dim UserFile As String
Private Sub cmd_verifica_Click()
UserFile = GetDirectory("Selecione a pasta")
If UserFile = "" Then
Exit Sub
Else
Me.MousePointer = fmMousePointerHourGlass
Call subpastas(UserFile)
Me.MousePointer = fmMousePointerDefault
Unload Me
End If
End Sub
Sub subpastas(diretorio As String)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set pasta = objFSO.GetFolder(diretorio)
Set subpasta = pasta.SubFolders
ActiveSheet.Range("A1").CurrentRegion.Clear
linha = 2
ActiveSheet.Cells(1, 1) = "Nome da pasta"
ActiveSheet.Cells(1, 2) = "Tamanho"
For Each pasta In subpasta
DoEvents
ActiveSheet.Cells(linha, 1) = Mid(diretorio, 3, 99) & "\" & pasta.Name
ActiveSheet.Cells(linha, 2) = pasta.Size
linha = linha + 1
Next
ActiveSheet.Columns("A:B").AutoFit
ActiveSheet.Range("B:B").NumberFormat = "#,##0"
Call classifica
ActiveSheet.Cells(1, 1).Select
End Sub
Sub classifica()
Columns("A:B").Select
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B100"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range("A1:B100")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
domingo, 31 de outubro de 2010
Preço de software
Sempre fui um crítico dos preços de software no Brasil.
domingo, 10 de outubro de 2010
Contrato de desenvolvimento de software
terça-feira, 5 de outubro de 2010
Utilitários para o Excel
Título estranho, mas é isso mesmo: utilitários para o Excel.
sexta-feira, 1 de outubro de 2010
O que há de novo no Excel 2010
Conectando o Access 2007 via VBA
Option Explicit
Dim cnn As ADODB.Connection
Sub teste()
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\banco.accdb"
rst.Open "Select * FROM TABELA1", cnn, adOpenKeyset, adLockOptimistic
MsgBox rst(0)
rst.Close
cnn.Close
domingo, 25 de julho de 2010
"Fernando (Alonso) é mais rápido que você, confirme que você entendeu a mensagem!
sábado, 10 de julho de 2010
Blog de vagas e oportunidades
sexta-feira, 9 de julho de 2010
Criar email via VBA no Outlook - late binding
Não esquecer:
- Que na hora do "Send", o Outlook vai dar um aviso de que outro programa está tentando enviar mensagens;
- O Outlook deve estar aberto na hora da execução do código.
;-)
Sub email()
Set olapp = CreateObject("Outlook.Application")
olapp.Session.Logon
Set mensagem = olapp.CreateItem(0)
With mensagem
.To = ""
.CC = ""
.BCC = ""
.Subject = ""
.Body = ""
.display
.Send
End With
End Sub
segunda-feira, 14 de junho de 2010
Sobre o limite de 2Gb no Access
Meu recado para os colegas:
O limite de 2Gb é para 1(um) mdb. Nada impede que se coloque tabelas em outros mdb's e se trabalhe com as mesmas vinculadas.
Utilizando-se esse recurso do Access, o limite praticamente deixa de existir, pois basta distribuir as tabelas de forma que cada mdb fique dentro dos 2Gb.
Importante lembrar que os 2Gb são para os dados e os objetos de sistema.
Na prática, o que se tem de espaço para dados são 2Gb menos os objetos de sistema.
Recomendo nunca ultrapassar 1,5Gb de mdb. Pode parecer conservador demais, mas já tive mdb's que quando chegaram a 1,9Gb começaram a dar problemas, desde então, passei a trabalhar tranquilamente dentro dos 1,5Gb.
Ainda penso que SQL Server Express + Access é uma dupla imbatível para desenvolver aplicações com bancos de dados.
O Access é uma ferramenta de desenvolvimento praticamente completa, só faltava gerar executáveis. Além disso, não tem outro aplicativo no mercado com um gerador de relatórios tão completo como o do Access.
VBA então nem se fala, muito fácil de usar.
Front End feito no Access e banco de dados no já sabidamente estável, confiável e robusto SQL Server atendem muito bem as aplicações corriqueiras de pequeno/médio porte.
;-)
p.s. Nem pensem em fazer banco de dados em Excel, ele não foi criado para essa finalidade!!!
Office 2010
No lugar dele, agora temos de volta o item de menu "Arquivo" ou "File".
Após o lançamento oficial, eu volto a comentar sobre o assunto, pois pelo que sei, as versões que estão por aí, são beta's e portanto passíveis de mudanças.
Você já devem ter visto um comentário que postei aqui no blog, falando sobre a complicação que é a nova "faixa de opções", que até agora não vejo lógica nenhuma no agrupamento de comandos.
Quem sabe o "sumiço" do botão Office não seja uma volta às origens, afinal o que há de mal em voltar atrás numa idéia infeliz???
;-))))
Comentários no código VBA
O usual é usar um apóstrofe antes da linha do comentário, mas relembrando do bom e velho Visual Basic do meu TK 83, vi que o comando REM ("remarks") funciona também!
Único porém é que ele só serve quando está no início da linha (o apóstrofe funciona em comnetários na mesma linha após o código).
Exemplo:
'Este é um comentário
REM segunda linha do comentário
;-)
sábado, 5 de junho de 2010
CASE no SQL do Access
Enfim, outro dia eu precisei usar um CASE no Access e depois de algumas tentativas vi que não funcionava.
Após uma pesquisa pela net, descobri que não funciona mesmo e que é preciso usar um "Switch".
Dá mais trabalho para escrever, mas funciona.
Alguns dirão "é óbvio, você não sabia disso?".
Pois é, eu não sabia e agora estou sabendo!
;-)
SELECT
SWITCH
(
PRODUTO = 1, 'PRIMEIRO',
PRODUTO = 2, 'SEGUNDO'
) AS PRODUTO,
FROM TABELA
quinta-feira, 20 de maio de 2010
Manipulando a área de transferência do Windows (ClipBoard)
Marcar a referência "Microsoft Forms Object Library".
Se tiver um form no VBA, a referência estará automaticamente marcada.
;-)
Dim area As DataObject
Dim texto As String
Sub colar_da_area_de_transferencia()
Dim temp_area As New DataObject
temp_area.GetFromClipboard
MsgBox temp_area.GetText
End Sub
Sub limpa_area_transferencia()
Dim temp_area As New DataObject
temp_area.SetText ""
temp_area.PutInClipboard
End Sub
Sub copiar_para_area_de_transferencia()
Dim temp_area As New DataObject
temp_area.SetText "Texto"
temp_area.PutInClipboard
End Sub
segunda-feira, 17 de maio de 2010
Desvio padrão em VBA
;-)
Option Explicit
' variáveis para cálculo do desvio padrão
'========================================
Dim valores() As Double
Dim desvio_padrao As Double
Dim qtd_valores As Integer
Dim soma As Double
Dim soma_1 As Double
Dim i As Integer
Dim media As Double
'========================================
'Cálculo de desvio padrão
'Exemplo para valores na coluna A a partir de A1
'Os valores devem estar em células contíguas
'Resultado em B1
Sub calcular()
qtd_valores = Range("A1").CurrentRegion.Rows.Count
ReDim valores(qtd_valores)
For i = 1 To qtd_valores
valores(i) = Sheets("plan1").Cells(i, 1)
Next i
desvio_padrao = f_desvio_padrao(qtd_valores, valores)
Sheets("plan1").Cells(1, 4) = "Desvio Padrão = " & desvio_padrao
End Sub
Function f_media(ByVal x As Long, valores() As Double)
soma = 0
For i = 1 To x
soma = soma + valores(i)
Next i
f_media = soma / x
End Function
Function f_desvio_padrao(ByVal qtd_valores As Integer, valores() As Double)
soma_1 = 0
media = f_media(qtd_valores, valores)
For i = 1 To qtd_valores
soma_1 = soma_1 + (valores(i) - media) ^ 2
Next i
f_desvio_padrao = Sqr(soma_1 / (qtd_valores - 1))
End Function
domingo, 16 de maio de 2010
Selecionar arquivo via caixa de diálogo - WORD VBA
Dim fd As FileDialog
dim arquivo As String
Private Sub Abrir()
Set fd = Application.FileDialog(msoFileDialogFilePicker)
If fd.Show = -1 Then
arquivo = fd.SelectedItems(1)
MsgBox "O arquivo selecionado é " & arquivo
Else
arquivo = ""
Exit Sub
End If
Set fd = Nothing
End Sub
;-)
quinta-feira, 13 de maio de 2010
Inserindo assinatura no Outlook - VBA
Segue código para inserir assinatura numa mensagem criada via VBA.
Detalhe importante: o formato do e-mail deve ser HTML.
;-)
Option Explicit
Dim assinatura As Variant
Public Function pega_assinatura(ByVal sFile As String) As String
'Dick Kusleika
Dim fso As Object
Dim ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
pega_assinatura = ts.readall
ts.Close
End Function
Sub Cria_mensagem_HTML()
'Creates a new e-mail item and modifies its properties.
Dim olapp As Outlook.Application
Dim objMail As MailItem
Set olapp = Outlook.Application
'Create mail item
Set objMail = olapp.CreateItem(olMailItem)
assinatura = pega_assinatura("C:\Documents and Settings\" & _
Environ("username") & "\AppData\Roaming\Microsoft\Assinaturas\Paulo.htm")
With objMail
'Set body format to HTML
'a tag
quebra linha
'a tag formata o texto para negrito
.BodyFormat = olFormatHTML
.HTMLBody = "Texto " & assinatura
.Display
End With
End Sub
sábado, 8 de maio de 2010
Navegando num formulário contínuo do Access...
Este código é de autoria do Jaques Zetune da ForumAccess.
Estou deixando aqui mais para consultas, pois as vezes eu preciso e não tenho à mão.
Não esquecer de colocar um checkbox com o nome chkNavegLoop, valor padrão 1.
;-)
Option Explicit
Const cDataSheet = 2, cContinuous = 1
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
DoKeys Me, KeyCode, Shift
End Sub
Public Sub DoKeys(wForm As Form, KeyCode As Integer, Shift As Integer)
Dim wCtl As Control, wIgnore As Integer
'a tecla Shift está pressionada ?
If Shift <> 0 Then Exit Sub
'o formulário está sendo visualizado em modo contínuo?
If wForm.CurrentView <> cDataSheet And wForm.DefaultView <> cContinuous Then Exit Sub
On Error Resume Next
Set wCtl = Screen.ActiveControl
'testa o comportamento da tecla Enter no controle
wIgnore = (wCtl.EnterKeyBehavior <> 0)
'verifica se a barra de rolagem está ativada If Not wIgnore Then wIgnore = (wCtl.ScrollBars <> 0)
'verifica se o controle em questão está com o texto “Ignore Setas” na propriedade Tag
'indicando que a intercepção de teclas deve ser ignorada no mesmo
If Not wIgnore Then wIgnore = (InStr(wCtl.Tag, "Ignore Setas") > 0)
If wIgnore Then Exit Sub
'sincroniza o registro corrente do formulário com o seu RecordsetClone
Me.RecordsetClone.Bookmark = Me.Bookmark
Select Case KeyCode
Case vbKeyDown
If Me.RecordsetClone.AbsolutePosition + 1 = Me.RecordsetClone.RecordCount And Me!chkNavegLoop Then
'tentou ir além do topo e a navegação em loop está ativa
DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
KeyCode = 0
Case vbKeyUp
If Me.RecordsetClone.AbsolutePosition = 0 And Me!chkNavegLoop Then
'tentou ir além do final e a navegação em loop está ativa
DoCmd.GoToRecord , , acLast
Else
DoCmd.GoToRecord , , acPrevious
End If
KeyCode = 0
End Select
End Sub
Ajustar um UserForm para o tamanho da tela
Muito bom para quem gosta de mexer na interface do Excel via VBA, assim é possível voltar todas as configurações colocando o código no botão SAIR.
;-)
Private Sub CommandButton2_Click()
Application.WindowState = xlMaximized
Me.Height = Application.Height
Me.Width = Application.Width
Me.Left = Application.Left
Me.Top = Application.Top
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
MsgBox "clicar no botão sair!!!"
End Sub
Executar um processo quando o e-mail chegar
Vamos usar como título, "executa_processo".
Assim, caso eu queira disparar um processo, basta que o meu computador esteja ligado e o Outlook aberto. Quando chegar uma mensagem com o título acima, o processo "minha_rotina" é executado.
;-)
Evento new_mail:
Private Sub Application_NewMail()
Call Procura
End Sub
Sub Procura()
'Procura mensagem na caixa de entrada
'Critério: Assunto da mensagem
Dim mySearch As Search
Dim myResults As Results
Dim intCounter As Integer
Dim strMessages As String
Set mySearch = AdvancedSearch(Scope:="Inbox", Filter:="urn:schemas:mailheader:subject = 'executa_processo'")
Set myResults = mySearch.Results
If myResults.Count > 0 Then
Call minha_rotina
Else
Exit Sub
End If
End Sub
Copiar informações de um e-mail no Outlook - VBA
Segue abaixo, um exemplo para copiar dados de um e-mail selecionado no Outlook para qualquer outro aplicativo Office.
Detalhes:
- Referenciar o Outlook no projeto VBA;
- O e-mail precisa estar selecionado na caixa de entrada (para este exemplo).
;-)
Option Explicit
Dim oApp As Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oWindow As Object
Dim omail As Outlook.MailItem
Private Sub Comando12_Click()
Set oApp = New Outlook.Application
Set oNS = oApp.GetNamespace("MAPI")
Set oWindow = oApp.ActiveWindow
Set omail = oApp.ActiveExplorer.Selection.Item(1)
txt_remetente = omail.SenderName 'Remetente
txt_cc = omail.CC 'Com cópia
txt_assunto = omail.Subject 'Assunto
txt_mensagem = omail.Body 'Mensagem
txt_para = omail.To 'Destinatário
txt_data = omail.ReceivedTime
End Sub
quinta-feira, 22 de abril de 2010
Achando o último dia do mês
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
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 ???
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
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!
;-)
quarta-feira, 14 de abril de 2010
Relógio numa célula
;-)
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
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
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
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
;-)
domingo, 7 de março de 2010
Transferindo contas do Outlook 2003 - parte 2
Explicando, apesar de conseguir transferir a conta do Outlook 2003 para outro HD, ao baixar as mensagens do Yahoo!, estavam vindo todas e-mails desde a abertura da conta!
Ao executar o aplicativo Easy Transfer, o problema foi resolvido.
Abaixo o link para quem não quer ter dor de cabeça como eu tive...
http://www.microsoft.com/downloads/details.aspx?FamilyId=2B6F1631-973A-45C7-A4EC-4928FA173266&displaylang=en
;-)
Colar > Especial > Valores (texto em html)
Um jeito mais prático, é colar diretamente na barra de fórmulas, que acaba tendo o mesmo efeito, porém com menos click's.
Experimentem!
;-)
sábado, 6 de março de 2010
Exportar conta de e-mail no Outlook 2003
Aparentemente uma tarefa simples, mas... não existe a opção de exportar a conta!
O Outlook Express que é a versão simplificada do leitor de e-mail tem esse recurso, não entendo porque a Microsoft não incluiu no "irmão mais velho".
Bem, pesquisando pela internet, encontrei a solução através de uma chave no registro.
Segue o caminho das pedras.
Depois de localizar a chave, basta exportá-la e importar no outro PC.
Artigo original em http://www.infonegocio.com/luzylar/cuentasoutlook2003.htm
A "maledeta":
HKEY_CURRENT_USER\
Software\
Microsoft\
Windows NT\
CurrentVersion\
Windows Messaging Subsystem\
\Profiles\
Outlook\
9375CFF0413111d3B88A00104B2A6676
;-)
segunda-feira, 15 de fevereiro de 2010
Alinhar texto dentro de uma string
Segue uma dica para alinhar um texto dentro de uma variável do tipo string.
Não vejo muita utilidade, pois quando temos possíveis espaços dentro de uma string e queremos trabalhar somente com o valor, faz mais sentido usar um TRIM(variável).
Bem, se a função existe, em alguma situação ela deve ter sua utilidade.
;-)
Option Explicit
Dim texto As String
Sub teste()
texto = " azul "
Debug.Print texto
'Texto alinhado à esquerda dentro da variável
LSet texto = "azul"
Debug.Print texto
'Texto alinhado à direita dentro da variável
RSet texto = "azul"
Debug.Print texto
End Sub
domingo, 14 de fevereiro de 2010
Acessando dados do SQL Server Express 2005
Vou mostrar aqui um exemplo bem simples de como acessar a tabela de clientes ("Customers") do Northwind.
Para quem quiser utilizar o recurso, não esqueça de marcar o "Microsoft Active Data Objects" nas referências do projeto VBA, pode ser qualquer versão. Aqui eu utilizei a 2.8.
;-)
Option Explicit
Sub SQL_Express()
Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection
Dim i As Integer
cnn.Open "Provider=SQLNCLI;Data Source=(local)\SQLEXPRESS;uid=sa;pwd=123;database=northwind"
rst.CursorLocation = adUseClient
rst.Open "SELECT CompanyName FROM customers", cnn, adOpenKeyset, adLockOptimistic
i = 1
Do While Not rst.EOF
Cells(i, 1).Value = rst!CompanyName
i = i + 1
rst.MoveNext
Loop
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub
sábado, 13 de fevereiro de 2010
Várias versões do Office no mesmo computador
Lembro que tive a versão 97 com 2000, 97 com XP e recentemente 2003 com 2007.
Cansei de tantos pequenos problemas que resolvi ficar somente com o 2003 instalado, mais do que suficiente para as minhas necessidades.
Para quem quiser se aventurar... segue um link com dicas muito interessantes:
http://pubs.logicalexpressions.com/Pub0009/LPMArticle.asp?ID=762
;-)
quarta-feira, 27 de janeiro de 2010
Usando a barra de status do Excel
Option Explicit
Dim i As Integer
Sub status_bar()
For i = 1 To 5000
DoEvents
Cells(i, 1).Value = "Teste"
Application.StatusBar = "Preenchendo célula " & i & " de 5.000"
Next
Application.StatusBar = False
End Sub
Pesquisar este blog
Arquivo do blog
-
▼
2010
(43)
-
►
maio
(8)
- Manipulando a área de transferência do Windows (Cl...
- Desvio padrão em VBA
- Selecionar arquivo via caixa de diálogo - WORD VBA
- Inserindo assinatura no Outlook - VBA
- Navegando num formulário contínuo do Access...
- Ajustar um UserForm para o tamanho da tela
- Executar um processo quando o e-mail chegar
- Copiar informações de um e-mail no Outlook - VBA
-
►
abril
(10)
- Achando o último dia do mês
- Acrescentando intervalos à data corrente
- Onde vamos parar ???
- Video aulas no YouTube
- A pessoa que inventou deve ter achado o máximo!
- Relógio numa célula
- Listando emails do Outlook numa tabela do Access
- Código para importação de arquivo texto delimitado
- Inserindo células copiadas em outro intervalo
- Obtendo o reembolso pelo Windows OEM
-
►
maio
(8)
Quem sou eu
- Kazu
- Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.