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

Excel VBA und OneNote

Forumthread: Excel VBA und OneNote

Excel VBA und OneNote
27.10.2020 15:57:33
B.
Hallo,
folgendes Code-Beispiel möchte ich ausführen, aber es kommt immer ein Fehler dass "OneNote14.Application" nicht definiert ist. Eingebunden habe ich "OneNote 12.0 Object Library" und "OneNote 15.0 Object Library" sowie "Microsoft XML, v6.0", andere Versionen gibt es nicht zur Auswahl. Wie kann ich den Code anpassen? Nur die Zahl "14" zu ersetzen bringt keine Verbesserung.
Viele Grüße,
Betty
'Add the following references (adjust to our office version):
' - Microsoft OneNote 14.0 Object Library
' - Microsoft XML, v6.0
Sub ListOneNotePages()
' Original example is from http://code.msdn.microsoft.com/office/onenote-2010-retrieve-data-023e69c0
' License: Apache 2.0
' Modified to get all pages & content instead of the notebook list
' Connect to OneNote 2010.
' OneNote will be started if it's not running.
Dim oneNote As OneNote14.Application
Set oneNote = New OneNote14.Application
' Get the XML that represents the OneNote pages
Dim oneNotePagesXml As String
' oneNotePagesXml gets filled in with an XML document providing information
' about all OneNote pages.
' You want all the data. Thus you provide an empty string
' for the bstrStartNodeID parameter.
oneNote.GetHierarchy "", OneNote14.HierarchyScope.hsPages, oneNotePagesXml, xs2010
' Use the MSXML Library to parse the XML.
Dim doc As MSXML2.DOMDocument
Set doc = New MSXML2.DOMDocument
If doc.LoadXML(oneNotePagesXml) Then
' Find all the Page nodes in the one namespace.
Dim nodes As MSXML2.IXMLDOMNodeList
Set nodes = doc.DocumentElement.SelectNodes("//one:Page")
Dim node As MSXML2.IXMLDOMNode
Dim pageName As String
Dim SectionName As String
Dim PageContent As String
Dim temp As String
' Walk the collection of Pages.
' Read attribute values and write them
' out to the Immediate window of your VBA host.
For Each node In nodes
pageName = node.Attributes.getNamedItem("name").text
Debug.Print "Page name: "; vbCrLf & " " & pageName
Call oneNote.GetPageContent(GetAttributeValueFromNode(node, "ID"), PageContent,  _
piBasic)
Debug.Print " content: " & PageContent
Next
Else
MsgBox "OneNote 2010 XML Data failed to load."
End If
End Sub
Private Function GetAttributeValueFromNode(node As MSXML2.IXMLDOMNode, attributeName As String)  _
As String
If node.Attributes.getNamedItem(attributeName) Is Nothing Then
GetAttributeValueFromNode = "Not found."
Else
GetAttributeValueFromNode = node.Attributes.getNamedItem(attributeName).text
End If
End Function

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA und OneNote
27.10.2020 20:27:24
Luschi
Hallo Betty
"OneNote 12.0 Object Library" gehört zu Office 2007
"OneNote 15.0 Object Library" gehört zu Office 2013
"OneNote 16.0 Object Library" gehört zu Office 2016
Da es "OneNote 14.0 Object Library" bei Dir auf dem PC nicht gibt, ist Office 2010 auch nicht installiert. Außerdem ist es nicht empfehlenswert, mehrere Objekt-Biblotheken der gleichen Art als Verweis einzubinden. Nutze diese Variante:
'alle Verweise zu OneNote deaktivieren und dann
Dim appOne As Object
Set appOne = CreateObject("OneNote.Application")
also 'late binding' statt 'early binding' (setzen von Verweisen). Dadurch wird die höchste Obbjekt-Biblothek eingebunden und genutzt.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Excel VBA und OneNote
31.10.2020 20:52:42
B.
Hallo Luschi,
danke für deine Hilfe. Jetzt kommt der Fehler aber bei der Deklaration der Function im Beispiel, da ist der benutzerdefinierte Typ unbekannt?
Viele Grüße,
Betty
;
Anzeige

Infobox / Tutorial

Excel VBA und OneNote: Fehlerbehebung und Tipps


