Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1260to1264
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Letzte Zeile aus geschlossene Excel Datei

Letzte Zeile aus geschlossene Excel Datei
Nchne2909
Hallo,
kann man aus einer geschlossenen Excel Datei von einen bestimmten Arbeitsblatt und Spalte die letzte benutzte Zeile ermitteln. Also wie der Code unten nur mit Angabe einer Exceldatei z.B. c:\temp\test.xls
Zlast = Cells(Rows.Count, 1).End(xlUp).Row
Danke, chn

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Letzte Zeile aus geschlossene Excel Datei
24.04.2012 14:27:13
Frank
Hallo chn,
du musst die Datei erst mit
Workbooks.Open Filename:="C:\temp\test.xls"
öffnen. Falls Du nicht willst, dass man das sieht, kannst Du mit
Application.ScreenUpdating = False
Die Anzeige deaktivieren und sie nach dem schließen der Datei mit = True wieder aktivieren.
Gruß
Frank
AW: Letzte Zeile aus geschlossene Excel Datei
24.04.2012 15:36:27
Nchne2909
Ohne die Datei zu öffnen geht wohl nicht? Vielleicht meldet sich noch jemand mit einer anderen Idee.
Danke
nein, ohne Öffnen geht es nicht! owT
24.04.2012 16:10:45
Sheldon
Gruß
Sheldon
AW: Letzte Zeile aus geschlossene Excel Datei
24.04.2012 22:35:13
Josef

Hallo ?,
geht schon.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test()
  Dim strFile As String, strTab As String, strRef As String
  
  strFile = "E:\Forum\letzteZeile.xlsx" 'Datei
  strTab = "Tabelle1" 'Tabelle
  strRef = "A:A" 'Bereich
  
  MsgBox lastRowClosedFile(strFile, strTab, strRef)
End Sub


Private Function lastRowClosedFile(FileName As String, SheetName As String, TargetRange As String) As Long
  Dim objADO As Object
  
  On Error Resume Next
  
  Set objADO = ExcelTable(FileName, SheetName, TargetRange)
  lastRowClosedFile = objADO.RecordCount + 1
  objADO.Close
  
End Function


Private Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As String) As Object
  Dim SQL As String
  Dim Con As String
  
  SQL = "select * from [" & Table & "$" & SourceRange & "]"
  
  If Mid(Path, InStrRev(Path, ".") + 1) = "xls" Then
    Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & Path & ";"
  ElseIf Mid(Path, InStrRev(Path, ".") + 1) Like "xls?" Then
    Con = "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & Path & ";"
  Else
    Exit Function
  End If
  Set ExcelTable = CreateObject("ADODB.Recordset")
  ExcelTable.Open SQL, Con, 3, 1
End Function



« Gruß Sepp »

Anzeige
AW: Frage an Josef
25.04.2012 18:41:19
HermannZ
Hallo Josef;
Deine Makros haben ein Problem, das ich seit längerem vor mich hin schiebe, gelöst. Danke.
Da ich in VBA eine Null bin, möchte ich dich hiermit bitten mir kurz die VBA sequenz aufzuzeigen
die ich brauche um aus dieser ermittelten Zeilenzahl zusätzlich den Wert dieser Zelle zu erhalten.
Danke.
AW: Frage an Josef
25.04.2012 19:43:17
Josef

Hallo Hermann,
beachte aber, dass der Zugriff auf Exceltabellen per ADO nur funktioniert, wenn die Daten auch entsprechend angeordnet sind.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test()
  Dim strFile As String, strTab As String, strRef As String
  
  strFile = "E:\Forum\letzteZeile.xlsx" 'Datei
  strTab = "Tabelle1" 'Tabelle
  strRef = "A:A" 'Bereich
  
  MsgBox lastCellClosedFileValue(strFile, strTab, strRef)
End Sub



Private Function lastCellClosedFileValue(FileName As String, SheetName As String, TargetRange As String) As Variant
  Dim objADO As Object
  Dim lngCount As Long
  
  On Error Resume Next
  
  Set objADO = ExcelTable(FileName, SheetName, TargetRange)
  With objADO
    lngCount = .RecordCount
    .Move lngCount - 1
    lastCellClosedFileValue = .Fields(0)
    .Close
  End With
  Set objADO = Nothing
End Function



Private Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As String) As Object
  Dim SQL As String
  Dim Con As String
  
  SQL = "select * from [" & Table & "$" & SourceRange & "]"
  
  If Mid(Path, InStrRev(Path, ".") + 1) = "xls" Then
    Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & Path & ";"
  ElseIf Mid(Path, InStrRev(Path, ".") + 1) Like "xls?" Then
    Con = "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & Path & ";"
  Else
    Exit Function
  End If
  Set ExcelTable = CreateObject("ADODB.Recordset")
  ExcelTable.Open SQL, Con, 3, 1
End Function



« Gruß Sepp »

Anzeige
AW: Danke oT.
25.04.2012 19:50:53
HermannZ
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige