Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
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

Zeile mit aktuellem Datum auslesen

Zeile mit aktuellem Datum auslesen
11.02.2009 14:23:00
Horst
Hallo Excel-Gemeinde!
Wie kann ich bei untenstehendem VBA-Code angeben, dass von der B.xls die Spalte AA jener Zeile A ausgelesen wird, welche dem aktuellem Systemdatum entspricht (Spalte A enthält Datumswerte, Spalte AA Beträge).
Das müsste irgendwie mit "Application.Match(CLng(Date)" funktionieren ? ...
Betroffen ist die Zeile: "Set rLetzte = Cells(Rows.Count, "AA")"
Option Explicit

Sub TestLeseTxT()
Dim sFormel As String, sPfad As String
Dim rLetzte As Range
Dim WertAusTxT, WertAusExcel
sPfad = "C:\Dokumente und Einstellungen\User\Desktop\test.txt"
If sPfad  "Falsch" Then
'letzte Zelle in AA
Set rLetzte = Cells(Rows.Count, "AA")
'Pfad, Dateinamen und Tabellennamen anpassen
sFormel = "'C:\Dokumente und Einstellungen\User\Desktop\[B.xls]Tabelle1'!" & rLetzte.Address(,  _
_
_
, xlR1C1)
WertAusExcel = LeseZeile1(CStr(sPfad))
WertAusTxT = ExecuteExcel4Macro(sFormel)
If IsNumeric(WertAusTxT) And IsNumeric(WertAusExcel) Then
MsgBox WertAusExcel * Exp(WertAusTxT), vbInformation, "Ausgabewert"
Else
MsgBox "Die Daten konnten nicht berechnet werden!"
End If
End If
End Sub



Function LeseZeile1(strPfad As String) As Double
Dim sLine As String
Dim F As Integer
F = FreeFile
Open strPfad For Input As #F
Line Input #F, sLine
Close #F
sLine = Replace(sLine, " ", vbTab)
If InStr(sLine, vbTab) > 0 Then
sLine = Right$(sLine, Len(sLine) - InStr(sLine, vbTab))
End If
If IsNumeric(sLine) Then
LeseZeile1 = CDbl(sLine)
End If
End Function


