Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe bei der Erweiterung eines VBA-Codes

Forumthread: Hilfe bei der Erweiterung eines VBA-Codes

Hilfe bei der Erweiterung eines VBA-Codes
21.09.2024 13:27:03
yello74
Werte Forenmitglieder,


ich scheitere leider an der Erweiterung eines bestehenden Makros und bitte daher hier um Hilfe.

Ziel ist es, aus einer Exceltabelle eine spezifizierte kml-Datei zu erzeugen, die dann auch ohne Fehler geladen wird.

Das Beispiel der Excel-Tabelle hänge ich hier an. https://www.herber.de/bbs/user/172329.xls

In dieser alten Excel-Datei (Beispiel.xls) ist ein Makro, das ich erweitern wollte. Das schaffe ich aber leider nicht, da mir da einige Kenntnisse fehlen. Ich möchte - wie erkennbar - nach Kontinenten sortiert Städte mit ihren Koordinaten und eine kurze Bescheibung eingeben können. Deshalb die Spalte "Folder". Zur Spalte "Range" kann ich nicht sagen, woher sie kommt, und was sie bewirkt. Sie scheint aber für die Anzeige der Städte im Programm nicht relevant zu sein. Dennoch möchte ich dieses Merkmal behalten, da es in der exprtierten Datei auftaucht, um keine Schwierigkeiten beim laden zu bekommen.

Das bestehende Makro funktioniert soweit. Es ist mit bei der Beispiel-Datei
Wie ich jedoch die Erweiterung um den Folder und die anderen benötigten - ständig wiederkehrenden Zeilen (z.B. der des Icon) - erzeugen kann - das ist für mich sehr langwieriges "Try & Error". Und hierfür würde ich mich über Hilfe sehr freuen.

Ich glaube, das es für einen versierten VBA-Experten gar kein so langer Code ist. (Meine ich ...)





Die fertige kml-Datei, nachdem das Makro durchgelaufen ist, soll dann so aussehen:

#?xml version="1.0" encoding="UTF-8"?§
#kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"§
#Document§
#name§Bookmarks#/name§
#Folder§
#name§EUROPA#/name§
#Placemark§
#name§AMSTERDAM#/name§
#description§#![CDATA[Amsterdam City]]§#/description§
#LookAt§
#longitude§4.8896900000#/longitude§
#latitude§52.3740300000#/latitude§
#altitude§0.0000000000#/altitude§
#range§49190.6554370995#/range§
#/LookAt§
#Style§
#IconStyle§
#Icon§
#href§D:/Orte/data/bitmaps/bookmark.png#/href§
#/Icon§
#/IconStyle§
#/Style§
#Point§
#coordinates§4.8896900000,52.3740300000,0.0000000000#/coordinates§
#/Point§
#ExtendedData§
#Data name="isBookmark"§
#value§true#/value§
#/Data§
#/ExtendedData§
#/Placemark§
#Placemark§
#name§SIDNEY#/name§
#description§#![CDATA[Town of Sidney]]§#/description§
#LookAt§
#longitude§151.209900#/longitude§
#latitude§-33.865143#/latitude§
#altitude§0.0000000000#/altitude§
#range§165653.5462586893#/range§
#/LookAt§
#Style§
#IconStyle§
#Icon§
#href§D:/Orte/data/bitmaps/bookmark.png#/href§
#/Icon§
#/IconStyle§
#/Style§
#Point§
#coordinates§151.209900,33.865143#/coordinates§
#/Point§
#ExtendedData§
#Data name="isBookmark"§
#value§true#/value§
#/Data§
#/ExtendedData§
#/Placemark§
#/Folder§
#/Document§
#/kml§


Ich habe hier alle "" durch "#" und alle ">" durch "§" ersetzt, da mit ich den ganzen Code posten konnte. Das kann man im Editor ja wieder ändern. Das geht bestimmt auch geschickter, aber ich wusste mir nicht besser zu helfen. Sorry.
Im originalen Code sind dann auch noch Einzüge. Die dienen bestimmt zur Übersichtlichkeit. Die Einzüge konnte leider ich nicht darstellen. ("#" und "§" tauchen im Ziel-Code sonst nicht auf. Die Zeichen haben sich deshalb als Ersatz geeignet.)

Diesen Code habe ich - wie gesagt - als Export aus dem Programm erhalten, für das ich das neue Makro benötige. Es ist daher mein Ziel.


Ich würde mich riesig über Rückmeldungen freuen.


LG
Yello74
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei der Erweiterung eines VBA-Codes
21.09.2024 13:58:49
Eifeljoi 5
Hallo

Teste dies mal, aber ungetestet von mir. Hast du schon mal mit Power Query probiert?
Sub generateKML()

' Set file details
Dim filePath As String
Dim docName As String
filePath = ThisWorkbook.Sheets("File_details").Range("C2").Value
docName = ThisWorkbook.Sheets("File_details").Range("C3").Value

Open filePath For Output As #1

' Write header to file
Dim outputText As String
outputText = ThisWorkbook.Sheets("File_details").Range("C5").Value & docName & ThisWorkbook.Sheets("File_details").Range("C6").Value
Print #1, outputText

' Start to loop through stations
Dim cell As Range
Dim dataRange As Range
Set dataRange = ThisWorkbook.Sheets("Data").Range("A2:A50001")

For Each cell In dataRange
Dim pmName As String
Dim longitudeValue As Double
Dim latitudeValue As Double
Dim pmDescription As String

pmName = cell.Value
longitudeValue = cell.Offset(0, 1).Value
latitudeValue = cell.Offset(0, 2).Value
pmDescription = cell.Offset(0, 3).Value

If pmName = "" Then
Exit For
End If

' Create a placemark
outputText = ThisWorkbook.Sheets("File_details").Range("C8").Value & pmName & ThisWorkbook.Sheets("File_details").Range("C9").Value & longitudeValue & ", " & latitudeValue & ThisWorkbook.Sheets("File_details").Range("C10").Value & pmDescription & ThisWorkbook.Sheets("File_details").Range("C11").Value
Print #1, outputText
Next cell

' Write footer to file
outputText = ThisWorkbook.Sheets("File_details").Range("C13").Value
Print #1, outputText

Close #1
End Sub
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige