Jaime Bezerra
-
Total de itens
9 -
Registro em
-
Última visita
Posts postados por Jaime Bezerra
-
-
Resolvido pelo Reinaldo do Guru do Excel, resposta:
Deve acrescentar a clausula WHERE em sua instrução sql.
Como não tenho o banco nem a planilha para testar, experimente Algo +/- assim:
-->> .... by a.cd_item Where (a.qt_entrada - a.qt_saida)>0;" -
Bom dia a todos.
Tenho um arquivo excel que extrai dados do BD SQL através de uma macro em VBE, esta macro calcula o "saldo atual" do item consultado na Query, o que preciso é que quando o resultado desta soma for igual a 0 (zero) não seja apresentado o resultado da Query.
Não sei se fui claro, não sou programador, sou apenas apaixonado por Excel e VBA, vou exemplificar o que preciso:
Resultado atual da minha query:
Item Descrição Saldo
abcd Item1 43,65
bcd Item2 0,00
dcba Item3 1,00
Resultado desejado:
Item Descrição Saldo
abcd Item1 43,65
dcba Item3 1,00
A instrução SQL que estou utilizando é:
StrQuery = "SELECT distinct a.cd_item,c.descricao,sdoatual=(a.qt_entrada - a.qt_saida) FROM (vSaldoItem a INNER JOIN vSaldoItemdia b ON a.cd_item = b.cd_item AND a.cd_deposito = " & "'" & dep & "'" & ") INNER JOIN Item c ON a.cd_item = c.cd_item order by a.cd_item"
Agradeço a ajuda
Dúvida postada, sob o mesmo título, nos forums:
Comunidade do Hardware – hardware.com.br
Guru do Excel – gurudoexcel.com
-
Boa tarde!!
O Osvaldo me deu uma macro que funcionou perfeitamente, abaixo esto postando a macro:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("B4:B" & Cells(Rows.Count, 2).End(3).Row)) Is Nothing Then MsgBox "você aplicou duplo clique em uma célula da coluna 'B' da tabela" 'se o resultado for o esperado substitua a linha acima pelo nome da Macro1 Cancel = True ElseIf Not Intersect(Target, Range("C4:C" & Cells(Rows.Count, 3).End(3).Row)) Is Nothing Then MsgBox "você aplicou duplo clique em uma célula da coluna 'C' da tabela" 'se o resultado for o esperado substitua a linha acima pelo nome da Macro2 Cancel = True End If End Sub
Resposta postada nos fóruns:
e
https://gurudoexcel.com/forum/
Grato
-
Bom dia!!
Preciso que ao clicar duas vezes em uma área específica da planilha seja executada uma determinada macro, o problema é que tenho duas áreas distintas que deverão executar macros distintas.
Com o doubleclick consigo acionar a macro em apenas uma área, por exemplo área ("B4:B" & Lastrow), ocorre que preciso utilizar a área ("C4:C" & Lastrow) para executar outra macro.
Já tentei utilizar SELECT CASE com o Doubleclick e não funcionou, meu conhecimento de VBA é limitado e não sei como resolver este caso.
Utilizei o Doubleclick por pura analogia de necessidade, clicar duas vezes em uma área específica para acionar outra macro, mas se para o meu caso a solução for outra agradeço se me orientarem.
Abaixo segue a macro que estou utilizando:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim LastRow As Long
With ActiveSheet
LastRow = ActiveSheet.Cells.SpecialCells(xlLastCell).Offset(-1, 0).Row
End With
If Intersect(Target, Range("B4:B" & LastRow)) Is Nothing Then
Else
MsgBox ("CR Funcionou")
End IfApplication.SendKeys "{ESCAPE}"
End Sub
Anexo estou enviando a imagem da planilha do excel onde tenho as informações onde será executado o doubleclick, posso enviar o arquivo que é simples e pequeno, na verdade este arquivo é parte de outro maior com outras macros mas que para facilitar deixei apenas a planilha e a macro que estou com dificuldades.
Grato
-
Bom dia!!
Resolvi o problema de outra forma, com a mesma macro que cria o BD Excel (titulocli) criei outro BD Excel (transcli), ambos estão no mesmo arquivo e são planilhas distintas deste arquivo.
Com os dois BD's criados montei outra macro que, através da função SUMIFS do VBA calcula os débitos e créditos do BD transcli com um critério sendo o ID_TITULO, presente em ambas as planilhas, e outro o termo "D" ou "C".
Estou disponibilizando abaixo a macro para utilização de outros que por ventura tenham a mesma necessidade.
Sei que existe a possibilidade de se fazer o somatório diretamente do BD SQL, mas como não sou programador não tenho conhecimento suficiente para isto, vou continuar pesquisando e tentando o somatório diretamente do BD SQL com VBA e descobrindo a forma disponibilizarei aqui.
Macro:
Sub somacondsloop()
'
' Macro somacondsloop
'
'
Dim I As Integer
Dim Dsoma, Csoma, TotMovID As Double
Dim Minharange As String
Dim Arg1 As Range
Dim Arg2 As Range
Dim Arg3 As Range
Dim Arg4 As Range
'Congela a tela para evitar o "pisca-pisca" durante a execução da macro
Application.ScreenUpdating = False
Sheets("transcli").Select
Range("a1").Select
'Posiciona para preencher a formula
Sheets("titulocli").Select
I = 2
Do While Range("A" & I).Value <> ""
'Posiciona para selecionar o primeiro critério de soma
Range("A" & I).Select
Minharange = ("A" & I)
'Posiciona para inserir o resultado das soma
Range("F" & I).Select
' Os argumentos de range foram passados considerando apenas as colunas pois a range é variável
Set Arg1 = Sheets("transcli").Range("D:D")
Set Arg2 = Sheets("transcli").Range("A:A")
Set Arg3 = Sheets("titulocli").Range(Minharange)
Set Arg4 = Sheets("transcli").Range("E:E")
'Faz a soma com os critérios passados por argumentos
Dsoma = WorksheetFunction.SumIfs(Arg1, Arg2, Arg3, Arg4, "D")
Csoma = WorksheetFunction.SumIfs(Arg1, Arg2, Arg3, Arg4, "C")
TotMovID = (Dsoma - Csoma)
'Transfere o total da soma para a célula ativa
ActiveCell.Value = TotMovID
I = I + 1
Loop
'Descongela a tela
Application.ScreenUpdating = True
End Sub
-
Boa tarde!!
Criei uma macro que extrai uma série de dados do meu BD SQL através de uma Query e grava em uma planilha do Excel (que vou chamar de BD Excel), até aí sem problemas está funcionando corretamente.
O que preciso agora é um pouco mais complicado:
Considerando que o meu BD Excel possui no primeiro campo o ID_TITULO preciso fazer um somatório dos débitos e créditos de outra tabela do BD SQL e inserir o resultado da soma no BD Excel para cada um dos títulos.
Ou seja, após criar o BD Excel com uma Query da tabela titulocli preciso somar os débitos e créditos da tabela transcli e inserir o resultado em nova coluna respeitando o ID_TITULO.
Exemplo anexo.
Obs.: a coluna em amarelo é a coluna para se incluir o resultado do somatório.
Grato
-
Boa tarde!!
Após garimpar bastante na internet encontrei a solução para esta questão, estou anexando abaixo a macro que funciona com perfeição:
Obs.: Lógicamente o nome de usuário, senha, servidor, e banco deverão ser ajustados para a realidade de cada um.
Sub extraidadosSQL()
' habilite a ref. Microsoft ActiveX Data Objects X.XX Library
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim wrkst As String
Dim StrQuery As String
Set cnn = New ADODB.Connection
cnn.ConnectionString = "driver={SQL Server};server=dsrv03;uid=usuário;pwd=senha;database=EverestTeste"
cnn.CommandTimeout = 30
cnn.Open
Set rst = New ADODB.Recordset
StrQuery = "SELECT * FROM transcli " & "WHERE sinal like 'D'"
rst.Open StrQuery, cnn
Sheets("transcli").Range("A1").CopyFromRecordset rst
rst.Close
cnn.Close
End Sub
-
Bom dia,
Não sou programador, trabalho em contabilidade e financeiro por isso utilizo muito o excel e como seria de se esperar cheguei ao VBA.
Estou tentando extrair informações específicas do Banco de dados do meu ERP (SQL), pesquisei e copiei uma macro com esta finalidade, fiz as correções mais óbvias para um leigo, BD, Servidor, ID, etc... .
Quando rodo a macro esta retorna um erro de SQL Server inexistente ou acesso negado, conforme print abaixo:
Utilizo o pacote Office 2007, o ID, senha, Servidor, BD, Tabela, tudo isto está correto pois vez ou outra acabo importando via conexão de Dados externos do próprio excel, poderia até seguir nesta linha, se não fosse a quantidade de tabelas e campos que preciso extrair e mais ainda, o tamanho atual de cada uma das tabelas, por isso preciso trazer apenas alguns campos específicos com filtros.
Agradeço o auxílio, segue abaixo a macro:Código (Text):Sub ImportardadosSQL()
' habilite a ref. Microsoft ActiveX Data Objects 2.8 Library
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String, PASS As String, UserName As String, REMOTE_IP_ADDRESS As String, DATABASE As String
' insira os dados (entre aspas), abaixo:
PASS = ""
UserName = ""
REMOTE_IP_ADDRESS = ""
DATABASE = ""
cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=PASS;Persist Security Info=True;User ID=UserName;Data Source=REMOTE_IP_ADDRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DATABASE"
cnn.Open
cnn.CommandTimeout = 900
StrQuery = "SELECT * FROM transcli " & "WHERE sinal like 'D'"
rst.Open (StrQuery), cnn
'rst.Open StrQuery, cnn
'insere os dados em plan1
Sheets("transcli").Range("A1").CopyFromRecordset rst
End Sub
VBA excel com sharepoint
em Tutoriais & Dicas - MS Office
Postado
Bom dia!!
Estou atualizando as macros das minhas planilhas para trabalhar com SharePoint, o problema é que não estou encontrando as referências do Microsoft SharePoint, por isso muitas macros não funcionam.
Minha necessidade então é saber como instalo no excel as referências para SharePoint.
Obrigado