Ir para conteúdo
Fórum Script Brasil

João.Neto

Membros
  • Total de itens

    139
  • Registro em

  • Última visita

Posts postados por João.Neto

  1. Bom, então quanto a licença do Access posso ficar tranqüilo se caso o meu cliente não possua nenhum computador com licença para o Access, certo?

    Creio que sim, mas acho interessante na empresa do cliente ter pelo menos uma licença de Access ou é melhor você confirmar isso diretamente com a Microsoft.

  2. Já desenvolvi usando Access como banco de dados e Excel como front-end, segue minha experiência nesse assunto:

    - Você só consegue armazer até 2 Gb de dados por arquivo .mdb, portanto estruture muito bem suas tabelas (faltou nas aulas de modelagem de dados, hum?!);

    - Você tem um limite de até 8 conexões simultâneas;

    - Use com até 30 usuários, mais do que isso migre para um sistema robusto (SQL Server com C# ou PHP com mySQL);

    - No seu código abra a conexão e feche o quanto antes, nunca mantenha uma conexão. Só abra conexão se realmente necessário;

    - Não precisa ter Access instalado na máquina do usuário, você pode colocar o arquivo .mdb em uma rede onde todos os usuários acessam;

    - Só é interessante ter Access em uma máquina apenas para efeito de manutenção;

    - Sempre execute o recurso de "Compactar e Restaurar Banco" (fora de horário comercial), pois assim seu banco ficará compacto e terá mais espaço disponível e otimizado;

    - O banco de dados pode corromper-se facilmente ou travar e ficar como somente leitura dependendo de n fatores (o último é reversível, o primeiro em alguns casos não);

    - Crie um arquivo .mdb somente para tabelas e outro para as VIEWS e MACROS, pois assim seu banco de dados ficará mais leve;

    - Quanto mais arquivo .mdb divididos melhos, exemplo: um arquivo para guardar os usuários e senha, um arquivo para guardar assuntos do comercial, outro para assuntos do financeiro e etc. Se você precisar fazer JOIN entre tabelas de arquivos .mdb diferentes, crie um arquivo .mdb apartado somente para as consultas vinculando as tabelas.

    Enfim, não exagere no uso do Access, pois mais cedo ou mais tarde ele vai te deixar na mão. :(

  3. ok então.

    Fiz duas modificações em seu código (em negrito)

    'Declara variáveis.

    Dim APLICATIVOEXCEL As Excel.Application

    Dim PASTA As Excel.Workbook

    Dim PLANILHA As Excel.Worksheet

    'Carrega o Excel.

    Set APLICATIVOEXCEL = CreateObject("Excel.Application")

    'Limitar o número de planilhas no novo arquivo excel gerado.

    APLICATIVOEXCEL.SheetsInNewWorkbook = 1

    'Cria uma pasta de trabalho.

    Set PASTA = APLICATIVOEXCEL.Workbooks.Add

    'Define uma nova planilha.

    Set PLANILHA = APLICATIVOEXCEL.ActiveWorkbook.Worksheets(1)

    'Define o nome da planilha.

    PLANILHA.Name = "DADOS"

    'Aplicação e planilha visíveis.

    APLICATIVOEXCEL.Visible = True

    PLANILHA.Visible = True

  4. Boas notícias, achei a solução, ou melhor, as duas soluções.

    1) "A outra duvida e meio que relacionada a essa, gostaria de saber como faco para controla uma janela já aberta do windows (IE mesmo) sem ter que criar um novo objeto".

    Sim, vide código abaixo:

    Function GetOpenIEByURL()
    
        'Adicionar referência ao 'Microsoft Internet Controls'
       
        Dim ie As InternetExplorer
        Dim objShellWindows As New SHDocVw.ShellWindows
       
        i_URL = "http://www.google.com.br/"
       
        On Error Resume Next
       
        For Each ie In objShellWindows
       
            If TypeName(ie.Document) = "HTMLDocument" Then
           
                If ie.Document.URL = i_URL Then
               
                ie.Document.all.Item("q").innerText = "Teste"
               
                End If
               
            End If
           
        Next
    
    End Function
    Esse cara aqui SHDocVw.ShellWindows permite você percorrer todas as instâncias de Internet Explorer abertas em sua máquina e fazer um loop usando o objeto InternetExplorer. 2) "Tenho uma macro que loga no meu email pessoal e envia um email para o meu email do trabalho, porem, gostaria de saber como posso anexar um arquivo nesse email, visto que, quando foi anexar um arquivo ele sai da tela do IE e abre outra janela, o que quero saber é como posso controlar essa janela." Eu entendi que você esteja falando daquela janela do Windows "Selecionar arquivo", certo? Use o código abaixo. Só um ponto de atenção é mudar o nome da janela e do botão "Abrir" no código, pois eu fiz no Windows em Inglês, ok?
    Private Declare Function GetWindow Lib "user32" (ByVal hWnd _
        As Long, ByVal wFlag As Long) As Long
    Private Declare Function GetWindowText Lib "user32" Alias _
        "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As _
        String, ByVal cch As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias _
        "FindWindowA" (ByVal lpClassName As String, ByVal _
        lpWindowName As String) As Long
    Private Declare Function GetClassName Lib "user32" Alias _
        "GetClassNameA" (ByVal hWnd As Long, ByVal _
        lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function SendMessage Lib "user32" Alias _
        "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal _
        wParam As Long, lParam As Any) As Long
    Private Declare Function PostMessage Lib "user32" Alias _
    "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, lParam As Any) As Long
    
    
    Const WM_CLOSE = &H10
    Const WM_SETTEXT = &HC
    Const WM_SYSKEYDOWN = &H104
    Const WM_RBUTTONDOWN = &H204
    Const WS_MAXIMIZE = &H1000000
    Const WM_CHAR = &H102
    Const BM_CLICK As Long = &HF5&
    
    Private Const GW_HWNDNEXT = 2&
    Private Const GW_CHILD = 5&
    
    
    Private Function GetFirstTextBoxHandle(nFormCaption As String, _
        pClass As String, Optional nTextboxText As String) As Long
    
        Dim iHwnd As Long
        Dim iSize As Long
        Dim iClass As String
        Dim iText As String
    
        iHwnd = FindWindow(vbNullString, nFormCaption)
        If iHwnd Then
            iHwnd = GetWindow(iHwnd, GW_CHILD)
            Do While iHwnd
                iClass = Space(64)
                iSize = GetClassName(iHwnd, iClass, Len(iClass))
                If iSize > 0 Then
                    iClass = Left(iClass, iSize)
                   
                    'If iClass = "ThunderTextBox" Or iClass = "ComboBoxEx32" Then
                    'Debug.Print iClass
                   
                    If iClass = pClass Then
                        If nTextboxText <> "" Then
                            iText = Space(100)
                            GetWindowText iHwnd, iText, 100&
                            iText = Left(iText, InStr(iText, _
                                Chr(0)) - 1)
                                'Debug.Print iText
                            If iText = nTextboxText Then
                                GetFirstTextBoxHandle = iHwnd
                                Exit Function
                            End If
                        Else
                            GetFirstTextBoxHandle = iHwnd
                            Exit Function
                        End If
                    End If
                End If
                iHwnd = GetWindow(iHwnd, GW_HWNDNEXT)
            Loop
        End If
    End Function
    
    Private Sub Command1_Click()
        Dim WINDOWCAPTION As String
        WINDOWCAPTION = "Choose file"
       
        SendMessage GetFirstTextBoxHandle(WINDOWCAPTION, "ComboBoxEx32"), WM_SETTEXT, ByVal 0, ByVal "Aqui vai o nome do anexo e endereço"
        PostMessage GetFirstTextBoxHandle(WINDOWCAPTION, "Button", "&Open"), BM_CLICK, 0, 0
       
    End Sub
    Se teu Windows não for em inglês você vai ter que mudar o valor da variável WINDOWCAPTION para o nome que aparece na janela de selecionar arquivo e o nome do botão "Abrir" (está como "&Open") na linha de código abaixo:
    PostMessage GetFirstTextBoxHandle(WINDOWCAPTION, "Button", "&Open"), BM_CLICK, 0, 0

    Espero ter ajudado (espero mesmo, porque deu um trabalho achar isso)... mas replicar conhecimento nunca é demais.

    Abraços

  5. É por causa das aspas duplas

    Dim percentual as Double 'Percentual não é número inteiro! <_<

    percentual = txtpercentual.value

    activecell.formular1c1 = "=VLOOKUP(RC[-3],listaOficial,4,0) * " & Replace(percentual, ",", ".") 'Tem que usar o formato de número decimal americano onde se usa ponto como separador decimal

    Testa esse código e responde se deu certo.

  6. No 2003 eu não sei, já faz um bom tempo que não uso ele.

    Agora, eu sei que todos controles têm 2 propriedades chamadas Top e Left que são utilizadas para armazenar o posicionamento.

    Quem sabe quando você clica no botão raiz ele define sempre o valor destas propriedades para os botões subsequentes? Só uma idéia, não tenho nenhum exemplo de código que faça isso.

  7. Ou, você pode complicar um pouco mais:

    Sub Teste_Jabuticaba()
    
    Dim RngResultado As Range
    
    With Columns("D:D")
        Set RngResultado = .Find(What:="0", LookAt:=xlPart, MatchCase:=False, SearchFormat:=False)
        If Not RngResultado Is Nothing Then
            Do
            RngResultado.Cells(1, 1) = RngResultado.Cells(1, 1).Offset(0, -2)
            Set RngResultado = .FindNext(RngResultado)
            Loop While Not RngResultado Is Nothing
        End If
    End With
    
    End Sub

×
×
  • Criar Novo...