Schritt-für-Schritt-Anleitung

  1. Verweise anpassen: Deaktiviere alle Verweise zu OneNote, um Konflikte zu vermeiden. Gehe dazu in den VBA-Editor auf Extras > Verweise und entferne die Häkchen.

  2. Late Binding verwenden: Implementiere Late Binding, um die höchste Objektbibliothek automatisch zu nutzen. Ersetze deine Deklaration durch:

    Dim appOne As Object
    Set appOne = CreateObject("OneNote.Application")
  3. Code anpassen: Stelle sicher, dass du den Code entsprechend der neuen Deklaration anpasst. Achte darauf, dass alle Objekte, die ursprünglich als OneNote14.Application deklariert waren, in appOne umgeschrieben werden.

  4. XML-Daten laden: Wenn du mit OneNote XML arbeitest, stelle sicher, dass die MSXML-Bibliothek korrekt referenziert ist. Falls du eine Fehlermeldung erhältst, überprüfe die Verweise erneut.


Häufige Fehler und Lösungen

  • Fehler: "OneNote14.Application" nicht definiert
    Lösung: Verwende Late Binding, wie oben beschrieben.

  • Fehler bei der Deklaration von Funktionen
    Lösung: Überprüfe die verwendeten Typen und stelle sicher, dass die MSXML-Bibliothek korrekt eingebunden ist. Du kannst die Typen auch in Object ändern, um Fehler zu vermeiden.

  • Fehler: XML-Daten laden schlägt fehl
    Lösung: Überprüfe, ob die OneNote-Anwendung tatsächlich läuft, bevor du versuchst, Daten zu laden.


Alternative Methoden

Wenn du Schwierigkeiten hast, mit VBA in OneNote zu arbeiten, kannst du folgende Alternativen in Betracht ziehen:

  1. Verwendung von Microsoft Office OneNote 2010: Achte darauf, dass du die richtige Version der Objektbibliothek verwendest.

  2. Onenote API: Nutze die OneNote API für eine robustere und einfachere Integration. Diese kann einfacher sein, als direkt mit VBA zu arbeiten.

  3. Excel-Tabelle in OneNote: Du kannst auch Excel-Daten direkt in OneNote einfügen, indem du die Tabelle kopierst und in OneNote einfügst. So kannst du deine Excel Tabelle in OneNote nutzen, ohne VBA.


Praktische Beispiele

Hier sind einige onenote vba examples, die dir helfen, die Integration zwischen Excel und OneNote zu verstehen:

  1. Seiten aus OneNote abrufen:

    Dim oneNotePagesXml As String
    appOne.GetHierarchy "", OneNote.HierarchyScope.hsPages, oneNotePagesXml, xs2010
  2. Inhalt einer Seite auslesen:

    Dim PageContent As String
    appOne.GetPageContent(pageID, PageContent, piBasic)
    Debug.Print "Inhalt der Seite: " & PageContent
  3. XML-Dokumente verarbeiten:

    Dim doc As MSXML2.DOMDocument
    Set doc = New MSXML2.DOMDocument
    If doc.LoadXML(oneNotePagesXml) Then
       ' Verarbeitung hier
    End If

Tipps für Profis

  • Verwende Debug.Print: Nutze Debug.Print häufig, um den Inhalt von Variablen während der Entwicklung zu überprüfen. Dies hilft, Fehler frühzeitig zu erkennen.

  • Doku lesen: Schaue in die MSDN Excel-Dokumentation für spezifische VBA-Befehle und Beispiele, die auf deine Bedürfnisse zugeschnitten sind.

  • VBA-Editor optimal nutzen: Lerne, wie du den VBA-Editor effizient nutzen kannst, z.B. durch Verwendung von Strg + G für das Direktfenster, um schnell Ausgaben zu sehen.


FAQ: Häufige Fragen

1. Welche Version von OneNote benötige ich?
Du solltest sicherstellen, dass du eine kompatible Version von OneNote installiert hast. OneNote 2010 wird häufig verwendet, aber auch neuere Versionen sind möglich.

2. Wie aktiviere ich die MSXML-Bibliothek?
Gehe im VBA-Editor zu Extras > Verweise und aktiviere die Microsoft XML, v6.0 Bibliothek.

3. Kann ich Excel-Daten in OneNote importieren?
Ja, du kannst Excel in OneNote einfügen, indem du die Tabelle kopierst und in OneNote einfügst. Alternativ kannst du auch VBA verwenden, um dies automatisiert zu gestalten.

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