Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Feste Blöcke aus Excel zu XML
#1
Hola los Todos!

Ich hoffe Ihr seid alle gesund und munter.

Ich habe eine Excelliste mit festen Blöcken in einer Spalte nach dem Schema:

Code:
<url>
<loc>https://domain.com</loc>
<lastmod>2020-07-07T01:01:01Z</lastmod>
</url>
usw.

Im aktuellen Fall sind es 5700 solche Blöcke aus jeweils 4 Zeilen.

Die würde ich gerne in 150 x 38 Blöcke unterteilen und jeweils eine XML Datei erzeugen nach dem Schema:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://domain.com</loc>
<lastmod>2020-07-07T01:01:01Z</lastmod>
</url>
<url>
<loc>https://domain.com</loc>
<lastmod>2020-07-07T01:01:01Z</lastmod>
</url>
usw.
</urlset>


Der erste grosse Block für die erste XML Datei wäre A1:A152 = 4 Werte x 38 Blöcke.
Der zweite dann A153:A304 usw.

Der zu erzeugende Dateiname für die XML Datei(en) sollte dem Schema sitemap001.xml, sitemap002.xml usw. folgen.

Der Speicherort wäre frei definierbar.

Danke und Gruss

Peter
Antworten Top
#2
Hallöchen,

das wäre dann so was:

Code:
Sub XML_Out_152()
'(c) schauan
'Variablendeklarationen
Dim strFile$, iCnt%, kCnt%, intF%, boOpen As Boolean
'Startzeilennummer
iCnt = 1
'Schleife ueber alle Zelleintraege bis zur ersten leeren Zelle in SPalte A
Do While Cells(iCnt, 1) <> ""
  'In Zeile 1, 153, 305 usw neues File beginnen
  If iCnt Mod 152 = 1 Then
    'Filezaehler hochsetzen
    kCnt = kCnt + 1
    'Dateiname bilden
    strFile = "C:\Temp\ sitemap" & Format(kCnt, "000") & ".xml"
    'Filenummer ermitteln
    intF = FreeFile
    'Datei zur Ausgabe oeffnen
    Open strFile For Output As #intF
    'Datei offen merken
    boOpen = True
    'Ausgabe des XML-Headers
    Print #intF, "<?xml version=""1.0"" encoding=""UTF-8""?>"
    Print #intF, "<urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">"
  End If
  'Zeile ausgeben
  Print #intF, Cells(iCnt, 1).Value
  'in Zeile 152, 304 usw. Datei schliessen
  If iCnt Mod 152 = 0 Then
    'XML-Ende ausgeben
    Print #intF, "</urlset>"
    'Datei schliessen
    Close #intF
    'Datei geschlossen merken
    boOpen = False
  End If
  'Zeilenzaehler hochsetzen
  iCnt = iCnt + 1
'Ende Schleife ueber alle Zelleintraege bis zur ersten leeren Zelle in SPalte A
Loop
'falls doch noch ein File offen ist, dann
If boOpen Then
  'XML-Ende ausgeben
  Print #1, "</urlset>"
  'Datei schliessen
  Close #intF
'Ende falls doch noch ein File offen ist, dann
End If
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • PeterN
Antworten Top
#3
Hi André!

Funktioniert!

Super!
Klasse!
Danke!

Peter
Antworten Top


Gehe zu:


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