Obrigado, alexandrevba.
As dicas foram boas, sobretudo do site macoratti.
Adaptei, em testes, um código encontrado aqui: http://www.macoratti.net/excel_vb.htm e funcionou. Porém, quando o volume de dados copiado de uma planilha para a outra é um pouco grande (Quando maior que 200 linhas, por exemplo) o excel fica processando sem parar e, quando forço o fechamento, dá um erro dizendo que esta esperando o encerramento da OLE.
Depurando o código linha a linha, posso perceber que ele trava (fica processando sem parar) quando chega na linha
xlw.Close False
que pretende fechar a planilha remota sem salvar a mesma.
O código que eu adptei é o seguinte:
Public Sub Teste()
Dim xl As New Excel.Application
Dim xlw As Excel.Workbook
Dim UltLocal As String
Dim UltRem As String
Dim UltlinLocal As String
Dim linLocal As Integer
Dim colLocal As Integer
Dim linRem As Integer
Dim colRem As Integer
'Localizar ultima celula preenchida na planilha local
Cells(1, 1).Select
ActiveCell.SpecialCells(xlLastCell).Select
linLocal = ActiveCell.Cells.Row
colLocal = ActiveCell.Cells.Column
UltLocal = ActiveCell.Address(, , xlA1)
'Abrir o arquivo remoto do Excel
Set xlw = xl.Workbooks.Open("http://osite.com.br/planilhamae.xls")
'Definir a planilha de trabalho
xlw.Sheets("Plan1").Select
'Localizar ultima celula preenchida na planilha remota
xlw.Application.Cells(1, 1).Select
xlw.Application.ActiveCell.End(xlDown).Select
linRem = xlw.Application.ActiveCell.Cells.Row
colRem = xlw.Application.ActiveCell.Cells.Column
'Comparando os dados pelo localizacao da ultima celula preenchida
If linLocal & "," & colLocal < linRem & "," & colRem Then
'Caso haja diferença, selecionar e copiar os dados da planilha remota
xlw.Application.Range("A" & (linLocal + 1), xlw.Application.Range(UltLocal).End(xlDown)).Select
xlw.Application.Selection.Copy
'Colando os dados "novos" na planilha local
Application.Range("A" & (linLocal + 1)).PasteSpecial (xlPasteValues)
Else
MsgBox ("Lascou")
End If
' Fechar a planilha sem salvar alterações
xlw.Close False
' Liberando a memória
Set xlw = Nothing
Set xl = Nothing
End Sub
Alguem poderia me ajudar nesse ponto? Qual será o motivo do travamento? Quando diminuo a quantidade de dados a ser copiados funciona bem. Assim como quando comento a linha de fechar a planilha acontece um fato interessante: o volume de dados para travar passa a ser maior (nos testes travou depois de 300 linhas, hehehe).
Agradeço a atenção e a ajuda!
Saudações,
Postado : 13/11/2012 2:09 pm