VBA CODE für die Auswertung
#1
Hallo zusammen,
ich benötige ein Code für folgendes Problem:
Allgemein möchte ich Textfiles einlesen aber mit einer Bedingung.


Ich habe ein Exceldatei mit folgender Tabelle;

PHP-Code:
Fläche    Nutzung            Pfad
0    Kinderzimmer    C
:\Users\
0    Badezimmer    C:\Users\
0    WC            C:\Users\
0    Wohnzimmer    C:\Users\
20    Schlafzimmer    C:\Users\
20    Dachboden    C:\Users\
40    Keller            C:\Users\
120    Flur            C:\Users\
40    Elternzimmer    C:\Users\
60    Küche            C:\Users
 Nun soll der Code die erste Spalte abfahren.
Bedingung: Es sollen nur die Dateien eingelesen werden bei denen die Fläche größer ist als 0!
Alle Dateien befinden sich im gleichen Ordner. Der Dateiname besitzt immer den gleichen Namen wie die Nutzung.


Kann mir hierbei jemand helfen?
PHP-Code:
     W/qm                    W/qm                                     W/qm                             W/qm      
+0.0000000000000000E+00          +0.0000000000000000E+00    +0.0000000000000000E+00+0.0000000000000000E+00 
Top
#2
Hallo

ich weiss nicht was ein PHP Code ist??  Als Makro würde ich über eine For Next Schleife mit IF Then arbeiten, den Wert in der Spalte "Flaeche" prüfen:  IF  Flaeche(xx) > 0 Then ....   Wie man das in den PHP Code umsetzt weiss ich nicht?  Vielleicht hilft es als Tipp ja weiter.

mfg  Gast 123
Top
#3
Hallo das PHP Fenster wurde nur angewandt um hier im Forum die Tabelle richtig anzuzeigen. Grüße
Top
#4
Zitat:Bedingung: Es sollen nur die Dateien eingelesen werden bei denen die Fläche größer ist als 0!
Wie sieht denn ein Raum mit einer Fläche < 0 aus?
Schöne Grüße
Berni
Top
#5
Hallo Berni, es gibt keine Räume kleiner 0. Mit dieser Bedingung größer 0 möchte ich nur verhindern das die hinterlegten Nutzungen mit A = 0 ( Textfiles) nicht eingelesen werden.
Top
#6
Nach einiger Recherche;

Sub Datei_öffnen_in_bestimmter_Zelle()


Dim Pfad As String
Pfad = ThisWorkbook.Worksheets("Tabelle1").Range("C8").Value
    
With Workbooks.Open(Filename:=Pfad)

  .ActiveSheet.Range("A3:DN6000").Copy Destination:=ThisWorkbook.Worksheets("Tabelle2").Range("A3")
  .Close savechanges:=False 'oder true, wenn Änderungen gespeichert werden sollen
End With
End Sub

Kann mir jemand helfen, dass als Schleife umzubauen? Es soll ja die Spalte "Fläche" durchlaufen und nur die Textfiles öffnen bei denen die Fläche > 0 ist.

Und am besten sollen die geöffneten Textfiles als Arbeitsblatt unten im Register auftauchen.
Bin für jede Hilfe dankbar.
Top
#7
ungetestet

Code:
Sub Datei_öffnen_in_bestimmter_Zelle()
Dim Pfad As String, i As Long, freie As Long


With Sheets("Tabelle1")
   freie = Sheets("Tabelle2").Cells(.Rows.Count, "A").End(xlUp).Row + 1
   For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
       If .Cells(i, "A") > 0 Then
           Pfad = ThisWorkbook.Worksheets("Tabelle1").Range("C" & i).Value
           With Workbooks.Open(Filename:=Pfad)

               .ActiveSheet.Range("A3:DN6000").Copy _
               Destination:=ThisWorkbook.Worksheets("Tabelle2").Range("A" & freie)
               .Close savechanges:=False 'oder true, wenn Änderungen gespeichert werden sollen
           End With
       End If
   Next i
End With
End Sub
Schöne Grüße
Berni
Top
#8
Hallo Berni,
vielen dank für deine Hilfe.
Leider kommt immer noch ein Fehler deshalb habe ich die xls und textdateien hochgeladen.
Ich würde mich freuen wenn du nochmal einen Blick drauf werfen könntest.
Grüße


Angehängte Dateien
.txt   Kinderzimmer.txt (Größe: 994 Bytes / Downloads: 10)
.txt   Klo.txt (Größe: 994 Bytes / Downloads: 8)
.txt   Schlafzimmer.txt (Größe: 994 Bytes / Downloads: 8)
.xlsx   TESTDATEI.xlsx (Größe: 8,61 KB / Downloads: 8)
.txt   WC.txt (Größe: 994 Bytes / Downloads: 9)
Top
#9
Hallo,

"Leider kommt immer noch ein Fehler" hilft mir leider gleich viel wie dem Mechaniker "mein Auto hat was". Welchen Fehler bekommst du? Hast du den Code mit F8 im Einzelschrittmodus durchlaufen lassen? Falls ja, in welcher Zeile bleibt der Code stehen?

Da deine Testdatei schlecht aufgebaut ist, kann ich mir schon diverse Gründe vorstellen, warum der Code nicht funktioniert hat (ist aber reine Mutmaßung, siehe oben):
- Die Daten stehen "mitten im Raum", wieso startest du nicht in Zelle A1? Darauf ist der Code ausgelegt. Die Raumflächen müssen in Spalte A stehen, Überschriften in Zeile 1, erster Eintrag in Zeile 2
- Du hast keine Tabelle2 in deiner Datei. Dann weiß Excel natürlich nicht, wohin die Daten kopiert werden sollen.
- Der Pfad in Spalte 3 ist falsch

Zu meinem Code noch ein Hinweis. Schneide die Zeile 
Code:
freie = Sheets("Tabelle2").Cells(.Rows.Count, "A").End(xlUp).Row + 1
aus und füge sie unterhalb der Zeile
Code:
Pfad = ThisWorkbook.Worksheets("Tabelle1").Range("C" & i).Value
wieder ein. Das hatte ich übersehen.

Wenn die obigen Punkte in deiner Datei richtig sind, läuft der Code tadellos durch.
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • ilmiomondo
Top
#10
Hallo Berni,
der Code funktioniert soweit. Dankeschön. Die Beispieldatei war schlecht aufgebaut (sorry!). Aber es funktioniert. 
Erstmal richtig geil das es durchläuft und überprüft ob die Fläche größer oder gleich null ist.Top.

Meine nächste Frage wäre ob es möglich wäre die Textfiles die eingelesen werden einzeln als Arbeitsblatt unten im Register erscheinen zu lassen anstatt alle in Tabelle 2 zu kopieren?

Danke für deine Hilfe!!!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste