Print-Schleife variabel machen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Print-Schleife variabel machen
von: Malte
Geschrieben am: 15.11.2015 16:19:59

Hallo,
ich übergebe mittels des Print-Befehls eine Reihe von Datensätzen in eine txt.-Datei.
Das läuft am Anfang folgendermaßen:
For Zeile = 2 To 2
Print #1, ""
Hier wird nur die Zeile 2 übertragen. Ich muss diese Aufgabe regelmäßig machen, und die Anzahl der zu übertragenden Zeilen variiert - sie hängt davon ab, ob in den Zeilen Daten enthalten sind.
Damit ich nicht jedemal im Code die Zahl anpassen muss, wollte ich fragen, ob es möglich ist, dass die zweite "2" variabel wird, ggf. abhängig von einem ISTTEXT-Befehl oä. Oder ggf. kann sie eine Zahl aus einer Zelle im Blatt übernehmen, und dort wird die richtige Zeilennummer ermittelt.
Vielleicht hat ja jemand eine Idee.
Vielen Dank
Malte

Bild

Betrifft: AW: Print-Schleife variabel machen
von: Sepp
Geschrieben am: 15.11.2015 16:43:04
Hallo Malte,
angenommen, deine Daten stehen in Spalte A, dann z. B. so.

Dim lngRow As Long

With Sheets("Tabelle1")
  For Zeile = 2 To Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
    '...
  Next
End With

Gruß Sepp


Bild

Betrifft: AW: Print-Schleife variabel machen
von: Malte
Geschrieben am: 15.11.2015 18:50:35
Hallo Sepp,
vielen Dank! Das funktioniert grundsätzlich. Aber eben nur grundsätzlich.
Daher zunächst eine Rückfrage: Gezzählt werden soll erst sin Spalte C.
Ist es richtig, dass es dann heißen muss


For Zeile = 2 To Application.Max(2, .Cells(.Rows.Count, 3).End(xlUp).Row)
?
Möglicherweise liegt bereits der Fehler hier, daher die Rückfrage
Das Skript zählt nämlich 65 Einträge, obwohl es nur 20 Zeilen sind. Dem entsprechend viele Leereinträge hängt er unten noch an.
Malte

Bild

Betrifft: AW: Print-Schleife variabel machen
von: Sepp
Geschrieben am: 15.11.2015 18:59:57
Hallo Malte,
richtig! Warum zu viele Daten gezählt werden, liegt wohl an deiner Datei! Stehen in den Zellen Formeln?

Gruß Sepp


Bild

Betrifft: AW: Print-Schleife variabel machen
von: Malte
Geschrieben am: 15.11.2015 19:13:02
Nein. Es geht folgendermaßen:
1. Das betreffende Sheet wird aufgerufen.
2. Dann kommt dort der Befehl Clear Contents
3. Dann werden dort Daten eingefügt, die aus einem anderen Sheet per Marko kopiert wurden. Diese wurden mit einem Filter zusammengestellt, aber selbst, wenn man die durch den Filter ausgeblendeten Datensätze bedenkt, müsste er auf ca. 30 kommen.
Die übrigen Zellen sind leer.

Bild

Betrifft: Beispieldatei!
von: Sepp
Geschrieben am: 15.11.2015 19:39:02
Hallo Malte,
lade ein Beispiel der Tabelle hoch.

Gruß Sepp


Bild

Betrifft: AW: Beispieldatei!
von: Malte
Geschrieben am: 15.11.2015 22:23:18
Gerne. Ich habe hier das Orignaltabellenblatt, bei dem Makro aus dem ersten Post ansetzt. Ich habe ein paar Spateln aus Datenschutzgründen gelöscht.
Hier die Datei: https://www.herber.de/bbs/user/101538.xlsm
Das Problem mit der Zählung habe ich auch an anderer Stelle in dem Projekt, dort wird aber einfach gar nicht gezählt, also die vorhandenen Daten werden missachtet. Das ist aber wohl etwas für einen anderen Thread, ich möchte erst einmal dieses Problem hier lösen.
Vielen Dank

Bild

Betrifft: AW: Beispieldatei!
von: Sepp
Geschrieben am: 15.11.2015 22:46:58
Hallo Malte,
das du den Tabellennamen anpassen musst, sollte eigentlich klar sein.
Die Variable "supplier_specific" ist nicht deklariert!

' **********************************************************************
' Modul: kursnet_xml_name Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub kursnet_xml()
Dim Datei As String, Text As String
Dim Zeile As Long
Dim zeigen

On Error GoTo Hell
'Zieldatei festlegen

Datei = ThisWorkbook.Path & "\test.xml"

Open Datei For Output As #1 'Zieldatei öffnen

'reinschreiben
Print #1, "<?xml version=""1.1"" encoding=""iso-8859-15"" standalone=""yes""?>"
Print #1, "<OPENQCAT version=""1.1"" xsi:noNamespaceSchemaLocation=""openQ-cat.V1.1.xsd"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">"
Print #1, "<HEADER>"
Print #1, "<GENERATOR_INFO>Export OpenQ 3.10.0</GENERATOR_INFO>"
Print #1, "<CATALOG>"
Print #1, "<LANGUAGE>deu</LANGUAGE>"
Print #1, "<CATALOG_ID>170281-1424116599866</CATALOG_ID>"
Print #1, "<CATALOG_VERSION>Vers_KURSNET</CATALOG_VERSION>"
Print #1, "<CATALOG_NAME>KURSNET-Export</CATALOG_NAME>"
Print #1, "</CATALOG>"
Print #1, "<DOCUMENT_CREATOR>"
Print #1, "<FIRST_NAME>Malte</FIRST_NAME>"
Print #1, "<LAST_NAME>Krohn</LAST_NAME>"
Print #1, "<PHONE>+49.6221.650330</PHONE>"
Print #1, "<ID_DB>nr:9866</ID_DB>"
Print #1, "<ADDRESS>"
Print #1, "<NAME>AH Akademie für Fortbildung Heidelberg GmbH</NAME>"
Print #1, "<STREET>Maaßstr. 28</STREET>"
Print #1, "<ZIP>69123</ZIP>"
Print #1, "<CITY>Heidelberg</CITY>"
Print #1, "<COUNTRY>DE</COUNTRY>"
Print #1, "<URL>http://www.akademie-heidelberg.de</URL>"
Print #1, "<ID_DB>adr:699</ID_DB>"
Print #1, "</ADDRESS>"
Print #1, "<CONTACT_REMARKS>Eugen Riske</CONTACT_REMARKS>"
Print #1, "</DOCUMENT_CREATOR>"
Print #1, "<RECIPIENT>"
Print #1, "<RECIPIENT_ID>BA</RECIPIENT_ID>"
Print #1, "<RECIPIENT_NAME>Informationssystem KURSNET</RECIPIENT_NAME>"
Print #1, "<ADDRESS>"
Print #1, "<NAME>IT-Systemhaus</NAME>"
Print #1, "<STREET>Regensburgerstr. 104</STREET>"
Print #1, "<ZIP>90478</ZIP>"
Print #1, "<CITY>Nürnberg</CITY>"
Print #1, "<COUNTRY>DE</COUNTRY>"
Print #1, "<URL>http://www.kursnet-online.arbeitsagentur.de</URL>"
Print #1, "</ADDRESS>"
Print #1, "</RECIPIENT>"
Print #1, "<SUPPLIER>"
Print #1, "<SUPPLIER_ID type=""supplier_specific"">170281</SUPPLIER_ID>"
Print #1, "<SUPPLIER_NAME>Akademie Heidelberg AH Akademie für Fortbildung Heidelberg GmbH</SUPPLIER_NAME>"
Print #1, "<ADDRESS>"
Print #1, "<NAME>Akademie Heidelberg</NAME>"
Print #1, "<NAME2>AH Akademie für Fortbildung</NAME2>"
Print #1, "<NAME3>Heidelberg GmbH</NAME3>"
Print #1, "<STREET>Maaßstr. 28</STREET>"
Print #1, "<ZIP>69123</ZIP>"
Print #1, "<BOXNO>101105</BOXNO>"
Print #1, "<ZIPBOX>69001</ZIPBOX>"
Print #1, "<CITY>Heidelberg</CITY>"
Print #1, "<STATE>Baden-Württemberg</STATE>"
Print #1, "COUNTRY>Deutschland</COUNTRY>"
Print #1, "<PHONE>+49.6221.650330</PHONE>"
Print #1, "<MOBILE/>"
Print #1, "<FAX/>"
Print #1, "<EMAILS>"
Print #1, "EMAIL>info@akademie-heidelberg.de</EMAIL>"
Print #1, "</EMAILS>"
Print #1, "<URL>http://www.akademie-heidelberg.de</URL>"
Print #1, "</ADDRESS>"
Print #1, "<CONTACT>"
Print #1, "<CONTACT_ROLE type="; 5; ">Sonstige</CONTACT_ROLE>"
Print #1, "<SALUTATION>m</SALUTATION>"
Print #1, "<FIRST_NAME>Krohn</FIRST_NAME>"
Print #1, "<LAST_NAME>Malte</LAST_NAME>"
Print #1, "<PHONE>+49.160.96210866</PHONE>"
Print #1, "<MOBILE/>"
Print #1, "<FAX/>"
Print #1, "<EMAILS>"
Print #1, "<EMAIL>malte.krohn@akademie-heidelberg.de</EMAIL>"
Print #1, "</EMAILS>"
Print #1, "<URL>"
Print #1, "http://www.akademie-heidelberg.de</URL>"
Print #1, "<ID_DB>921272</ID_DB>"
Print #1, "<CONTACT_REMARKS>Home-Office</CONTACT_REMARKS>"
Print #1, "</CONTACT>"
Print #1, "<KEYWORD>Fortbildung</KEYWORD>"
Print #1, "<KEYWORD>Heidelberg</KEYWORD>"
Print #1, "<KEYWORD>Akademie Heidelberg AH Akademie für Fortbildung Heidelberg GmbH</KEYWORD>"
Print #1, "<KEYWORD>GmbH</KEYWORD>"
Print #1, "<KEYWORD>Akademie</KEYWORD>"
Print #1, "<EXTENDED_INFO input_type=""0"">"
Print #1, "<ORGANIZATIONAL_FORM type=""2"">Private Bildungseinrichtung</ORGANIZATIONAL_FORM>"
Print #1, "</EXTENDED_INFO>"
Print #1, "</SUPPLIER>"
Print #1, "</HEADER>"
Print #1, "<NEW_CATALOG FULLCATALOG=""false"">"

'Seminardaten aus kursnet-Tabelle nehmen
'mit Schleife die ersten 5 Zeilen der Tabelle reinschreiben
'Spalte A = Blz, Spalte B = Institut
'For Zeile = 2 To 2

With Sheets("kursnet_xml")
  For Zeile = 2 To Application.Max(2, .Cells(.Rows.Count, 3).End(xlUp).Row)
    Print #1, "<SERVICE mode=""new"">"
    Print #1, "<PRODUCT_ID>" & .Cells(Zeile, 2).Text & "</PRODUCT_ID>"
    Print #1, "<SUPPLIER_ID_REF type="; supplier_specific; ">170281</SUPPLIER_ID_REF>"
    Print #1, "<SERVICE_DETAILS>"
    Print #1, "<TITLE>" & .Cells(Zeile, 4).Text & "</TITLE>"
    Print #1, "<DESCRIPTION_LONG>" & .Cells(Zeile, 5).Text & "</DESCRIPTION_LONG>"
    Print #1, "<SUPPLIER_ALT_PID>" & .Cells(Zeile, 6).Text & "</SUPPLIER_ALT_PID>"
    Print #1, "<CONTACT>"
    Print #1, "<CONTACT_ROLE type="; 1; ">Ansprechpartner</CONTACT_ROLE>"
    Print #1, "<SALUTATION>" & .Cells(Zeile, 9).Text & "</SALUTATION>"
    Print #1, "<FIRST_NAME>" & .Cells(Zeile, 10).Text & "</FIRST_NAME>"
    Print #1, "<LAST_NAME>" & .Cells(Zeile, 11).Text & "</LAST_NAME>"
    Print #1, "<PHONE>" & .Cells(Zeile, 12).Text & "</PHONE>"
    Print #1, "<MOBILE>" & .Cells(Zeile, 13).Text & "</MOBILE>"
    Print #1, "<FAX>" & .Cells(Zeile, 14).Text & "</FAX>"
    Print #1, "<EMAILS>"
    Print #1, "<EMAIL>" & .Cells(Zeile, 15).Text & "</EMAIL>"
    Print #1, "</EMAILS>"
    Print #1, "<URL>http://www.akademie-heidelberg.de</URL>"
    Print #1, "<ID_DB>" & .Cells(Zeile, 16).Text & "</ID_DB>"
    Print #1, "</CONTACT>"
    Print #1, "<SERVICE_DATE>"
    Print #1, "<START_DATE>" & .Cells(Zeile, 17).Text & "T00:00:00+01:00</START_DATE>"
    Print #1, "<END_DATE>" & .Cells(Zeile, 18).Text & "T00:00:00+01:00</END_DATE>"
    Print #1, "</SERVICE_DATE>"
    Print #1, "<KEYWORD>" & .Cells(Zeile, 41).Text & "</KEYWORD>"
    Print #1, "<TARGET_GROUP>"
    Print #1, "<TARGET_GROUP_TEXT>" & .Cells(Zeile, 19).Text & "</TARGET_GROUP_TEXT>"
    Print #1, "</TARGET_GROUP>"
    Print #1, "<TERMS_AND_CONDITIONS/>"
    Print #1, "<SERVICE_MODULE>"
    Print #1, "<EDUCATION type=""true"">"
    Print #1, "<COURSE_ID>16997352</COURSE_ID>"
    Print #1, "<DEGREE type=""0"">"
    Print #1, "<DEGREE_TITLE>Keine Angabe zur Abschlussbezeichnung</DEGREE_TITLE>"
    Print #1, "<DEGREE_EXAM type=""Zertifikat"">"
    Print #1, "<EXAMINER>Keine Angabe</EXAMINER>"
    Print #1, "</DEGREE_EXAM>"
    Print #1, "<DEGREE_ADD_QUALIFICATION>Keine Angabe</DEGREE_ADD_QUALIFICATION>"
    Print #1, "<DEGREE_ENTITLED>Keine Angabe</DEGREE_ENTITLED>"
    Print #1, "</DEGREE>"
    Print #1, "<SUBSIDY/>"
    Print #1, "<EXTENDED_INFO>"
    Print #1, "<INSTITUTION type=""105"">" & "Einrichtung der beruflichen Weiterbildung" & "</INSTITUTION>"
    Print #1, "<INSTRUCTION_FORM type=""1"">" & "Vollzeit" & "</INSTRUCTION_FORM>"
    Print #1, "<EDUCATION_TYPE type=""104"">" & "Fortbildung/Qualifizierung" & "</EDUCATION_TYPE>"
    Print #1, "</EXTENDED_INFO>"
    Print #1, "<MODULE_COURSE>"
    Print #1, "<LOCATION>"
    Print #1, "<NAME>" & .Cells(Zeile, 20).Text & "</NAME>"
    Print #1, "<STREET>" & .Cells(Zeile, 21).Text & "</STREET>"
    Print #1, "<ZIP>" & .Cells(Zeile, 22).Text & "</ZIP>"
    Print #1, "<ZIPBOX>" & .Cells(Zeile, 23).Text & "</ZIPBOX>"
    Print #1, "<CITY>" & .Cells(Zeile, 24).Text & "</CITY>"
    Print #1, "<STATE>" & .Cells(Zeile, 25).Text & "</STATE>"
    Print #1, "<COUNTRY>" & .Cells(Zeile, 26).Text & "</COUNTRY>"
    Print #1, "<PHONE/>"
    Print #1, "<MOBILE/>"
    Print #1, "<FAX/>"
    Print #1, "</LOCATION>"
    Print #1, "<DURATION type=""1""/>"
    Print #1, "<FLEXIBLE_START>false</FLEXIBLE_START>"
    Print #1, "<EXTENDED_INFO>"
    Print #1, "<SEGMENT_TYPE type=""0""/>"
    Print #1, "</EXTENDED_INFO>"
    Print #1, "</MODULE_COURSE>"
    Print #1, "</EDUCATION>"
    Print #1, "</SERVICE_MODULE>"
    Print #1, "<ANNOUNCEMENT>"
    Print #1, "<START_DATE>" & .Cells(Zeile, 29).Text & "+01:00</START_DATE>"
    Print #1, "<END_DATE>" & .Cells(Zeile, 30).Text & "+02:00</END_DATE>"
    Print #1, "</ANNOUNCEMENT>"
    Print #1, "</SERVICE_DETAILS>"
    Print #1, "<SERVICE_CLASSIFICATION>"
    Print #1, "<REFERENCE_CLASSIFICATION_SYSTEM_NAME>Kurssystematik</REFERENCE_CLASSIFICATION_SYSTEM_NAME>"
    Print #1, "<FEATURE>"
    Print #1, "<FNAME>" & .Cells(Zeile, 32).Text & "</FNAME>"
    Print #1, "<FVALUE>" & .Cells(Zeile, 33).Text & "</FVALUE>"
    Print #1, "</FEATURE>"
    Print #1, "</SERVICE_CLASSIFICATION>"
    Print #1, "<SERVICE_PRICE_DETAILS>"
    Print #1, "<SERVICE_PRICE>"
    Print #1, "<PRICE_AMOUNT>"; .Cells(Zeile, 34) & "</PRICE_AMOUNT>"
    Print #1, "<PRICE_CURRENCY>EUR</PRICE_CURRENCY>"
    Print #1, "</SERVICE_PRICE>"
    Print #1, "<REMARKS>zzgl. gesetzl. USt.</REMARKS>"
    Print #1, "</SERVICE_PRICE_DETAILS>"
    Print #1, "<MIME_INFO>"
    Print #1, "<MIME_ELEMENT>"
    Print #1, "<MIME_SOURCE>" & .Cells(Zeile, 35) & "</MIME_SOURCE>"
    Print #1, "</MIME_ELEMENT>"
    Print #1, "</MIME_INFO>"
    Print #1, "</SERVICE>"
  Next Zeile
End With

Print #1, "</NEW_CATALOG>"
Print #1, "</OPENQCAT>"
Close #1 'Zieldatei schließen

zeigen = Shell(Environ("windir") & "\notepad.exe " & Datei, 1)
Exit Sub

Hell:
Close #1
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
  & "Beschreibung: " & Err.Description _
  , vbCritical, "Fehler"
End Sub

Gruß Sepp


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Print-Schleife variabel machen"