16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 17:28:00
Ramses
Hallo
Dim findDate as Range
on error resume next
set findDate = Columns(1).Find(Date)
err.clear
on error goto 0
If findDate is Nothing then
Msgbox "Datum nicht gefunden"
Exit sub
end If
msgbox "Der betrag für das heutige Datum lautet: " & Cells(findDate.Row,[AA])
Gruss Rainer
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 18:13:00
Horst
Hallo Ramses,
besten Dank! Wie verbinde ich die beiden Codes? Krieg' das irgendwie nicht ganz auf die Reihe. Der "WertAusExcel" (12.Zeile) soll der letzten Zeile der Spalte AA entsprechen (unter der Bedingung, dass in Spalte A das aktuelle Systemdatum drin steht)
Gruß, Horst
Anzeige
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 21:14:00
Ramses
Hallo
Deine beiden Codes müssen grundsätzlich neu programmiert werden, weil fehlerhaft, unsinning und nicht funktionsfähig.
Beschreibe mal was du eigentlich machen willst.
Gruss Rainer
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 21:37:00
Horst
Vereinfacht:
Wert der letzte Zeile einer bestimmten Spalte einer NICHT AKTIVEN, GESCHLOSSENEN MAPPE als MsgBox ausgeben. Vorschläge sind willkommen!
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 21:58:00
Daniel
Hi
ich würde das so machen: (für Spalte A

dim Erg
application.screenupdating = false
Workbooks.Open ("C:\DeinPfad\DeineDatei.xls", ReadOnly:=True)
with acitveworkbook
Erg = .Sheets("DeinSheet").Cells(.Rows.count,1).end(xlup).value
.saved = True
.close
end with
application.screenupdating = true
Msgbox Erg


geschlossene Dateien auszulesen ist ne komplexe Angelegenheit, per VBA wüsste ich nicht wie es geht und auch per Formel sind Fernbezüge auf geschlossene Dateien deutlich langsamer als auf geöffnete, auch sind einige Funktionen wie z.B. INDIREKT sind z.B. auf geschlossene Dateien nicht anwendbar.
deswegen ist es grad per VBA oft einfacher und schneller, die Datei kurz zu öffnen, die Daten auszulesen und dann die Datei wieder zu schließen.
Wenn das Öffnen gleich mit Schreibschutz ausgeführt wird, gibts auch keine Probleme, wenn im Netz ein anderer Anwender die Datei schon geöffnet hat oder während der Bearbeitung öffnen will.
Gruß, Daniel

Anzeige
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 22:07:00
Horst
Hi, irgendwas stimmt mit dem obigen Makro nicht.
Die Zeile mit Workbook.Open nimmt er nicht. Zudem hätte ich gerne, dass die letzte Zeile einer bestimmten Spalte (zB. AA) ausglesen wird, unter der Bedingung, dass links daneben (zB. in Spalte Z) das enthaltene Datum mit dem aktuellen Systemdatum übereinstimmt.
Wäre super, wenn du das hinbekommen würdest. Bitte das ganze Makro reinstellen, meine VBA-Kenntnisse sind etwas dürftig.
AW: Zeile mit aktuellem Datum auslesen
11.02.2009 22:20:00
Daniel
Hi
dann lass mal die Klammern in der Zeile mit dem Workbook weg, dh nur Workbooks.Open "C:...
wennd du die letzte Zeile der Spalte AA auslesen willst, musst du halt den Code entsprechend abändern

Erg = .Sheets("DeinSheet").Cells(.Rows.count,27).end(xlup).value


aber wenn du mit Makros arbeiten willst, solltest du zu sowas schon ohne Hilfe in der Lage sein.
schließlich musst du den Code auch mal selbst ändern und warten können, auch ohne die Hilfe des Forums.
deinen weitern Wunsch würde ich sicherlich erfüllen können, wenn ich genauer verstehen würde, was du erreichen willst. Aber mit deiner dürftigen Beschreibung und ohne konkretes Beispiel geht das nicht so einfach.
Gruß, Daniel

Anzeige
So einfach nun auch nicht....
11.02.2009 22:03:00
Ramses
Hallo
In deinem CodeBeispiel öffnest du einmal eine XLS und eine TXT Datei.
Aus beiden willst du Daten haben, und als Referenz diente das Systemdatum und nicht nicht die letzte Zelle
Also bitte:
Dein Code steht diametral zu der Anforderung die du hier definierst !?
Es ist zwar schon Fasnacht,... aber der 1. April ist noch weit weg.
gruss Rainer
AW: So einfach nun auch nicht....
11.02.2009 22:22:00
Horst
Hallo Rainer,
Das Bsp. mit der .txt ist so gedacht, dass der ausgelesene Wert der .txt mit jenem der externen .xls multipliziert wird. Das Systemdatum betrifft lediglich die .xls. Vereinfacht ausgedrückt benötige ich Code, der aus einer geschlossenen Arbeitsmappe die LETZTE ZEILE einer bestimmten Spalte (zB. B) ausliest unter der Bedingung, dass der Wert der Spalte links neben dieser letzten Zeile gleich dem SYSTEMDATUM ist.
Die Verknüpfung mit der .txt kann ich selbst machen, aber der Aufruf der .xls haut nicht hin.
Stell' doch bitte mal einen entsprechenden VBA-Code hier rein.
Anzeige
AW: So einfach nun auch nicht....
11.02.2009 22:29:00
Ramses
Hallo
"...Die Verknüpfung mit der .txt kann ich selbst machen, aber der Aufruf der .xls haut nicht hin. .."
Das wage ich zu bezweifeln.
Zum auslesen muss die Datei geöffnet werden, wenn du die letzte Zelle bestimmen willst, aber das sollte kein Problem sein
Sub check_Val()
    Dim lastRow As Long
    Application.ScreenUpdating = False
    Workbooks.Open ("D:\Test.xls")
    lastRow = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(lastRow, 1) = Date Then
        MsgBox "Der Wert lautet: " & Range("AA" & lastRow)
    Else
        MsgBox "Der letze eintrag ist nicht von heute"
    End If
    Workbooks.Close False
    Application.ScreenUpdating = True
End Sub

Gruss Rainer
Anzeige
AW: So einfach nun auch nicht....
11.02.2009 22:53:00
Horst
Perfekt! Und wie sieht der Code aus, wenn B.xls nicht geöffnet werden soll?

Sub check_Val()
Dim lastRow As Long
Application.ScreenUpdating = False
Workbooks.Open ("C:\Dokumente und Einstellungen\User\Desktop\B.xls")
lastRow = Worksheets("Go").Cells(Rows.Count, 27).End(xlUp).Row
If Cells(lastRow, 1) = Date Then
MsgBox "Der Wert lautet: " & Range("AA" & lastRow)
Else
MsgBox "Der letze eintrag ist nicht von heute"
End If
Workbooks.Close
Application.ScreenUpdating = False
End Sub


AW: So einfach nun auch nicht....
11.02.2009 22:58:00
Ramses
Hallo
"...Perfekt! Und wie sieht der Code aus, wenn B.xls nicht geöffnet werden soll?.."
Wie ich schon geschrieben habe:
Geht nicht.
Wo ist das Problem, dass du die Datei kurz öffnen musst ?
Du kriegst das doch gar nicht mit.
Gruss Rainer
Anzeige
AW: So einfach nun auch nicht....
11.02.2009 23:00:00
Horst
Rainer! Wirklich toll gemacht. Eine abschließende Bitte noch:
Kannst du obigen Code hier (bei "WertAusExcel = LeseZeile1(CStr(sPfad))" einbauen:

Sub TestLeseTxT()
Dim action As Double
Dim sFormel As String, sPfad As String
Dim rLetzte As Range
Dim WertAusTxT, WertAusExcel As Double
sPfad = "C:\Dokumente und Einstellungen\User\Desktop\test.txt"
'letzte Zelle in AA
Set rLetzte = Cells(Rows.Count, "AA")
'Pfad, Dateinamen und Tabellennamen anpassen
sFormel = "'C:\Dokumente und Einstellungen\User\Desktop\[B.xls]Go'!" & rLetzte.Address(, ,  _
xlR1C1)
WertAusExcel = LeseZeile1(CStr(sPfad))
WertAusTxT = ExecuteExcel4Macro(sFormel)
If IsNumeric(WertAusTxT) And IsNumeric(WertAusExcel) Then
MsgBox WertAusExcel * Exp(WertAusTxT), vbInformation, "Ausgabewert"
Else
MsgBox "Die Daten konnten nicht berechnet werden!"
End If
End Sub



Function LeseZeile1(strPfad As String) As Double
Dim sLine As String
Dim F As Integer
F = FreeFile
Open strPfad For Input As #F
Line Input #F, sLine
Close #F
sLine = Replace(sLine, " ", vbTab)
If InStr(sLine, vbTab) > 0 Then
sLine = Right$(sLine, Len(sLine) - InStr(sLine, vbTab))
End If
If IsNumeric(sLine) Then
LeseZeile1 = CDbl(sLine)
End If
End Function


Anzeige
AW: So einfach nun auch nicht....
11.02.2009 23:16:00
Ramses
Hallo
Wozu,... der Code taugt absolut nichts.
"Set rletzte" funktioniert nicht
"sFormel" funktioniert nicht
"Lesezeile1" funktioniert nicht
"WertAusText" funktioniert nicht
Was bitte soll ich da einbauen ?
Da ist eine komplette Neuprogrammieren angsagt.
Gruss Rainer
AW: So einfach nun auch nicht....
12.02.2009 11:01:00
Horst
Der Code taugt sehr wohl was, nur scheinen mir die beiden Codes inkompatibel zueinander zu sein. Dennoch, ich habe das Problem bereits gelöst.
AW: So einfach nun auch nicht....
12.02.2009 11:23:00
Ramses
Hallo
"...Der Code taugt sehr wohl was..."
Dann glaub ich das auch noch, und verbeuge mich mit tiefem Haupt vor dem neuen EXCLE VBA König in diesem Forum. In Zukunft lerne ich von dir.
Probier es doch einfach mal aus:
"rLetzte" hat immer den Wert $AA$65536
Schreib einfach mal in die nächste Zeile nach der SET-Anweisung
MsgBox "RLetzte-Adresse ist: " & rletzte.Address
"sFormel" KANN nicht funktionieren weil "rLetzte.Address" keinen Wert im R1C1-Fromat liefert der für eine solche Ausführung zwingend nötig wäre
Ausserdem bekämest du dann immer den Wert aus $AA$65536, ... und ich glaube nicht dass du das willst.
"LeseZeile1" kann nicht funktioniertn weil du mit der "Line Input" keine Werte aus einer XLS Datei einlesen kannst, das funktoiniert nur mit einer TEXT Datei
"WertAusText" Kann nicht funktionieren, weil EXECUTE nicht auf Text-Dateien angewendet werden kann
Gruss Rainer
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige