LordHexa Geschrieben 28. Januar 2005 Geschrieben 28. Januar 2005 Hallo zusammen, ich habe ein Makro geschrieben, das eine Exceltabelle in eine EDI*-Konforme Textdatei schreibt. Das Problem ist, das ich mit meinen bisherigen Schleifen jede Zeile+Zelle einzeln ansprechen muss. Ich geb mal einen kleinen Code-Ausschnitt: For nRow = 4 To 4 For nCol = 3 To 3 LENTemp = Range("C4").Text Delimiter = 8 - Len(LENTemp) For i = 1 To Delimiter LENLenght = LENLenght + " " Next i strFileText = strFileText & avarWksData(nRow, nCol) & LENLenght 'Var's leeren! LENTemp = "" Delimiter = "" LENLenght = "" Next strFileText = strFileText & avarWksData(nRow, nColsCnt) Next Der Delimiter dient der Formatierung, dessen Wert leider nicht für jede Zelle Konstant bleibt. Ich brauche eine Schleife die folgendes tut : - Zeile Zellenweise einliest - Wenn nach der Zelle X eine leere Zelle folgt, in die nächste Zeile springen usw. Ich hoffe das jemand ne Lösung parat hat. MfG LordHexa *EDI = EDI steht für Electronic Data Interchange und ist der Überbegriff für Industriestandards zum elektronischen Austausch von Geschäftsdokumenten. Zitieren
-roTekuGeL- Geschrieben 28. Januar 2005 Geschrieben 28. Januar 2005 Sub neues() Dim row As Integer Dim col As Integer row = 1 col = 1 Do While Tabelle1.Cells(row, col) <> "" Do While Tabelle1.Cells(row, col) <> "" 'zeugs machen col = col + 1 'nächste zelle Loop 'wenn die letzte gefüllte zelle der 'vorigen zeile erreicht ist wieder zur 1. Zelle gehn col = 1 row = row + 1 Loop End Sub [/PHP] also so würde ich das machen... da läuft er jetzt solang durch bis die 1. Zelle einer neuen Zeile leer ist... ist nicht getestet, aber sollte so ok sein Zitieren
LordHexa Geschrieben 28. Januar 2005 Autor Geschrieben 28. Januar 2005 Danke für die schnelle Antwort, ich versuchs mal ! MfG LordHexa Zitieren
LordHexa Geschrieben 28. Januar 2005 Autor Geschrieben 28. Januar 2005 Naja, er liest das Feld A1 zwar aus, aber dann passiert nichts mehr. Das einizge was ich umgestellt hab ist : Do While ActiveWorkbook.Sheets("Tabelle1").Cells(row, col) <> "" Zitieren
-roTekuGeL- Geschrieben 28. Januar 2005 Geschrieben 28. Januar 2005 Naja, er liest das Feld A1 zwar aus, aber dann passiert nichts mehr. Das einizge was ich umgestellt hab ist : Do While ActiveWorkbook.Sheets("Tabelle1").Cells(row, col) <> "" wird wohl daran liegen dass durch die umstellung alles zusammengebrochen ist... lt. meinem excel kann der ActiveWorkbook.Sheets("Tabelle1").Cells(row, col) net... warum willst du das denn mit dem activeworkbook machen? ein makro greift IMMER auf das Workbook zu in dem das makro gestartet wurde... Zitieren
LordHexa Geschrieben 28. Januar 2005 Autor Geschrieben 28. Januar 2005 Da mein Excel bei Do While Tabelle1.Cells(row, col) <> "" ein Object erfordert Zitieren
-roTekuGeL- Geschrieben 28. Januar 2005 Geschrieben 28. Januar 2005 Da mein Excel bei Do While Tabelle1.Cells(row, col) <> "" ein Object erfordert dann heißt deine tabelle nicht tabelle1... hast du ne englische excel version? naja auf jeden fall sieht man das links im Projekt explorer... z.b. Tabelle1(Test) test ist der name den du vergeben hast und Tabelle1 in dem fall der Objektname... und der Objektname wird bei dir wohl anders sein... Zitieren
LordHexa Geschrieben 28. Januar 2005 Autor Geschrieben 28. Januar 2005 Ist mir klar, ganz so blöd bin nun auch auch nicht Ist ne Deutsche-Version. Ich werd mir mal nen anderen Lösungsweg suchen, habe gemerkt das es "so" auch sehr umständlich wird. Nichts desto trotz : Danke für die Hilfe! Zitieren
Stefan_1 Geschrieben 28. Januar 2005 Geschrieben 28. Januar 2005 Also, so müsste es gehen. Sub lesen() Dim row As Long Dim col As Long row = 0 col = 0 'selektiert die Zelle A1 Range("A1").Select Do While ActiveCell.Offset(row, col).Text <> "" Do While ActiveCell.Offset(row, col).Text <> "" 'Code 'springt um eine Spalte rüber col = col + 1 Loop 'springt eine Zeile tiefer zu der ersten Zelle col = 0 row = row + 1 Loop End Sub Viele Grüße Stefan_1 Zitieren
LordHexa Geschrieben 31. Januar 2005 Autor Geschrieben 31. Januar 2005 Das hat leider nicht so ganz funktioniert, wie ich es mir erhofft habe. Daher bin ich jetzt auf einen anderen Lösungsweg umgestiegen, allerdings auch dort wieder auf ein Problem gestoßen. Ich möchte nun 2 Tabellenblätter, die verschiedene Spaltengrößen haben, mit einem Knopfdruck in 2 seperate .prn Files schreiben. Diese sollen nacheinander erstellt werden, mit Benutzerdefiniertem-Namen. Hätte da jemand nen Vorschlag ? PRN-Format ist zwingend Notwendig, da somit die Formatierung erzeugt wird! Zitieren
Warfox Geschrieben 31. Januar 2005 Geschrieben 31. Januar 2005 Die dateien brauchen ja nur die endung .prn?? Dies kannst du ja mit der "inputbox()" machen, da kann der user dann einfach den namen der Datei angeben... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.