...da wird es den meisten wohl so gehen wie Uwe. Nicht installiert oder selten genutzt. Ich hab es noch nie genutzt, müsste mich also erst in die Objektbibliothek von OneNote einarbeiten. Aber die KI sagt folgendes (somit ohne Gewähr!):
Mit VBA kannst du über die OneNote COM-API eine neue Seite in OneNote anlegen und Inhalte einfügen. Dazu benötigst du die
Code:
Microsoft OneNote xx.x Object Library
(Referenz über Extras → Verweise in VBA setzen).
Beispielcode: Notiz in OneNote aus Excel-Zellen erstellen
Code:
' Sprache: VBA (Excel)
Sub CreateOneNoteNote()
' Variablen für OneNote-Objekte
Dim oneNoteApp As OneNote.Application
Dim notebookXML As String
Dim sectionID As String
Dim pageID As String
Dim pageTitle As String
Dim pageContent As String
' Zellwerte als Titel und Inhalt verwenden
pageTitle = ThisWorkbook.Sheets("Tabelle1").Range("A1").Value
pageContent = ThisWorkbook.Sheets("Tabelle1").Range("B1").Value
' OneNote-Objekt initialisieren
Set oneNoteApp = New OneNote.Application
' Erste Notizbuch-Sektion suchen (kann angepasst werden)
oneNoteApp.GetHierarchy "", hsSections, notebookXML
' Hier wird die erste Sektion verwendet
sectionID = GetFirstSectionID(notebookXML)
' Neue Seite erstellen
oneNoteApp.CreateNewPage sectionID, pageID, npsDefault
' Inhalt als XML hinzufügen (OneNote erwartet XML)
Dim pageXML As String
pageXML = "<one:Page xmlns:one='http://schemas.microsoft.com/office/onenote/2013/onenote'>" & _
"<one:Title><one:Text>" & pageTitle & "</one:Text></one:Title>" & _
"<one:Outline><one:OEChildren><one:OE><one:T>" & _
"<![CDATA[" & pageContent & "]]>" & _
"</one:T></one:OE></one:OEChildren></one:Outline></one:Page>"
oneNoteApp.UpdatePageContent pageXML
MsgBox "Notiz erfolgreich in OneNote erstellt!", vbInformation
End Sub
' Hilfsfunktion: erste Sektion ID aus XML auslesen
Function GetFirstSectionID(xml As String) As String
Dim xmlDoc As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.LoadXML xml
Dim sectionNode As Object
Set sectionNode = xmlDoc.SelectSingleNode("//one:Section")
If Not sectionNode Is Nothing Then
GetFirstSectionID = sectionNode.Attributes.getNamedItem("ID").Text
Else
MsgBox "Keine Sektion gefunden!"
GetFirstSectionID = ""
End If
End Function
Hinweise und Anpassungen:
Verweise setzen: In VBA unter Extras → Verweise → Microsoft OneNote 15.0/16.0 Object Library aktivieren.
Zellen anpassen: In diesem Beispiel wird A1 für Titel und B1 für Inhalt genutzt. Du kannst beliebige Zellbereiche verwenden.
Sektion auswählen: Standardmäßig wird hier die erste Sektion gewählt. Du kannst GetFirstSectionID anpassen, um eine bestimmte Sektion anhand des Namens zu finden.
XML-Formatierung: OneNote benötigt Inhalt im OneNote XML-Format; einfache Texte kann man mit einfügen.
Fehlerbehandlung: In produktivem Einsatz solltest du prüfen, ob OneNote geöffnet ist und ob die Sektion gefunden wird.
Nutzung:
Öffne die Excel-Datei.
Trage in A1 den gewünschten Titel ein, in B1 den Inhalt der Notiz.
Führe das Makro CreateOneNoteNote aus.
Die Notiz erscheint in der ersten Sektion deines Standard-OneNote-Notizbuchs.
Mit diesem Ansatz lassen sich beliebige Inhalte aus Excel automatisiert in OneNote übertragen.