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.