Fritzbox Telefonbuch - XML-Importdatei aus Excel erstellen
Das Thema geistert schon seit Jahren durch verschiedene Foren.
Habe mich jetzt mal damit etwas intensiver befasst und hoffe, niemanden damit zu langweilen.
Also: Eine Excel-Datei mit 5 Spalten erstellen.
Z. Bsp
Name (realName) Telefon privat (home) Telefon geschäftlich (work) Telefon mobil (mobile) Fax (fax_work)
Die Spalten sollten als Text formatiert sein, dann lassen sich die die Telefonnummern besser eingeben (führende Null oder Pluszeichen).
Eine Formatierung bzw. Validierung der Nummern soll auch noch eingebaut werden.
Über Entwicklertools ein neues Makro anlegen und folgenden Code einfügen:
Wenn man die erstellte XML-Datei in der Fritzbox zur Wiederherstellung des Telefonbuches benutzt, ergänzt die FB-Software selbst fehlende Bezeichner und Tags.
Achtung! Das vorhandene Telefonbuch wird immer überschrieben.
Nächster Schritt im Code wird das Ausfiltern leerer Zellen und Überlegungen zu weiteren sinnvollen Tags.
Und auch ein Import einer FB-Sicherungsdatei des Telefonbuches ist mittelfristig geplant.
Viel Vergnügen beim Anwenden und Experimentieren.
Für Hinweise bin ich sehr dankbar.
Viele Grüße
Peter
Habe mich jetzt mal damit etwas intensiver befasst und hoffe, niemanden damit zu langweilen.
Also: Eine Excel-Datei mit 5 Spalten erstellen.
Z. Bsp
Name (realName) Telefon privat (home) Telefon geschäftlich (work) Telefon mobil (mobile) Fax (fax_work)
Die Spalten sollten als Text formatiert sein, dann lassen sich die die Telefonnummern besser eingeben (führende Null oder Pluszeichen).
Eine Formatierung bzw. Validierung der Nummern soll auch noch eingebaut werden.
Über Entwicklertools ein neues Makro anlegen und folgenden Code einfügen:
Sub XML_Export()
Dim strDateiname As String
Dim strDateinameZusatz As String
Dim strMappenpfad As String
Dim intCutExt
'Datename ohne Ext. (nach Punkt suchen):
intCutExt = Len(ActiveWorkbook.Name) - InStrRev(ActiveWorkbook.Name, ".") + 1
strMappenpfad = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - intCutExt)
'strDateinameZusatz = "-" & Year(ActiveSheet.Cells(3, 1).Value) & "-" & Month(ActiveSheet.Cells(3, 1).Value) & ".xml"
strDateinameZusatz = "-" & Format(Now, "YYYY-MM-DD-HH-MM-SS") & ".xml"
strDateiname = InputBox("Bitte den Namen der XML-Datei angeben.", "XML-Export", strMappenpfad & strDateinameZusatz)
If strDateiname = "" Then Exit Sub
Range("A2").Select
'Erstellt die Telefonbuchdatei (hier: xxx.xml)
'Dateiname kann frei gewählt werden
'Der entsprechende Ordner MUSS vorhanden sein, da sonst ein Fehler auftritt
Set fs = CreateObject("scripting.filesystemobject")
Set a = fs.createtextfile(strDateiname, True)
'Schreibt den allgemeinen Teil der Telefonbuchdatei
a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """utf-8""" & "?>")
a.writeline ("<phonebooks>")
a.writeline ("<phonebook>")
'a.writeline ("<phonebook name=" & """Telefonbuch 1""" & " owner=" & """1""" & ">")
'Schleife zur Ermittlung aller Einträge
'Benutzt alle Datensätze, die einen Namen enthalten
i = 0
While ActiveCell.Offset(i, 0) <> ""
Dim realName As String
realName = ActiveCell.Offset(i, 0)
Dim home As String
home = ActiveCell.Offset(i, 1)
Dim work As String
work = ActiveCell.Offset(i, 2)
Dim mobile As String
mobile = ActiveCell.Offset(i, 3)
Dim fax_work As String
fax_work = ActiveCell.Offset(i, 4)
'Schreibt den Telefonbucheintrag
a.writeline ("<contact><category>0</category>")
a.writeline ("<person><realName>" + realName + "</realName></person><telephony>")
a.writeline ("<number type=" & """home""" & " prio=" & """1""" & " id=" & """0""" & ">" + home + "</number>")
a.writeline ("<number type=" & """work""" & " prio=" & """1""" & " id=" & """1""" & ">" + work + "</number>")
a.writeline ("<number type=" & """mobile""" & " prio=" & """1""" & " id=" & """2""" & ">" + mobile + "</number>")
a.writeline ("<number type=" & """fax_work""" & " prio=" & """1""" & " id=" & """3""" & ">" + fax_work + "</number>")
a.writeline ("</telephony></contact>")
i = i + 1
Wend
'Ende der Schleife
'Ende der Telefonbuchdatei
a.writeline ("</phonebook>")
a.writeline ("</phonebooks>")
MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Wenn man die erstellte XML-Datei in der Fritzbox zur Wiederherstellung des Telefonbuches benutzt, ergänzt die FB-Software selbst fehlende Bezeichner und Tags.
Achtung! Das vorhandene Telefonbuch wird immer überschrieben.
Nächster Schritt im Code wird das Ausfiltern leerer Zellen und Überlegungen zu weiteren sinnvollen Tags.
Und auch ein Import einer FB-Sicherungsdatei des Telefonbuches ist mittelfristig geplant.
Viel Vergnügen beim Anwenden und Experimentieren.
Für Hinweise bin ich sehr dankbar.
Viele Grüße
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 502074
Url: https://administrator.de/knowledge/fritzbox-telefonbuch-xml-importdatei-aus-excel-erstellen-502074.html
Ausgedruckt am: 21.12.2024 um 12:12 Uhr
57 Kommentare
Neuester Kommentar
Hallo Peter,
vorab danke für Deinen geposteten Code.
Ich habe soeben Deinen VBA code ausprobiert. Exceltabelle mit 5 Spalten, Überschriften Zeile 1, A-E wie Du es beschrieben hast definiert.
Code laufen lassen mit Ergebnis xml-Datei erzeugt.
Die erstellte xml-Datei habe ich versucht in meiner Fitzbox (7490, FRITZ!OS: 07.12) -> Telefonbuch -> Wiederherstellen -> hoch zu laden. Es erfolgt die Fehlermeldung: "Beim Wiederherstellen des Telefonbuchs ist ein Fehler aufgetreten."
Das Telefonbuch wurde nicht implementiert.
Hast Du vielleicht eine Ahnung warum nicht?
Viele Grüße
vorab danke für Deinen geposteten Code.
Ich habe soeben Deinen VBA code ausprobiert. Exceltabelle mit 5 Spalten, Überschriften Zeile 1, A-E wie Du es beschrieben hast definiert.
Code laufen lassen mit Ergebnis xml-Datei erzeugt.
Die erstellte xml-Datei habe ich versucht in meiner Fitzbox (7490, FRITZ!OS: 07.12) -> Telefonbuch -> Wiederherstellen -> hoch zu laden. Es erfolgt die Fehlermeldung: "Beim Wiederherstellen des Telefonbuchs ist ein Fehler aufgetreten."
Das Telefonbuch wurde nicht implementiert.
Hast Du vielleicht eine Ahnung warum nicht?
Viele Grüße
Hallo Peter,
Deine beiden beschriebenen Änderungen hatte ich leider vergessen.
Ich habe nun auch die Zeilen 29 + 64 geändert. Zuerst hat es nicht funktioniert.
Nach langen herumprobieren mit:
- Leerzeichen in der Nummer
- Anzahl der Nummern pro Zeile
- Länderkennung (z.B. +49)
- Namen: Nachname, Vorname oder nur ein Name
- Viele Einträge oder wenige bis nur einen Eintrag
konnte ich den Fehler finden.
Wenn man Umlaute bei den Namen verwendet, funktioniert es nicht.
Wenn man das über einem Browser direkt manuell eingibt funktioniert es aber.
Genau so an meinem Handaparat. Nur nicht über die Eingabe in der Tabelle mit anschließendem Lauf des Makros.
Beim Namen "Rüdiger" steht in der xml-Datei dann:
Ich habe deshalb hierzu dann das Attribut in der Zeile 27 von:
27 :a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """utf-8""" & "?>")
in
27: a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """ISO-8859-1""" & "?>")
geändert. Das Makro mit anschließender Wiederherstellung in der FitzBox Oberfläche funktioniert dann auch mit Umlauten.
Spricht aus Deiner Sicht hier etwas gegen diese Änderung bzw. kann das noch zu anderen Fehlern führen?
Viele Grüße
Deine beiden beschriebenen Änderungen hatte ich leider vergessen.
Ich habe nun auch die Zeilen 29 + 64 geändert. Zuerst hat es nicht funktioniert.
Nach langen herumprobieren mit:
- Leerzeichen in der Nummer
- Anzahl der Nummern pro Zeile
- Länderkennung (z.B. +49)
- Namen: Nachname, Vorname oder nur ein Name
- Viele Einträge oder wenige bis nur einen Eintrag
konnte ich den Fehler finden.
Wenn man Umlaute bei den Namen verwendet, funktioniert es nicht.
Wenn man das über einem Browser direkt manuell eingibt funktioniert es aber.
Genau so an meinem Handaparat. Nur nicht über die Eingabe in der Tabelle mit anschließendem Lauf des Makros.
Beim Namen "Rüdiger" steht in der xml-Datei dann:
Ich habe deshalb hierzu dann das Attribut in der Zeile 27 von:
27 :a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """utf-8""" & "?>")
in
27: a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """ISO-8859-1""" & "?>")
geändert. Das Makro mit anschließender Wiederherstellung in der FitzBox Oberfläche funktioniert dann auch mit Umlauten.
Spricht aus Deiner Sicht hier etwas gegen diese Änderung bzw. kann das noch zu anderen Fehlern führen?
Viele Grüße
Hallo Peter,
da die Fritzbox die ISO-8859-1 konvertierte xml-Datei lesen kann sehe ich jetzt erst mal keinen weiteren Handlungsbedarf.
Ich habe aber Deinen Code für die UTF-8 ein bisschen für die Umlaute angepasst.
Aus Zeile 39:
habe ich eine Funktion von der Seite dbwiki.net/wiki/VBA_Tipp:_Umlaute_ersetzen ein bisschen angepasst und eingefügt zu:
Umlaut verweist auf die hinzugefügte Funktion am Ende:
In Summe sieht das dann so aus:
da die Fritzbox die ISO-8859-1 konvertierte xml-Datei lesen kann sehe ich jetzt erst mal keinen weiteren Handlungsbedarf.
Ich habe aber Deinen Code für die UTF-8 ein bisschen für die Umlaute angepasst.
Aus Zeile 39:
realName = ActiveCell.Offset(i, 0)
realName = Umlaut(ActiveCell.Offset(i, 0))
In Summe sieht das dann so aus:
Sub XML_Export()
Dim strDateiname As String
Dim strDateinameZusatz As String
Dim strMappenpfad As String
Dim intCutExt
'Datename ohne Ext. (nach Punkt suchen):
intCutExt = Len(ActiveWorkbook.Name) - InStrRev(ActiveWorkbook.Name, ".") + 1
strMappenpfad = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - intCutExt)
'strDateinameZusatz = "-" & Year(ActiveSheet.Cells(3, 1).Value) & "-" & Month(ActiveSheet.Cells(3, 1).Value) & ".xml"
strDateinameZusatz = "-" & Format(Now, "YYYY-MM-DD-HH-MM-SS") & ".xml"
strDateiname = InputBox("Bitte den Namen der XML-Datei angeben.", "XML-Export", strMappenpfad & strDateinameZusatz)
If strDateiname = "" Then Exit Sub
Range("A2").Select
'Erstellt die Telefonbuchdatei (hier: xxx.xml)
'Dateiname kann frei gewählt werden
'Der entsprechende Ordner MUSS vorhanden sein, da sonst ein Fehler auftritt
Set fs = CreateObject("scripting.filesystemobject")
Set a = fs.createtextfile(strDateiname, True)
'Schreibt den allgemeinen Teil der Telefonbuchdatei
a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """UTF-8""" & "?>")
' a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """UTF-16""" & "?>")
' a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """ISO-8859-1""" & "?>")
a.writeline ("<phonebooks>")
a.writeline ("<phonebook>")
'a.writeline ("<phonebook name=" & """Telefonbuch 1""" & " owner=" & """1""" & ">")
'Schleife zur Ermittlung aller Einträge
'Benutzt alle Datensätze, die einen Namen enthalten
i = 0
While ActiveCell.Offset(i, 0) <> ""
Dim realName As String
realName = Umlaut(ActiveCell.Offset(i, 0))
Dim home As String
home = ActiveCell.Offset(i, 1)
Dim work As String
work = ActiveCell.Offset(i, 2)
Dim mobile As String
mobile = ActiveCell.Offset(i, 3)
Dim fax_work As String
fax_work = ActiveCell.Offset(i, 4)
'Schreibt den Telefonbucheintrag
a.writeline ("<contact><category>0</category>")
a.writeline ("<person><realName>" + realName + "</realName></person><telephony>")
If home <> "" Then
a.writeline ("<number type=" & """home""" & " prio=" & """1""" & " id=" & """0""" & ">" + home + "</number>")
End If
If work <> "" Then
a.writeline ("<number type=" & """work""" & " prio=" & """1""" & " id=" & """1""" & ">" + work + "</number>")
End If
If mobile <> "" Then
a.writeline ("<number type=" & """mobile""" & " prio=" & """1""" & " id=" & """2""" & ">" + mobile + "</number>")
End If
If fax_work <> "" Then
a.writeline ("<number type=" & """fax_work""" & " prio=" & """1""" & " id=" & """3""" & ">" + fax_work + "</number>")
End If
a.writeline ("</telephony></contact>")
i = i + 1
Wend
'Ende der Schleife
'Ende der Telefonbuchdatei
a.writeline ("</phonebook>")
a.writeline ("</phonebooks>")
MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Public Function Umlaut(Anything As Variant) As Variant
' https://dbwiki.net/wiki/VBA_Tipp:_Umlaute_ersetzen
Dim i As Long
Dim Ch As String * 1
Dim Ch1 As String * 1
Dim Res As String
Dim IsUpCase As Boolean
If IsNull(Anything) Then Umlaut = Null: Exit Function
For i = 1 To Len(Anything)
Ch = Mid$(Anything, i, 1)
Ch1 = IIf(i < Len(Anything), Mid$(Anything, i + 1, 1), " ")
' Nächstes Zeichen ist kein Kleinbuchstabe:
IsUpCase = CBool((Asc(Ch1) = Asc(UCase(Ch1))))
Select Case Asc(Ch)
Case Asc("Ä"): Res = Res & "Ä"
Case Asc("Ü"): Res = Res & "Ãœ"
Case Asc("Ö"): Res = Res & "Ö"
Case Asc("ü"): Res = Res & "ü"
Case Asc("ö"): Res = Res & "ö"
Case Asc("ä"): Res = Res & "ä"
Case Asc("ß"): Res = Res & "ß"
Case Else: Res = Res & Ch
End Select
Next
Umlaut = Res
End Function
Wenn ihr UTF-8 in den Header der XML Datei schreibt dann sollte diese auch UTF-8 kodiert weggeschrieben werden ! Das FSO Textobject kann das nicht, es kann außer ASCII und Ansi nur Unicode, aber mit Adodb.Stream ist UTF-8 kein Problem:
https://developer.rhino3d.com/guides/rhinoscript/read-write-utf8/
https://developer.rhino3d.com/guides/rhinoscript/read-write-utf8/
Zitat von @PeterleB:
objStream.WriteText schreibt jedoch nicht zeilenweise, sondern immer einen "Datenblock".
RichtigobjStream.WriteText schreibt jedoch nicht zeilenweise, sondern immer einen "Datenblock".
Über eine Hilfsvariable müßten also erst die Zeileninhalte gesammelt, mit Zeilenendezeichen versehen und dann in einem Rutsch in den Stream geschrieben werden.
Exakt, ist ja kein Thema ...strText = strText & "BlaBlub" & vbNewline
strText = strText & "BlaBlub2" & vbNewline
' usw.
Ist sicher machbar, aber braucht etwas Arbeit.
That's Life , dafür ist's hinterher aber auch in der richtigen Kodierung, wer weiß was die Leute so sonst noch an Zeichen in Ihre Kontakte packen...
So viel du RAM hast
Aber ich würde an deiner Stelle das XML direkt mit einem XML-Object erstellen
Und das macht dann auch gleich die Kodierung richtig!
und ein Streamobjekt werden?
Das Streamobject ist nicht groß, das schreibt die Dinge direkt so weg in die Datei wie sie ankommen.Stell Dir mal ein Fritz-Telefonbuch mit 500 Einträgen vor.
Das ist ehrlich gesagt "mini" und überhaupt kein Problem. Performance- und Speichertechnisch wäre natürlich ein "StringBuilder" effektiver aber das gibt's in VBS nicht nur in .NET.Aber ich würde an deiner Stelle das XML direkt mit einem XML-Object erstellen
set xmldoc = CreateObject("MSXML2.DomDocument")
Ja hervorragend.
Hier mal ein einfaches Beispiel:
Ergibt als Beispiel
Vollkommen objektorientiert ohne das String-Gematsche und vor allem das wichtigste: Du erhältst zuverlässig gültigen XML Code ohne eventuelle Flüchtigkeitsfehler(Groß-Kleinschreibung etc.) weil es ein echter XML Parser erstellt .
' XML Document Object erstellen
Set xmldoc = CreateObject("msxml2.domdocument.6.0")
' Processing Instruction erstellen
xmldoc.appendChild xmldoc.createProcessingInstruction("xml","version=""1.0"" encoding=""utf-8""")
' Root-Knoten erstellen
Set root = xmldoc.createElement("root")
' Childknoten erstellen
Set child = xmldoc.createElement("child")
' Childknoten mit einem Attribut versehen
child.setAttribute "name","Test"
' Child Textknoten mit Inhalt füllen
child.text = "BlaBLub"
' Child-Knoten in den Root-Knoten einhängen
root.appendChild child
' Root-Knoten in XML Document einhängen
xmldoc.appendChild root
' Das ganze als XML wegspeichern
xmldoc.save "D:\test.xml"
Ergibt als Beispiel
<?xml version="1.0" encoding="utf-8"?>
<root>
<child name="Test">BlaBLub</child>
</root>
Hallo Experten,
auch ich möchte gern meine Telefonkontakte in Gestalt einer Excel-Tabelle so umwandeln, dass ich sie in meine FB 7590 importieren kann. Zu diesem Zweck hab ich mein Bestes getan, Eure Erörterungen nachzuvollziehen.
Dann habe ich den Code ganz oben im 1. Beitrag (67 Zeilen), dann den erweiterten von silvereye vom 31.10.2019 um 21:52 Uhr (105 Zeilen) als Excel-Macros laufen lassen. Leider führten beide beim FritzBox-Import zu der bekannten Fehlermeldung.
Nun bin ich als Laie aufgeschmissen, denn ich frage mich:
• Gibt es denn inzwischen einen "fertigen" Macro-Code, in dem alle Vorschläge, Anregungen etc. umgesetzt sind und der eine XML produziert, die die FB klaglos akzeptiert?
• Wenn nein, was muss ich tun?
Danke für jeden Hinweis!
Gruß Alex
auch ich möchte gern meine Telefonkontakte in Gestalt einer Excel-Tabelle so umwandeln, dass ich sie in meine FB 7590 importieren kann. Zu diesem Zweck hab ich mein Bestes getan, Eure Erörterungen nachzuvollziehen.
Dann habe ich den Code ganz oben im 1. Beitrag (67 Zeilen), dann den erweiterten von silvereye vom 31.10.2019 um 21:52 Uhr (105 Zeilen) als Excel-Macros laufen lassen. Leider führten beide beim FritzBox-Import zu der bekannten Fehlermeldung.
Nun bin ich als Laie aufgeschmissen, denn ich frage mich:
• Gibt es denn inzwischen einen "fertigen" Macro-Code, in dem alle Vorschläge, Anregungen etc. umgesetzt sind und der eine XML produziert, die die FB klaglos akzeptiert?
• Wenn nein, was muss ich tun?
Danke für jeden Hinweis!
Gruß Alex
Hallo Hemmingway und PeterleB,
habt Ihr mal folgendes versucht:
1. Eigenes Telefonbuch der FritzBox sichern
2. Tabelle (xlsm) erstellen mit den Überschriften (A1 bis E1):
A1: Name (realName)
B1: Telefon privat (home)
C1: Telefon geschäftlich (work)
D1: Telefon mobil (mobile)
E1: Fax (fax_work)
3. Dann bitte mal ein paar Beispielkontakte in die Tabelle schreiben
4. Ein Modul mit dem Code (siehe oben vom 31.10.2019 um 21:52 Uhr, den Block mit den Zeilen 1-67) einfügen und speichern
5. Makro "Sub XML_Export" ausführen
6. Die erstellte Datei auf die FritzBox hochladen und überprüfen ob alles übertragen worden ist.
Gruß silvereye
habt Ihr mal folgendes versucht:
1. Eigenes Telefonbuch der FritzBox sichern
2. Tabelle (xlsm) erstellen mit den Überschriften (A1 bis E1):
A1: Name (realName)
B1: Telefon privat (home)
C1: Telefon geschäftlich (work)
D1: Telefon mobil (mobile)
E1: Fax (fax_work)
3. Dann bitte mal ein paar Beispielkontakte in die Tabelle schreiben
4. Ein Modul mit dem Code (siehe oben vom 31.10.2019 um 21:52 Uhr, den Block mit den Zeilen 1-67) einfügen und speichern
5. Makro "Sub XML_Export" ausführen
6. Die erstellte Datei auf die FritzBox hochladen und überprüfen ob alles übertragen worden ist.
Gruß silvereye
Da das Thema ja immer noch aktuell ist - habe eine Fritzbox 7590 SX - habe ich ein Skript für Linux-User gemacht (vielleicht hilft's dem einen oder anderen):
Arbeite mit Ubuntu 20.04 als Hinweis.
Calc Datei anlegen mit 4 Spalten, Spalte A: Name, Spalte B: Telefonnummer, Spalte C: Zeit, Spalte D: ID anlegen, entsprechend ausfüllen, dann die ods datei mit "speichern unter" als csv (rechtes Pull-Down Menü)- Filter-Einstellungen bearbeiten anklicken (links), dann Dateinamen eingeben und speichern anklicken, dann CSV-Format verwenden anklicken, als Filteroptionen auswählen UTF8, als Feldtrenner Strichpunkt wählen, Zeichenketten-Trenner ", Zellinhalt wie angezeigt, mit OK bestätigen. Beim Öffnen dieser Datei dann die Überschriftenzeile löschen
#!/bin/bash
set -xv
echo -e '<?xml version="1.0" encoding="utf-8"?>\n<phonebooks>\n<phonebook owner="1" name="20210128Conny">' >> Test1
while read -r datei1
do
NAME=$(echo "$datei1" | cut -d";" -f1)
PHONE=$(echo "$datei1" | cut -d";" -f2)
TIME=$(echo "$datei1" | cut -d";" -f3)
ID=$(echo "$datei1" | cut -d";" -f4)
echo -e '<contact>\n<category>1</category>\n<person>\n<realName>'"$NAME"'</realName>\n</person>\n<telephony nid="1">\n<number type="work" prio="1" id="0">'"$PHONE"'</number>\n</telephony>\n<services/>\n<setup/>\n<features doorphone="0"/>\n<mod_time>'"$TIME"'</mod_time>\n<uniqueid>'"$ID"'</uniqueid>\n</contact>' >> Test1
done < WieAuchImmerDuDeineDateiGenanntHast.csv
echo -e '</phonebook>\n</phonebooks>' >> Test1
Kurze Erläuterung:
Datei Test1 umbenennen in Test1.xml (oder wie gewünscht), dann testweise im Browser öffnen lassen. Kann sein, dass bestimmte Zeilen als Fehler gemeldet werden, passiert bei bestimmten Zeichen im Namen, z.B. bei diesem "&", das entsprechend ändern. Dann sollte der Import klappen.
Arbeite mit Ubuntu 20.04 als Hinweis.
Calc Datei anlegen mit 4 Spalten, Spalte A: Name, Spalte B: Telefonnummer, Spalte C: Zeit, Spalte D: ID anlegen, entsprechend ausfüllen, dann die ods datei mit "speichern unter" als csv (rechtes Pull-Down Menü)- Filter-Einstellungen bearbeiten anklicken (links), dann Dateinamen eingeben und speichern anklicken, dann CSV-Format verwenden anklicken, als Filteroptionen auswählen UTF8, als Feldtrenner Strichpunkt wählen, Zeichenketten-Trenner ", Zellinhalt wie angezeigt, mit OK bestätigen. Beim Öffnen dieser Datei dann die Überschriftenzeile löschen
#!/bin/bash
echo -e '<?xml version="1.0" encoding="utf-8"?>\n<phonebooks>\n<phonebook owner="1" name="20210128Conny">' >> Test1
while read -r datei1
do
NAME=$(echo "$datei1" | cut -d";" -f1)
PHONE=$(echo "$datei1" | cut -d";" -f2)
TIME=$(echo "$datei1" | cut -d";" -f3)
ID=$(echo "$datei1" | cut -d";" -f4)
echo -e '<contact>\n<category>1</category>\n<person>\n<realName>'"$NAME"'</realName>\n</person>\n<telephony nid="1">\n<number type="work" prio="1" id="0">'"$PHONE"'</number>\n</telephony>\n<services/>\n<setup/>\n<features doorphone="0"/>\n<mod_time>'"$TIME"'</mod_time>\n<uniqueid>'"$ID"'</uniqueid>\n</contact>' >> Test1
done < WieAuchImmerDuDeineDateiGenanntHast.csv
echo -e '</phonebook>\n</phonebooks>' >> Test1
Kurze Erläuterung:
Datei Test1 umbenennen in Test1.xml (oder wie gewünscht), dann testweise im Browser öffnen lassen. Kann sein, dass bestimmte Zeilen als Fehler gemeldet werden, passiert bei bestimmten Zeichen im Namen, z.B. bei diesem "&", das entsprechend ändern. Dann sollte der Import klappen.
Wow, das sieht gut aus (und nach einer Menge Nachdenken und Arbeit). Vielen Dank!
Ich hatte ehrlich gesagt gar nicht mehr mit einer Antwort gerechnet, einfach alles liegengelassen und mich mit anderen Projekten befasst, in denen ich jetzt versunken bin.
Ich werde das Skript baldmöglichst ausprobieren, bitte aber um Geduld.
Gruß,
Alex
Ich hatte ehrlich gesagt gar nicht mehr mit einer Antwort gerechnet, einfach alles liegengelassen und mich mit anderen Projekten befasst, in denen ich jetzt versunken bin.
Ich werde das Skript baldmöglichst ausprobieren, bitte aber um Geduld.
Gruß,
Alex
Aber gerne doch!
Gibt bestimmt noch mehr Linux-User, die wie ich verblüfft feststellen, dass die Fritzbox keine .csv importieren kann und dass man dann leider an den angeschlossenen DECT-Hörern aufgeschmissen ist.
Und die verzweifelte Suche im "Gockel" gibt auch nicht viel her - außer hier! Aber halt Windows ...
Gibt bestimmt noch mehr Linux-User, die wie ich verblüfft feststellen, dass die Fritzbox keine .csv importieren kann und dass man dann leider an den angeschlossenen DECT-Hörern aufgeschmissen ist.
Und die verzweifelte Suche im "Gockel" gibt auch nicht viel her - außer hier! Aber halt Windows ...
Hallo allerseits,
ich habe seit kurzem eine FB 7530, in die ich auch meine Kontaktdaten importieren möchte. Folgender Weg funktioniert bei mir auf meinem Windows-Rechner:
Probleme gab es, wenn mehr als zwei Nummern einem Namen zugeordnet sind. Mit meinem Skript klappen zwei Nummern. Drei oder mehr habe ich nicht weiter probiert, weil ich das nicht brauche.
Die Einzelheiten.
Die Exceldatei hat in der ersten Zeile folgende Felder:
a1: Name
b1: unique_id
c1: tel1_nr
d1: tel1_art
e1: tel2_nr
f1: tel2_art
g1: zeit
AWK:
Befehl im DOS-Fenster: gawk -f fb.awk fb.csv > fb.xml
ich nutze die gawk-Version 3.1.6
Die AWK-Datei heißt fb.awk und sieht so aus:
Viele Grüße,
Andreas
ich habe seit kurzem eine FB 7530, in die ich auch meine Kontaktdaten importieren möchte. Folgender Weg funktioniert bei mir auf meinem Windows-Rechner:
- Exceldatei als Datenbank nutzen und Export in CSV-Datei
- AWK-Skript darüberlaufen lassen und XML-Datei erzeugen
- diese resultierende XML-Datei editieren mit notepad++, um sicherzustellen, dass
- Umlaute in utf-8 sind,
- neue Zeilen als Unix (LF) geschrieben werden.
Probleme gab es, wenn mehr als zwei Nummern einem Namen zugeordnet sind. Mit meinem Skript klappen zwei Nummern. Drei oder mehr habe ich nicht weiter probiert, weil ich das nicht brauche.
Die Einzelheiten.
Die Exceldatei hat in der ersten Zeile folgende Felder:
a1: Name
b1: unique_id
c1: tel1_nr
d1: tel1_art
e1: tel2_nr
f1: tel2_art
g1: zeit
- die unique_id ist beliebig aufsteigend
- die Art der Nummer kann sein: home, mobile, work, oder fax_work
- die Zeit ist eine 11-stellige Zahl, die ich erzeuge, indem ich die unique_id zu 1614597940 addiere
AWK:
Befehl im DOS-Fenster: gawk -f fb.awk fb.csv > fb.xml
ich nutze die gawk-Version 3.1.6
Die AWK-Datei heißt fb.awk und sieht so aus:
BEGIN{
FS=";" #Trennzeichen
print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
print "<phonebooks>"
printf "%s", "<phonebook>"
}
NR>1{
name = $1
sub("&", "&", name)
unique_id = $2
tel1_nr = $3
tel1_art = $4
tel2_nr = $5
tel2_art = $6
zeit = $7
nid = 1
if ( tel2_nr != "" ) nid = 2
#zur Probe, damit alle Felder richtig erkannt werden
printf "NR=%s, name=%s, tel1_nr=%s, tel1_art=%s, tel2_nr=%s, tel2_art=%s\n", NR, name, tel1_nr, tel1_art, tel2_nr, tel2_art > "/dev/stderr"
printf "%s", "<contact>"
printf "%s", "<category>0</category>"
printf "%s", "<person>"
printf "%s%s%s", "<realName>", name, "</realName>"
printf "%s", "</person>"
printf "%s\n", "<telephony"
printf "%s%s%s", "nid=\"", nid, "\">"
printf "%s%s%s%s%s", "<number type=\"", tel1_art, "\" prio=\"1\" id=\"0\">", tel1_nr, "</number>"
if ( nid == 2 ) printf "%s\n%s%s%s%s%s", "<number ", "type=\"", tel2_art, "\" prio=\"1\" id=\"1\">", tel2_nr, "</number>"
print "</telephony><services /><setup /><features"
printf "%s", "doorphone=\"0\" />"
printf "%s%s%s", "<mod_time>", zeit, "</mod_time>"
printf "%s%s%s", "<uniqueid>", unique_id, "</uniqueid>"
printf "%s", "</contact>"
}
END{
print "</phonebook>"
print "</phonebooks>"
}
Viele Grüße,
Andreas
Die Awk-Datei muss entweder im selben Pfad liegen wie Deine Dateien oder im Systempfad. Am einfachsten ist es sicherlich, die Awk-Datei zunächst im selben Pfad abzuspeichern, damit Windows sie auch findet. Wenn alles funktioniert, kannst Du sie in den Systempfad kopieren (path=).
Hier kannst Du Gawk runterladen:
https://www.softpedia.com/get/CD-DVD-Tools/CD-DVD-Images-Utils/Gawk-for- ...
Hier kannst Du Gawk runterladen:
https://www.softpedia.com/get/CD-DVD-Tools/CD-DVD-Images-Utils/Gawk-for- ...
Hab den Fehler noch nicht gefunden, es bleibt bei
"Der Befehl gawk ist falsch geschrieben oder konnte nicht gefunden werden".
Sicherheitshalber hab ich AWK nochmal deinstalliert, Neustart und wieder neu installiert. Dabei deinen Link und Download verwendet. Win7 installiert dann von Haus aus unter c:\program files (x86)\gnuwin32\ und dabei hab ich es auch belassen.
Die .csv und fb.awk genau in den selben Pfad und Ordner kopiert.
Die Dos CMD im normalen Modus sowie im Admin-Modus gestartet und den Befehl "gawk -f fb.awk fb.csv > fb.xml"
(Name .csv angepasst) im selben Pfad gestartet.
Die Fehlermeldung bleibt leider.
Oder nimmst eine andere Shell als die Dos CMD?
"Der Befehl gawk ist falsch geschrieben oder konnte nicht gefunden werden".
Sicherheitshalber hab ich AWK nochmal deinstalliert, Neustart und wieder neu installiert. Dabei deinen Link und Download verwendet. Win7 installiert dann von Haus aus unter c:\program files (x86)\gnuwin32\ und dabei hab ich es auch belassen.
Die .csv und fb.awk genau in den selben Pfad und Ordner kopiert.
Die Dos CMD im normalen Modus sowie im Admin-Modus gestartet und den Befehl "gawk -f fb.awk fb.csv > fb.xml"
(Name .csv angepasst) im selben Pfad gestartet.
Die Fehlermeldung bleibt leider.
Oder nimmst eine andere Shell als die Dos CMD?
Bleibt in Powershell (x86) mit einer ähnlichen Fehlermeldung:
"Die Benennung "gawk" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie..."
Spaßeshalber habe ich in allen Varianten mal mit "awk" (statt "gawk") im Befehlscode gearbeitet, die Fehlermeldung verändert sich nur auf "awk", bzw. "gawk"
Was mache ich hier falsch?
"Die Benennung "gawk" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie..."
Spaßeshalber habe ich in allen Varianten mal mit "awk" (statt "gawk") im Befehlscode gearbeitet, die Fehlermeldung verändert sich nur auf "awk", bzw. "gawk"
Was mache ich hier falsch?
das ist komisch. Hier ist das, was ich in Win 10 eingebe:
1: mit rechter Maus auf Start-Button und "Ausführen" anklicken.
2: "cmd" eingeben und ENTER drücken. Die schwarze DOS-shell sollte erscheinen.
3: in den Pfad Deiner Wahl gehen. dort sollten alle Dateien liegen.
4: zur Probe eingeben: "gawk" und ENTER drücken, s. Bild
5. jetzt sollte USAGE erscheinen, d.h. welche Parameter gawk braucht. Wenn das funktioniert, sollte der Rest auch klappen.
1: mit rechter Maus auf Start-Button und "Ausführen" anklicken.
2: "cmd" eingeben und ENTER drücken. Die schwarze DOS-shell sollte erscheinen.
3: in den Pfad Deiner Wahl gehen. dort sollten alle Dateien liegen.
4: zur Probe eingeben: "gawk" und ENTER drücken, s. Bild
5. jetzt sollte USAGE erscheinen, d.h. welche Parameter gawk braucht. Wenn das funktioniert, sollte der Rest auch klappen.
Fehler gefunden: ich hatte mich schon gewundert, dass nach der Installation keine .exe Datei angezeigt wurde. Tatsächlich liegt die "gawk.exe" im Unterordner "bin"; kann auch nur von dort mit "gawk -f..." die Bearbeitung starten.
Eine Hürde geschafft - vielen Dank für Deine Hilfe & Geduld !!!
Im Notepad++
Umlaute unter Kodierung "Konvertiere zu utf-8" ? und
Bearbeiten - Format Zeilenende neue Zeilen als Unix (LF) ?
- reicht hier das Abspeichern mit diesen Werten oder muss irgendwie eine Bearbeitung gestartet werden?
Eine Hürde geschafft - vielen Dank für Deine Hilfe & Geduld !!!
Im Notepad++
Umlaute unter Kodierung "Konvertiere zu utf-8" ? und
Bearbeiten - Format Zeilenende neue Zeilen als Unix (LF) ?
- reicht hier das Abspeichern mit diesen Werten oder muss irgendwie eine Bearbeitung gestartet werden?
Ja, richtig. Zeigt oben im Pfad ein * an, sobald sich was verändert hat. Dann einfach speichern.
Allerdings nimmt die FritzBox die Datei nicht an "...es ist ein Fehler aufgetreten..."
Auf jeden Fall ist der Weg jetzt klar, ich werde mich morgen Mittag nochmal in aller Ruhe ransetzen und "sauber" von Vorne anfangen.
In jedem Fall DANKE für deine Hilfe & Geduld !
Allerdings nimmt die FritzBox die Datei nicht an "...es ist ein Fehler aufgetreten..."
Auf jeden Fall ist der Weg jetzt klar, ich werde mich morgen Mittag nochmal in aller Ruhe ransetzen und "sauber" von Vorne anfangen.
In jedem Fall DANKE für deine Hilfe & Geduld !
Zitat von @ConnyTheNerd:
Gibt bestimmt noch mehr Linux-User, die wie ich verblüfft feststellen, dass die Fritzbox keine .csv importieren kann und dass man dann leider an den angeschlossenen DECT-Hörern aufgeschmissen ist.
Und die verzweifelte Suche im "Gockel" gibt auch nicht viel her - außer hier! Aber halt Windows ...
Gibt bestimmt noch mehr Linux-User, die wie ich verblüfft feststellen, dass die Fritzbox keine .csv importieren kann und dass man dann leider an den angeschlossenen DECT-Hörern aufgeschmissen ist.
Und die verzweifelte Suche im "Gockel" gibt auch nicht viel her - außer hier! Aber halt Windows ...
Danke für das schöne Skript! Das ist genau das, was ich suchte.
Meine Anforderung war, einen Adressbuchexport mit >1300 Einträgen aus der Telekom CloudPBX in die FritzBox zu integrieren. Das kann leider nur manuell geschehen, da die CloudPBX sehr zugeknöpft ist, was Synchronisation angeht.
Ich habe das Skript an die Exportstruktur angepasst und etwas universeller gemacht. Beim Import bin noch über eine weitere Beschränkung gestolpert, die ich in Zeile 9 ebenfalls gefixt habe.
Hier meine überarbeitete Version:
#!/bin/bash
[ $# != 1 ] && echo "Aufruf: $0 <csv file>" && exit
CSVFILE=$1
XMLFILE=`basename $CSVFILE .csv`.xml
TIME=$(date +%s)
echo -e '<?xml version="1.0" encoding="utf-8"?>\n<phonebooks>\n<phonebook owner="1" name="neues Telefonbuch">' > ${XMLFILE}
while read -r datei1 ; do
NAME=$(echo "$datei1" | cut -d";" -f2|tr \& +)
PHONE=$(echo "$datei1" | cut -d";" -f3)
ID=$(echo "$datei1" | cut -d";" -f1)
echo -e '<contact>\n\t<category>0</category>\n\t<person><realName>'"$NAME"'</realName></person>\n\t<telephony nid="1"><number type="work" prio="1" id="0">'"$PHONE"'</number></telephony>\n\t<uniqueid>'"$ID"'</uniqueid>\n</contact>' >> ${XMLFILE}
done < ${CSVFILE}
echo -e '</phonebook>\n</phonebooks>' >> ${XMLFILE}
In Z9 ersetze ich noch auftretende "&" durch "+", denn das "&" mag die FB nicht.
In Z12 habe ich ein paar m.E. unnötige Entities entfernt und vor allem die category auf 0 gesetzt, sonst wären alle Kontakte als wichtig markiert. Kann aber jeder natürlich selbst entscheiden.
Ach ja, der Output ist auch noch ein bissl umformatiert, damit MENSCH das XML etwas besser lesen kann.
Vielleicht hilft es noch jemandem weiter.
Hallo Peterle,
also bei mir funktioniert das mit dem Makro nicht.
Ich bekommr eine leere Telefonliste.
Kannst du vielleicht zeigen wie die Excel Tabelle aussieht?
Ich habe die telefonnummern in eine Spalte eingefügt und ein Makro mit Deinem Code erstellt.
LG, Moreteem
also bei mir funktioniert das mit dem Makro nicht.
Ich bekommr eine leere Telefonliste.
Kannst du vielleicht zeigen wie die Excel Tabelle aussieht?
Ich habe die telefonnummern in eine Spalte eingefügt und ein Makro mit Deinem Code erstellt.
LG, Moreteem
Ich habs so gemacht wie Mitglied: silvereye
silvereye 07.09.2020 um 19:27:41 Uhr.
So gings.
Schade dass man nur 5 Spalten hat und nicht mehr.
Kann man den Code irgendwie erweitern für mehr Spalten?
Gruß, Moreteen
silvereye 07.09.2020 um 19:27:41 Uhr.
So gings.
Schade dass man nur 5 Spalten hat und nicht mehr.
Kann man den Code irgendwie erweitern für mehr Spalten?
Gruß, Moreteen
Hallo Peter, danke für Deine Antwort.
Ich möchte eine Sperrliste für unliebsame Telefonnummern erstellen.
Das soll dann so aussehen: Sperrliste1/20 Nummern, Sperrliste2/20Nummern u.s.w.
Gruß, Martin
Ich möchte eine Sperrliste für unliebsame Telefonnummern erstellen.
Das soll dann so aussehen: Sperrliste1/20 Nummern, Sperrliste2/20Nummern u.s.w.
Gruß, Martin
Hallo Peter,
das hat prima geklappt.
Vielen herzlichen Dank.
Das Einzige was ich mich frage ist wehalb in den ersten 4 Spalten immer noch
privat), (geschäftl.), (mobil), (Fax) steht obwohl ich "Dim Feld1 As String
Feld1 = ActiveCell.Offset(i, 1) bzw. If Feld1 <> "" Then
a.writeline ("<number type=" & """Feld1""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld1 + "</number>")
End If
u.s.w. geschrieben habe.
Hier ist das vollständige Makro:
Sub xml()
Dim strDateiname As String
Dim strDateinameZusatz As String
Dim strMappenpfad As String
Dim intCutExt
'Datename ohne Ext. (nach Punkt suchen):
intCutExt = Len(ActiveWorkbook.Name) - InStrRev(ActiveWorkbook.Name, ".") + 1
strMappenpfad = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - intCutExt)
'strDateinameZusatz = "-" & Year(ActiveSheet.Cells(3, 1).Value) & "-" & Month(ActiveSheet.Cells(3, 1).Value) & ".xml"
strDateinameZusatz = "-" & Format(Now, "YYYY-MM-DD-HH-MM-SS") & ".xml"
strDateiname = InputBox("Bitte den Namen der XML-Datei angeben.", "XML-Export", strMappenpfad & strDateinameZusatz)
If strDateiname = "" Then Exit Sub
Range("A2").Select
'Erstellt die Telefonbuchdatei (hier: xxx.xml)
'Dateiname kann frei gewählt werden
'Der entsprechende Ordner MUSS vorhanden sein, da sonst ein Fehler auftritt
Set fs = CreateObject("scripting.filesystemobject")
Set a = fs.createtextfile(strDateiname, True)
'Schreibt den allgemeinen Teil der Telefonbuchdatei
a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """UTF-8""" & "?>")
' a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """UTF-16""" & "?>")
' a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """ISO-8859-1""" & "?>")
a.writeline ("<phonebooks>")
a.writeline ("<phonebook>")
'a.writeline ("<phonebook name=" & """Telefonbuch 1""" & " owner=" & """1""" & ">")
'Schleife zur Ermittlung aller Einträge
'Benutzt alle Datensätze, die einen Namen enthalten
'Horizontale Spalte
i = 0
While ActiveCell.Offset(i, 0) <> ""
Dim realName As String
realName = Umlaut(ActiveCell.Offset(i, 0))
Dim Feld1 As String
Feld1 = ActiveCell.Offset(i, 1)
Dim Feld2 As String
Feld2 = ActiveCell.Offset(i, 2)
Dim Feld3 As String
Feld3 = ActiveCell.Offset(i, 3)
Dim Feld4 As String
Feld4 = ActiveCell.Offset(i, 4)
Dim Feld5 As String
Feld5 = ActiveCell.Offset(i, 5)
Dim Feld6 As String
Feld6 = ActiveCell.Offset(i, 6)
Dim Feld7 As String
Feld7 = ActiveCell.Offset(i, 7)
Dim Feld8 As String
Feld8 = ActiveCell.Offset(i, 8)
Dim Feld9 As String
Feld9 = ActiveCell.Offset(i, 9)
Dim Feld10 As String
Feld10 = ActiveCell.Offset(i, 10)
Dim Feld11 As String
Feld11 = ActiveCell.Offset(i, 11)
Dim Feld12 As String
Feld12 = ActiveCell.Offset(i, 12)
Dim Feld13 As String
Feld13 = ActiveCell.Offset(i, 13)
Dim Feld14 As String
Feld14 = ActiveCell.Offset(i, 14)
Dim Feld15 As String
Feld15 = ActiveCell.Offset(i, 15)
Dim Feld16 As String
Feld16 = ActiveCell.Offset(i, 16)
Dim Feld17 As String
Feld17 = ActiveCell.Offset(i, 17)
Dim Feld18 As String
Feld18 = ActiveCell.Offset(i, 18)
Dim Feld19 As String
Feld19 = ActiveCell.Offset(i, 19)
Dim Feld20 As String
Feld20 = ActiveCell.Offset(i, 20)
'Vertikale Spalte
'Schreibt den Telefonbucheintrag
a.writeline ("<contact><category>0</category>")
a.writeline ("<person><realName>" + realName + "</realName></person><telephony>")
If Feld1 <> "" Then
a.writeline ("<number type=" & """home""" & " prio=" & """1""" & " id=" & """0""" & ">" + Feld1 + "</number>")
End If
If Feld2 <> "" Then
a.writeline ("<number type=" & """work""" & " prio=" & """1""" & " id=" & """1""" & ">" + Feld2 + "</number>")
End If
If Feld3 <> "" Then
a.writeline ("<number type=" & """mobile""" & " prio=" & """1""" & " id=" & """2""" & ">" + Feld3 + "</number>")
End If
If Feld4 <> "" Then
a.writeline ("<number type=" & """fax_work""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld4 + "</number>")
End If
If Feld5 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld5 + "</number>")
End If
If Feld6 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld6 + "</number>")
End If
If Feld7 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld7 + "</number>")
End If
If Feld8 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld8 + "</number>")
End If
If Feld9 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld9 + "</number>")
End If
If Feld10 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld10 + "</number>")
End If
If Feld11 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld11 + "</number>")
End If
If Feld12 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld12 + "</number>")
End If
If Feld13 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld13 + "</number>")
End If
If Feld14 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld14 + "</number>")
End If
If Feld15 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld15 + "</number>")
End If
If Feld16 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld16 + "</number>")
End If
If Feld17 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld17 + "</number>")
End If
If Feld18 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld18 + "</number>")
End If
If Feld19 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld19 + "</number>")
End If
If Feld20 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld20 + "</number>")
End If
a.writeline ("</telephony></contact>")
i = i + 1
Wend
'Ende der Schleife
'Ende der Telefonbuchdatei
a.writeline ("</phonebook>")
a.writeline ("</phonebooks>")
MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Public Function Umlaut(Anything As Variant) As Variant
' https://dbwiki.net/wiki/VBA_Tipp:_Umlaute_ersetzen
Dim i As Long
Dim Ch As String * 1
Dim Ch1 As String * 1
Dim Res As String
Dim IsUpCase As Boolean
If IsNull(Anything) Then Umlaut = Null: Exit Function
For i = 1 To Len(Anything)
Ch = Mid$(Anything, i, 1)
Ch1 = IIf(i < Len(Anything), Mid$(Anything, i + 1, 1), " ")
' Nächstes Zeichen ist kein Kleinbuchstabe:
IsUpCase = CBool((Asc(Ch1) = Asc(UCase(Ch1))))
Select Case Asc(Ch)
Case Asc("Ä"): Res = Res & "Ä"
Case Asc("Ü"): Res = Res & "Ãœ"
Case Asc("Ö"): Res = Res & "Ö"
Case Asc("ü"): Res = Res & "ü"
Case Asc("ö"): Res = Res & "ö"
Case Asc("ä"): Res = Res & "ä"
Case Asc("ß"): Res = Res & "ß"
Case Else: Res = Res & Ch
End Select
Next
Umlaut = Res
End Function
das hat prima geklappt.
Vielen herzlichen Dank.
Das Einzige was ich mich frage ist wehalb in den ersten 4 Spalten immer noch
privat), (geschäftl.), (mobil), (Fax) steht obwohl ich "Dim Feld1 As String
Feld1 = ActiveCell.Offset(i, 1) bzw. If Feld1 <> "" Then
a.writeline ("<number type=" & """Feld1""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld1 + "</number>")
End If
u.s.w. geschrieben habe.
Hier ist das vollständige Makro:
Sub xml()
Dim strDateiname As String
Dim strDateinameZusatz As String
Dim strMappenpfad As String
Dim intCutExt
'Datename ohne Ext. (nach Punkt suchen):
intCutExt = Len(ActiveWorkbook.Name) - InStrRev(ActiveWorkbook.Name, ".") + 1
strMappenpfad = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - intCutExt)
'strDateinameZusatz = "-" & Year(ActiveSheet.Cells(3, 1).Value) & "-" & Month(ActiveSheet.Cells(3, 1).Value) & ".xml"
strDateinameZusatz = "-" & Format(Now, "YYYY-MM-DD-HH-MM-SS") & ".xml"
strDateiname = InputBox("Bitte den Namen der XML-Datei angeben.", "XML-Export", strMappenpfad & strDateinameZusatz)
If strDateiname = "" Then Exit Sub
Range("A2").Select
'Erstellt die Telefonbuchdatei (hier: xxx.xml)
'Dateiname kann frei gewählt werden
'Der entsprechende Ordner MUSS vorhanden sein, da sonst ein Fehler auftritt
Set fs = CreateObject("scripting.filesystemobject")
Set a = fs.createtextfile(strDateiname, True)
'Schreibt den allgemeinen Teil der Telefonbuchdatei
a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """UTF-8""" & "?>")
' a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """UTF-16""" & "?>")
' a.writeline ("<?xml version=" & """1.0""" & " encoding=" & """ISO-8859-1""" & "?>")
a.writeline ("<phonebooks>")
a.writeline ("<phonebook>")
'a.writeline ("<phonebook name=" & """Telefonbuch 1""" & " owner=" & """1""" & ">")
'Schleife zur Ermittlung aller Einträge
'Benutzt alle Datensätze, die einen Namen enthalten
'Horizontale Spalte
i = 0
While ActiveCell.Offset(i, 0) <> ""
Dim realName As String
realName = Umlaut(ActiveCell.Offset(i, 0))
Dim Feld1 As String
Feld1 = ActiveCell.Offset(i, 1)
Dim Feld2 As String
Feld2 = ActiveCell.Offset(i, 2)
Dim Feld3 As String
Feld3 = ActiveCell.Offset(i, 3)
Dim Feld4 As String
Feld4 = ActiveCell.Offset(i, 4)
Dim Feld5 As String
Feld5 = ActiveCell.Offset(i, 5)
Dim Feld6 As String
Feld6 = ActiveCell.Offset(i, 6)
Dim Feld7 As String
Feld7 = ActiveCell.Offset(i, 7)
Dim Feld8 As String
Feld8 = ActiveCell.Offset(i, 8)
Dim Feld9 As String
Feld9 = ActiveCell.Offset(i, 9)
Dim Feld10 As String
Feld10 = ActiveCell.Offset(i, 10)
Dim Feld11 As String
Feld11 = ActiveCell.Offset(i, 11)
Dim Feld12 As String
Feld12 = ActiveCell.Offset(i, 12)
Dim Feld13 As String
Feld13 = ActiveCell.Offset(i, 13)
Dim Feld14 As String
Feld14 = ActiveCell.Offset(i, 14)
Dim Feld15 As String
Feld15 = ActiveCell.Offset(i, 15)
Dim Feld16 As String
Feld16 = ActiveCell.Offset(i, 16)
Dim Feld17 As String
Feld17 = ActiveCell.Offset(i, 17)
Dim Feld18 As String
Feld18 = ActiveCell.Offset(i, 18)
Dim Feld19 As String
Feld19 = ActiveCell.Offset(i, 19)
Dim Feld20 As String
Feld20 = ActiveCell.Offset(i, 20)
'Vertikale Spalte
'Schreibt den Telefonbucheintrag
a.writeline ("<contact><category>0</category>")
a.writeline ("<person><realName>" + realName + "</realName></person><telephony>")
If Feld1 <> "" Then
a.writeline ("<number type=" & """home""" & " prio=" & """1""" & " id=" & """0""" & ">" + Feld1 + "</number>")
End If
If Feld2 <> "" Then
a.writeline ("<number type=" & """work""" & " prio=" & """1""" & " id=" & """1""" & ">" + Feld2 + "</number>")
End If
If Feld3 <> "" Then
a.writeline ("<number type=" & """mobile""" & " prio=" & """1""" & " id=" & """2""" & ">" + Feld3 + "</number>")
End If
If Feld4 <> "" Then
a.writeline ("<number type=" & """fax_work""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld4 + "</number>")
End If
If Feld5 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld5 + "</number>")
End If
If Feld6 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld6 + "</number>")
End If
If Feld7 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld7 + "</number>")
End If
If Feld8 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld8 + "</number>")
End If
If Feld9 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld9 + "</number>")
End If
If Feld10 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld10 + "</number>")
End If
If Feld11 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld11 + "</number>")
End If
If Feld12 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld12 + "</number>")
End If
If Feld13 <> "" Then
a.writeline ("<number type=" & """Feld5""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld13 + "</number>")
End If
If Feld14 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld14 + "</number>")
End If
If Feld15 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld15 + "</number>")
End If
If Feld16 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld16 + "</number>")
End If
If Feld17 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld17 + "</number>")
End If
If Feld18 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld18 + "</number>")
End If
If Feld19 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld19 + "</number>")
End If
If Feld20 <> "" Then
a.writeline ("<number type=" & """Feld6""" & " prio=" & """1""" & " id=" & """3""" & ">" + Feld20 + "</number>")
End If
a.writeline ("</telephony></contact>")
i = i + 1
Wend
'Ende der Schleife
'Ende der Telefonbuchdatei
a.writeline ("</phonebook>")
a.writeline ("</phonebooks>")
MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
Public Function Umlaut(Anything As Variant) As Variant
' https://dbwiki.net/wiki/VBA_Tipp:_Umlaute_ersetzen
Dim i As Long
Dim Ch As String * 1
Dim Ch1 As String * 1
Dim Res As String
Dim IsUpCase As Boolean
If IsNull(Anything) Then Umlaut = Null: Exit Function
For i = 1 To Len(Anything)
Ch = Mid$(Anything, i, 1)
Ch1 = IIf(i < Len(Anything), Mid$(Anything, i + 1, 1), " ")
' Nächstes Zeichen ist kein Kleinbuchstabe:
IsUpCase = CBool((Asc(Ch1) = Asc(UCase(Ch1))))
Select Case Asc(Ch)
Case Asc("Ä"): Res = Res & "Ä"
Case Asc("Ü"): Res = Res & "Ãœ"
Case Asc("Ö"): Res = Res & "Ö"
Case Asc("ü"): Res = Res & "ü"
Case Asc("ö"): Res = Res & "ö"
Case Asc("ä"): Res = Res & "ä"
Case Asc("ß"): Res = Res & "ß"
Case Else: Res = Res & Ch
End Select
Next
Umlaut = Res
End Function
Hallo Peter,
Du hast recht, "Feld1" u.s.w. schreibt die Fritzbox als "(sonstiges)".
Deine verkürzten Version von 14:10:31 Uhr:
Wenn ich in dieser zeile: "a.writeline ("<number type=" & """Feld(z)""" & " prio=" & """1""" & " id=" & """0""" & ">" + Feld(z) + "</number>")" statt "Feld" "home" eintrage kommt trotzdem "(sonstiges)".
Titel für die Ziffernblöcke die hier kommen sollten: "a.writeline ("<person><realName>" + realName + "</realName></person><telephony>")"
kommen gar nicht.
LG, Martin
Du hast recht, "Feld1" u.s.w. schreibt die Fritzbox als "(sonstiges)".
Deine verkürzten Version von 14:10:31 Uhr:
Wenn ich in dieser zeile: "a.writeline ("<number type=" & """Feld(z)""" & " prio=" & """1""" & " id=" & """0""" & ">" + Feld(z) + "</number>")" statt "Feld" "home" eintrage kommt trotzdem "(sonstiges)".
Titel für die Ziffernblöcke die hier kommen sollten: "a.writeline ("<person><realName>" + realName + "</realName></person><telephony>")"
kommen gar nicht.
LG, Martin
Ok die Titel für die Ziffernblöcke kommen jetzt, Ich hatte eine Zeile vergessen.
Warum aber hinter den Telefonnummern "(sonstiges)" steht trotzdem ich "HOME" eingetragen habe verstehe ich nicht.
"For z = 1 To 20
If HOME(z) <> "" Then
a.writeline ("<number type=" & """HOME""" & " prio=" & """1""" & " id=" & """0""" & ">" + HOME(z) + "</number>")"
Gruß, Martin
Warum aber hinter den Telefonnummern "(sonstiges)" steht trotzdem ich "HOME" eingetragen habe verstehe ich nicht.
"For z = 1 To 20
If HOME(z) <> "" Then
a.writeline ("<number type=" & """HOME""" & " prio=" & """1""" & " id=" & """0""" & ">" + HOME(z) + "</number>")"
Gruß, Martin
Hi,
ja das ist schade. Das ursprüngliche korrigierte Makro funktioniert ja.
Wer akzeptieren kann dass hinter jeder Nummer (sonstiges) steht und nicht (privat), (geschäftlich) u.s.w. kann ja dann die Kurze Version nehmen.
Vielleicht hat ja noch jemand eine Idee wie man bei der kurzen Version den Eintrag hinter den Nummern ändern kann.
LG, Martin.
ja das ist schade. Das ursprüngliche korrigierte Makro funktioniert ja.
Wer akzeptieren kann dass hinter jeder Nummer (sonstiges) steht und nicht (privat), (geschäftlich) u.s.w. kann ja dann die Kurze Version nehmen.
Vielleicht hat ja noch jemand eine Idee wie man bei der kurzen Version den Eintrag hinter den Nummern ändern kann.
LG, Martin.
Ich bedanke mich ganz, ganz herzlich bei PerterlB und silvereye für die tolle Anleitung. Hat bei mir sofort funktioniert. Bevor ich diese Anleitung im Netz gefunden habe, hatte ich mit dem Service von AVM telefoniert.
Der "kompetente" AVM Mitarbeiter wusste zunächst nicht einmal mit meinem Anliegen etwas anzufangen. Nach ca. 1/4 Std teilt er mir dann mit, dass AVM keine Lösung für dieses Anliegen anbietet. Aber er würde einen Verbesserungsvorschlag einreichen. Ich haben dann das Gespräch freundlich beendet. Ich bin von den Produkten von AVM begeistert. Ich habe Fritzboxen 7390, 7490 und 2x 7590, davon natürlich nur eine 7590 im Einsatz. Auch meine SmartHome Geräte und auch die Netzwerkwerweiterungen (Powerline sind von AVM).
Tolle Produkte!!! Aber der Support ist eine Katastophe. Wieso können "NICHT AVM ZUGEHÖRIGE" solch eine tolle Anweisung verfassen, aber AVN kann daraus kein Programm oder eine APP machen. . Nochmals herzlichen Dank an die kompetenen Verfasser der Anweisung.
Der "kompetente" AVM Mitarbeiter wusste zunächst nicht einmal mit meinem Anliegen etwas anzufangen. Nach ca. 1/4 Std teilt er mir dann mit, dass AVM keine Lösung für dieses Anliegen anbietet. Aber er würde einen Verbesserungsvorschlag einreichen. Ich haben dann das Gespräch freundlich beendet. Ich bin von den Produkten von AVM begeistert. Ich habe Fritzboxen 7390, 7490 und 2x 7590, davon natürlich nur eine 7590 im Einsatz. Auch meine SmartHome Geräte und auch die Netzwerkwerweiterungen (Powerline sind von AVM).
Tolle Produkte!!! Aber der Support ist eine Katastophe. Wieso können "NICHT AVM ZUGEHÖRIGE" solch eine tolle Anweisung verfassen, aber AVN kann daraus kein Programm oder eine APP machen. . Nochmals herzlichen Dank an die kompetenen Verfasser der Anweisung.
Hallo PeterLeB, ich habe da noch ein, nur optisches, Problem mi der Benutzeroberfläche der FritzBox.
Wenn man die Benutzeroberfläche (über den Browser) aufruft, dann steht in der obersten Zeile das Modell
der verwendete Fritzbox. Meine Fritzbox hat aber einen Namen. Dieser Name wird angezeigt wenn man auf
die Fläche mit der Modellnummer klick. Kann man nicht einen Quellcode erstellen, der zuerst den Namen der Fritzbox zeigt und, bei Bedarf, durch klick auf die Fläche mit dem Namen der Fritzbox, dann die Modell Nr. anzeigt. Ich hoffe ich habe mich verständlich ausgedrückt.
Wenn man die Benutzeroberfläche (über den Browser) aufruft, dann steht in der obersten Zeile das Modell
der verwendete Fritzbox. Meine Fritzbox hat aber einen Namen. Dieser Name wird angezeigt wenn man auf
die Fläche mit der Modellnummer klick. Kann man nicht einen Quellcode erstellen, der zuerst den Namen der Fritzbox zeigt und, bei Bedarf, durch klick auf die Fläche mit dem Namen der Fritzbox, dann die Modell Nr. anzeigt. Ich hoffe ich habe mich verständlich ausgedrückt.
Hallo an alle die hier Beiträge geschrieben haben
ich habe bei meiner Suche nach einer Lösung für dem Import einer in Excel erstellten Telefonliste in eine FritzBox dieses Forum und die Beiträge unter diesem Thread gefunden und mich gefreut.
Ich bin neu hier im Forum und habe mich zuerst nicht getraut 1 -2 Fragen zu stellen, da ich nur ein Laie (Rentner) bin und kein IT Fachmann und weil es für mich den Anschein hat, dass hier nur Spezialisten / Experten Beiträge schreiben.
Es wäre jedenfalls äußerst freundlich + hilfreich wenn jemand trotzdem meine Fragen beantworten könnte.
Vorab schon mal Danke an der Stelle hier.
Meine Ausgangssituation => -- Win Prof 2010 PC, -- eine Fritzbox 7530, ---- Excel 2016 -- keine VB Erfahrung
Ich habe es - mit dem weiter oben stehenden VB Code - geschafft aus einer Excelliste mit den 2 Spalten Name und Telefonnummer eine XML Datei zu erzeugen und die auch testweise erfolgreich in meine FritzBox 7530 zu importieren, besser gesagt ein zuvor dort erzeugtes 2. Telefonbuch mit der Funktion „Wiederherstellen“ zu überschreiben.
An der Stelle erst mal großes Lob für den Code … Echt super weil er Funktioniert!!
(auch wenn ich nur wenig verstehe)
Ok so weit so gut
Wenn ich eine XML Datei --
__________ die durch Sichern / Export eines Telefonbuchs aus der Fritzbox entstand
__ in Excel öffne,
erhalte ich eine Tabelle mit den folgenden Spaltenüberschriften.
owner
name
category
realName
nid
number
type _____ unterschieden wird die private Tel. Nr.________ (home)
_________________________________ die geschäftliche Nr. _____ (work)
_________________________________ die Mobil Nr. _____________(mobile)
____________________________ oder die Fax Nr. ______________ (fax)
prio
id
services
setup
doorphone
mod_time
uniqueid ____ ist eine Nr. – für mich hat es den Anschein als wäre diese Nummer ein Indikator für
_______________ die dem Namen (der Person) zugeordnet ist, über die dann auch festgelegt
_______________. wird das die 2. Priv Nr., die Geschäfts Nr., die Mobil Nr und die Fax Nr
_______________. zu nur einer bestimmten Person gehören
Die Ausgangs Excel xlsx Datei besteht lediglich aus 5 Spalten (realName, home, work, mobbile, fax)
Frage: Ist es richtig -
- das in der Exel Datei keine weiteren Daten zur verfügung gestellt werden müssen
.. die bei dem späteren Import in die FritzBox benötigt werden?
- das keine weiteren Spalten mit weiteren Adr Daten in der Augangs-Excel Datei vorhanden sein dürfen
.. da deise bei der Umwandlung in die XML Datei stören und beim Import zu fehlern führenwürden?
Es ist (wie meine Versuche gezeigt haben) nicht erforderlich, um einer Person mehrere Telefon Nr. zuzuordnen dass auch der Wert für einer Zelle aus einer "uniqueid" Spalte eingelesen wird.
Das passiert dann später in der Fritzbox beim Umwandeln der xml Datei in das Tel.-Buch irgendwie automatisch.
Ich habe zu dem Vorgehen "Excel tel Datei umwandeln und in Fritzbox importieren" mal eine Anleitung für Laien (so wie mich) in Word mit zig screen-shots erstellt, (für eine Excel Tabelle mit den o. g. 5 Spalten ) -- wie genau man verfahren muss um dann mit dem VB Programm zu der xml Datei zu kommen, die von einer FritzBox (zumindest meiner FB7530) akzeptiert wird. Die könnte ich, wenn gewünscht hier zur Verfügung stellen.
Meine Frage an der Stelle ist noch :
Kann man hier nur Bilddateien zu dem eigenen Beitrag hinzufügen oder auch PDF Dateien?
Für alle hilfreichen und aufklärenden Antworten sage ich schon jetzt vielen vielen Dank
Mit freundlichen Grüßen
R. Louis
Kurz zu mir. Ich bin neu hier, bin schon älter (73) und habe keine Programmiererfahrung.
PS: Frage zu den Beiträgen ab dem Beitrag von Mitglied: musikfreund 01.03.2021 um 21:59:32 Uhr
Was hat es jetzt noch mit dem Abkürzungen und den AWK bzw. gawk.exe Programm auf sich ?
wann und wie soll das noch eingesetzt / angewendet werden?
ich habe bei meiner Suche nach einer Lösung für dem Import einer in Excel erstellten Telefonliste in eine FritzBox dieses Forum und die Beiträge unter diesem Thread gefunden und mich gefreut.
Ich bin neu hier im Forum und habe mich zuerst nicht getraut 1 -2 Fragen zu stellen, da ich nur ein Laie (Rentner) bin und kein IT Fachmann und weil es für mich den Anschein hat, dass hier nur Spezialisten / Experten Beiträge schreiben.
Es wäre jedenfalls äußerst freundlich + hilfreich wenn jemand trotzdem meine Fragen beantworten könnte.
Vorab schon mal Danke an der Stelle hier.
Meine Ausgangssituation => -- Win Prof 2010 PC, -- eine Fritzbox 7530, ---- Excel 2016 -- keine VB Erfahrung
Ich habe es - mit dem weiter oben stehenden VB Code - geschafft aus einer Excelliste mit den 2 Spalten Name und Telefonnummer eine XML Datei zu erzeugen und die auch testweise erfolgreich in meine FritzBox 7530 zu importieren, besser gesagt ein zuvor dort erzeugtes 2. Telefonbuch mit der Funktion „Wiederherstellen“ zu überschreiben.
An der Stelle erst mal großes Lob für den Code … Echt super weil er Funktioniert!!
(auch wenn ich nur wenig verstehe)
Ok so weit so gut
Wenn ich eine XML Datei --
__________ die durch Sichern / Export eines Telefonbuchs aus der Fritzbox entstand
__ in Excel öffne,
erhalte ich eine Tabelle mit den folgenden Spaltenüberschriften.
owner
name
category
realName
nid
number
type _____ unterschieden wird die private Tel. Nr.________ (home)
_________________________________ die geschäftliche Nr. _____ (work)
_________________________________ die Mobil Nr. _____________(mobile)
____________________________ oder die Fax Nr. ______________ (fax)
prio
id
services
setup
doorphone
mod_time
uniqueid ____ ist eine Nr. – für mich hat es den Anschein als wäre diese Nummer ein Indikator für
_______________ die dem Namen (der Person) zugeordnet ist, über die dann auch festgelegt
_______________. wird das die 2. Priv Nr., die Geschäfts Nr., die Mobil Nr und die Fax Nr
_______________. zu nur einer bestimmten Person gehören
Die Ausgangs Excel xlsx Datei besteht lediglich aus 5 Spalten (realName, home, work, mobbile, fax)
Frage: Ist es richtig -
- das in der Exel Datei keine weiteren Daten zur verfügung gestellt werden müssen
.. die bei dem späteren Import in die FritzBox benötigt werden?
- das keine weiteren Spalten mit weiteren Adr Daten in der Augangs-Excel Datei vorhanden sein dürfen
.. da deise bei der Umwandlung in die XML Datei stören und beim Import zu fehlern führenwürden?
Es ist (wie meine Versuche gezeigt haben) nicht erforderlich, um einer Person mehrere Telefon Nr. zuzuordnen dass auch der Wert für einer Zelle aus einer "uniqueid" Spalte eingelesen wird.
Das passiert dann später in der Fritzbox beim Umwandeln der xml Datei in das Tel.-Buch irgendwie automatisch.
Ich habe zu dem Vorgehen "Excel tel Datei umwandeln und in Fritzbox importieren" mal eine Anleitung für Laien (so wie mich) in Word mit zig screen-shots erstellt, (für eine Excel Tabelle mit den o. g. 5 Spalten ) -- wie genau man verfahren muss um dann mit dem VB Programm zu der xml Datei zu kommen, die von einer FritzBox (zumindest meiner FB7530) akzeptiert wird. Die könnte ich, wenn gewünscht hier zur Verfügung stellen.
Meine Frage an der Stelle ist noch :
Kann man hier nur Bilddateien zu dem eigenen Beitrag hinzufügen oder auch PDF Dateien?
Für alle hilfreichen und aufklärenden Antworten sage ich schon jetzt vielen vielen Dank
Mit freundlichen Grüßen
R. Louis
Kurz zu mir. Ich bin neu hier, bin schon älter (73) und habe keine Programmiererfahrung.
PS: Frage zu den Beiträgen ab dem Beitrag von Mitglied: musikfreund 01.03.2021 um 21:59:32 Uhr
Was hat es jetzt noch mit dem Abkürzungen und den AWK bzw. gawk.exe Programm auf sich ?
wann und wie soll das noch eingesetzt / angewendet werden?