Notifications
Clear all

Achar Última Linha com conteúdo

7 Posts
4 Usuários
0 Reactions
1,771 Visualizações
(@vinitol)
Posts: 0
New Member
Topic starter
 

Pessoal, boa tarde a todos.
Procurei algo parecido no fórum, mas não encontrei
Tenho certeza que estou cometendo um erro ridículo, mas meus neurônios já pifaram

Quero achar a última linha com conteúdo no excel:

Set XLDoc = XLApp.Workbooks.Open("C:UsersvinitolDocumentsRelatorio.xlsx")
XLDoc.RefreshAll

Set sh = XLDoc.ActiveSheet
Set XLDocLinha = sh.Cells(Rows.Count, "A").End(xlUp).Offset(0, 0).Row

Não há jeito, já tentei várias diferenciações.

ALguém pode me ajudar?
Desde já, obrigado!

 
Postado : 25/05/2015 2:36 pm
(@vinitol)
Posts: 0
New Member
Topic starter
 

Opa,
Tentei

Dim iUltimaLinha As Long

Set XLDoc = XLApp.Workbooks.Open("C:UservinitolDocumentsRelatorio.xlsx")
XLDoc.RefreshAll
iUltimaLinha = XLDoc.Activesheet.Range("A" & Rows.Count).End(xlUp).Row

Porém dá erro: Objeto é Obrigatório

 
Postado : 25/05/2015 3:30 pm
(@edcronos)
Posts: 1006
Noble Member
 

cara , eu realmente não entendi muito oq vc está querendo fazer

vc falou em achar a ultima linha
viewtopic.php?f=21&t=13912
talvez te de uma ideia do que vc quer

 
Postado : 25/05/2015 3:35 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Bom, fica difícil testar, mas, primeira pergunta: vc está usando VBA em que programa?

No Excel, essa linha seria assim:

XLDocLinha = sh.Cells(Rows.Count, "A").End(xlUp).Row

(sem usar o set, e sem offset, pq vc não alterou naa com ele)

Outra coisa, vc não pode misturar aplicativo com partes dele, vai dar erro mesmo. tente:

Set XLDoc = XLApp.Workbooks.Open("C:UsersvinitolDocumentsRelatorio.xlsx")
XLDoc.RefreshAll

XLDoc.Activate
XLDocLinha = sh.Cells(Rows.Count, "A").End(xlUp).Row

 
Postado : 25/05/2015 3:42 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O ideal seria ter colocado a rotina completa e não somente parte da mesma, pelo que entendi nas entrelinhas que postou, você está abrindo o Ralatório.xlsx em uma nova instancia do excel e a mesma está oculta, e por isto terá erros, como não tenho a rotina completa, tente ajustar com as linhas abaixo :

* Não sei se tem estas declarações
Dim xlApp As New Excel.Application
Dim XLDoc As Excel.Workboo
k

'Nesta estamos abrindo em nova instancia
Set XLDoc = xlApp.Workbooks.Open("C:UsersvinitolDocumentsRelatorio.xlsx")

'Aqui tornamos visivel
xlApp.Visible = True

XLDoc.RefreshAll

Set sh = XLDoc.ActiveSheet

XLDocLinha = sh.Cells(Rows.Count, "A").End(xlUp).Offset(0, 0).Row

 
Postado : 25/05/2015 4:06 pm
(@vinitol)
Posts: 0
New Member
Topic starter
 

Boa tarde pessoal

Na verdade, tive que mover para o Access, pois estava dando alguns erros no excel.
Só preciso achar a última linha com conteúdo do arquivo nesse momento.

A lógica completa é a seguinte:

Function copiar()
Set xlApp = CreateObject("Excel.Application")
xlApp.Application.DisplayAlerts = False
xlApp.Visible = True

Dim iUltimaLinha As Long

Set XLDoc = xlApp.Workbooks.Open("C:UsersvinitolDocumentsRelatorio.xlsx")
XLDoc.RefreshAll

XLDoc.Activate
iUltimaLinha = XLDoc.ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

End Function

 
Postado : 26/05/2015 12:55 pm
(@vinitol)
Posts: 0
New Member
Topic starter
 

CONSEGUI!!!!

Function copiar()

Set xlApp = CreateObject("Excel.Application")
xlApp.Application.DisplayAlerts = False
xlApp.Visible = True
xlApp.UserControl = True

Dim iUltimaLinha As Long
Dim XLDoc As Object

Set XLDoc = xlApp.Workbooks.Open("C:UsersvinitolDocumentsRelatorio.xlsx")
XLDoc.RefreshAll
iUltimaLinha = XLDoc.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

E faltou colocar a Referência do MS Excel Object Library

Obrigado a todos
Forte Abs

 
Postado : 26/05/2015 3:01 pm