1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VBA-Excel - AJUDA

Discussão em 'Programação' iniciada por Delpi10, 21 de Junho de 2012. (Respostas: 0; Visualizações: 1082)

  1. Boas,estou com um problema,estou a estagiar na EDP, e o meu curso é Eng.electronica de computadores,e como podem imaginar não damos Visual Basic ,apenas C e assembly,e o problema é o
    seguinte o meu orientador na empresa pediu me que cria-se uma macro que abri-se dois ficheiros um .dat e outro mhtml,e que copia-se certa informação dos mesmos,e depois que a coloca-se por ordem
    do maior para o mais pequeno a depender da Coluna I. O problema e que cada ficheiro que vá importar tanto pode ter 1000 linhas como pode ter 25000 ,e sempre que importo novos dados fica todo
    desformatado visto que coloquei anteriormente todo por ordem do maior ao mais pequeno,e as celulas assumem os valores antigos do genero a celula F18 deveria ter o seguinte valor "=SEG.TEXTO(Folha2!A2;8;18)",mas fica a ter
    "=SEG.TEXTO(Folha2!A518;8;18)"... e o codigo que fiz em vba foi este :


    Sub import()
    Dim customerBook As Workbook
    Dim filter As String
    Dim i As Integer
    Dim caption As String
    Dim customerFilename As String
    Dim customerWorkbook As Workbook
    Dim targetWorkbook As Workbook

    'Set regionSheet = Sheets("REGION SHEET")


    'assume que este livre é o destino dos valores
    Set targetWorkbook = Application.ActiveWorkbook

    ' procura o ficheiro donde se importa os dados
    filter = "Text files (*.dat),(*.xlsx),*.dat,*.xlsx "

    caption = "Por favor escolha o ficheiro a importar (.dat ou excel)"
    customerFilename = Application.GetOpenFilename(filter, , caption)
    If customerFilename = False Then
    MsgBox ("Nenhum ficheiro selecionado!")
    Else
    If customerFilename = Null Then
    MsgBox ("Nenhum ficheiro selecionado!")
    Else
    Set customerWorkbook = Application.Workbooks.Open(customerFilename)

    ' assume que a info a copiar começa na celula Ai ate Ni
    ' copia a info da fonte
    Dim targetSheet As Worksheet
    Dim targetSheet1 As Worksheet
    Set targetSheet = targetWorkbook.Worksheets(2)
    Set targetSheet1 = targetWorkbook.Worksheets(1)
    Dim sourceSheet As Worksheet
    Set sourceSheet = customerWorkbook.Worksheets(1)

    i = Application.CountA(Range("A:A"))
    targetSheet.Range("A1", "N25000").Value = sourceSheet.Range("A10", "N25000").Value
    customerWorkbook.Close

    ' fecha o livro


    targetSheet1.Range("F17").FormulaLocal = "=SEG.TEXTO(Folha2!A1;8;18)"
    targetSheet1.Range("G17").Value = "=Folha2!G1*1"
    targetSheet1.Range("H17").Value = "=Folha2!G1-Folha2!F1"
    targetSheet1.Range("I17").Value = "=Folha2!D1*1"
    targetSheet1.Range("J17").Value = "=Folha3!C1"
    targetSheet1.Range("K17").Value = "=Folha3!D1"
    targetSheet1.Range("L17").Value = "=Folha3!H1"
    targetSheet1.Range("M17").Value = "=Folha3!G1"
    targetSheet1.Range("N17").Value = "=Folha3!E1"
    targetSheet1.Range("O17").Value = "=Folha3!J1"


    Application.ScreenUpdating = currentUpdating

    End If
    End If
    filter = "Text files (*.mhtml),*.mhtml"

    caption = "Por favor escolha o ficheiro a importar MHTML"
    customerFilename = Application.GetOpenFilename(filter, , caption)
    If customerFilename = False Then
    MsgBox ("Nenhum ficheiro selecionado!")
    Else
    If customerFilename = Null Then
    MsgBox ("Nenhum ficheiro selecionado!")
    Else
    Set customerWorkbook = Application.Workbooks.Open(customerFilename)

    ' assume que a info a copiar começa na celula Ai ate Ni
    ' copia a info da fonte
    Dim targetSheet2 As Worksheet
    Set targetSheet2 = targetWorkbook.Worksheets(3)
    Dim sourceSheet2 As Worksheet
    Set sourceSheet2 = customerWorkbook.Worksheets(1)

    targetSheet2.Range("A1", "N12500").Value = sourceSheet2.Range("A2", "N12500").Value

    ' fecha o livro
    customerWorkbook.Close

    Application.ScreenUpdating = currentUpdating
    End If
    End If

    End Sub

    -> Acredito que esteja muito confuso,mas eu nunca trabalhei com vba ,e agora queria vos pedir se conseguem dar umas dicas para resolver os seguintes problemas:
    quando importar os dados de outros livros que copie de forma correcta que fique por exemplo,na celula F17 "=SEG.TEXTO(Folha2!A1;8;18)" e as restantes a partir desta por ordem
    a F18"=SEG.TEXTO(Folha2!A2;8;18)" e dai em diante. E que no fim de copiar e colocar tudo por ordem ,que automaticamente ponha a ordenar tudo do maior para o mais pequeno a depender da coluna I.
    Espero que tenha sido claro,caso não tenham percebido digam que eu tento me explicar melhor.
    Obrigado.
     

Partilhar esta Página