Auf Diagramm in Word Dot zugreifen und Daten ändern

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von slippma3.

    Auf Diagramm in Word Dot zugreifen und Daten ändern

    Hallo liebes Forum,
    ich habe eine Word-Vorlage auf die ich mithilfe meines VB Programms zugreife und Textmarken ändere. Das funktioniert auch wunderbar. Der Zugriff auf Word erfolgt durch CreateObject("Word.Application"). Ich arbeite mit Microsoft Visual Basic 2010 Express.

    In meine Vorlage ist ein Diagramm integriert. Wie kann ich darauf zugreifen und die Daten ändern? Alternativ würde es mir auch helfen, ein Diagramm aus einer separaten XLS Datei zu koppieren und in Dot Vorlage als Bild oder so einzufügen.

    Kann mir jemand helfen?

    LG Stefan
    Wie oft willst Du denn die Vorlage ändern, dass Du dazu ein Programm brauchst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Alter, kannst du mal höflich bleiben!
    Ich beleidige dich doch auch nicht, weil du nen scheiß namen hast!

    Ein neuer Thread, weils ein neues Thema ist. Was hat denn der Zugriff auf ein Excel-Diagramm in nem Word Dokument mit dem anderen Thema zu tun. Richtig, Nichts!!
    Hey,

    @Don_Batisto:, @programmer71:, "Sag mal, bist du wirklich so doof wie du rüber kommst???" widerspricht unserer Netiquette eindeutig; die Reaktion darauf dann entrüstet als Beleidigung zu melden, ist dann die sprichwörtliche Krönung ... Ich würde deshalb alle bitten, eine gewisse Sitte an den Tag zu legen!

    @slippma3: @Allgemein (Ohne tief in der Thematik zu stecken) In welcher Tiefe unterscheidet sich dieses Thema vom Vorherigen? Evtl. ist eine Zusammenlegung sinnvoll?

    Gruß Manschula
    In diesem Thread geht es um Ersetzen von Texten in Microsoft Office Word.

    In dem anderen Thread (Link gibts oben) geht es ebenfalls um das gleiche Thema!


    In dem anderen Thema ist die Lösung sogar mit Code beschrieben.

    => Somit ist das hier doppelt und kann weg!


    *OT* Mein Satz ist eine rhetorische Frage an den TE gewesen!
    Weil es gehört doch schon ordentlich "Doofheit" dazu, wenn man 2 Threads für das gleiche Thema aufmacht!
    Es ist sowies leicht krank, wie viele Threads hier die gleichen Themen beinhalten, aber
    auch hier schafft man es nicht die SuFu oder Google zu befragen *OT*
    Hallo Manschula,
    zunächst vielen Dank für dein moderierendes Eingreifen. Ich hoffe, die Wogen glätten sich jetzt wieder.
    - In meinem ersten Thread ging es um den Zugriff auf Word im Allgemeinen und das Suchen und Ersetzen bestimmter Ausdrücke. Dabei hat mir Don_Batisto auch total schnell und sehr gut geholfen.
    - Der zweite Thread behandelt hingegen den Umgang mit einem Diagramm (Excel), welches in Word integriert ist. Mein Prog soll bestimmte Werte an die Word Dot bzw. das integrierte Excel Diagramm weitergeben, so dass es sich ändert.

    Wenn dies hinsichtlich der Befehlslogik, die dahinter liegt, zu meinem Thread davor im direkten Zusammenhang steht, find ich eine Zusammenlegung sinnvoll.

    Über inhaltliche Hilfe bin ich weiterhin dankbar.

    Viele Grüße
    Lies dir bitte deinen 1. Post in diesem Thread durch.
    Du schreibst nirgends dass es um Excel geht.

    Lediglich als Alternative könnte man eine xls-Datei nehmen.


    Also in Zukunft Fragestellungen richtig formulieren!
    Dann kommen solche Problemchen nicht!

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Auslesen aus Excel:

    Beispiel:

    VB.NET-Quellcode

    1. ' Verweis aus Microsoft.Office.Interop.Excel in der Entwicklungsumgebung setzten
    2. Public Class Form1
    3. Function excel()
    4. Dim Excel1 As New Microsoft.Office.Interop.Excel.Application
    5. Dim txt As String
    6. Try
    7. Excel1.Workbooks.Open("C:\datei.xls")
    8. 'Excel1.Visible = True ....wers braucht ?
    9. txt = Excel1.Range("A2").Value()
    10. MessageBox.Show(txt)
    11. Catch ex As Exception
    12. MessageBox.Show("Datei nicht vorhanden.")
    13. Finally
    14. Excel1.Application.Quit()
    15. End Try
    16. End Function
    17. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    18. excel()
    19. End Sub
    20. End Class
    Weitere Beispiele gibt es in Google (Suche nach "vb.net werte aus excel datei auslesen")


    Reinschreiben in Word machst du dann so wie in deinem anderen Thread beschrieben
    Hallo Don_Batisto,
    vielen Dank für deine Antwort. Allerdings weiß ich nicht, wie ich das eingebettete Excel-Diagramm in meiner Word-Vorlage ansprechen soll. Das geht, soweit mir Google verraten hat, nicht mit Textmarken.

    PS: Vll war meine Frage schlecht formuliert. Vll kann man aber auch erst ma nachfragen, bevor man schießt. Das hilft auch bei der Problemvermeidung.
    @slippma3: Ich hatte es so verstanden, dass Du irgend Diagrammdaten ändern willst, nicht aber einen Link durch einen Link auf eine XLS.
    Du kannst natürlich die Daten (einzeln) aus der XLS auslesen und dann als Werte in das Doc einfügen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also du kannst in Word ebenfalls Tabellen erstellen.

    Vorgehen:
    1) Auslesen der Spalten etc. aus Excel
    2) Word Vorlage öffnen und Tabellen Textmarke suchen
    3) Tabelle aus den Werten aufbauen und damit die Textmarke ersetzen
    Als ich glaube, ich habe mich wirklich schlecht ausgedrückt.


    Ziel ist es nicht, Werte aus Excel auszulesen. Vielmehr
    möchte ich Daten in das in Word eingebettete Diagramm hinein schreiben. D.h.,
    mir geht es darum, die Daten, die das Diagramm bestimmen, zu ändern. Deswegen
    ja auch die Frage, wie ich spreche ich konkret das in mein Word Dokument
    eingebettete Diagramm an.





    Vielen Dank für eure Hilfe.

    Ein anderes Vorgehen... aber noch fehlerhaft

    Hallo Forum,
    nachdem ich auf meinen letzten Post keine Antwort mehr erhalten habe, habe ich mich entschlossen, ein anderes Vorgehen zu wählen.
    Ich greife auf ein separates Excel Diagramm zu, ändere dort die Daten, kopiere es und füge es als Bild in meine Word Dot ein.
    Die ersten Schritte funzen und ich kann das Diagramm kopieren. Leider klappt das Einfügen nicht, obwohl das Bild in der Zwischenablage vorhanden ist. Überprüft habe ich es folgendermaßen: Nachdem ich mein Prog ausgeführt habe und in einem WordDok auf "Einfügen klicke" erscheint mein Diagramm. Hat jemand ne Idee?

    Ich habe euch mal meine Quellcode angehängt.


    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. Dim TabP As String = "C:\Users\Dotwin\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\Kopie von testdiagramm.xlsx"
    3. Dim objExcel As Object
    4. Dim oWbk
    5. Dim oWks
    6. Dim Diag
    7. Dim word As Object
    8. Dim WordDoc As Object
    9. objExcel = CreateObject("Excel.Application")
    10. objExcel.Visible = True
    11. oWbk = objExcel.Workbooks.Open(TabP)
    12. oWks = oWbk.Worksheets("Tabelle2")
    13. Diag = oWks.ChartObjects(1).CopyPicture()
    14. Word = CreateObject("Word.Application")
    15. WordDoc = word.Documents.Add("C:\Users\Dotwin\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\test.docx")
    16. word.Visible = True
    17. Dim img As Image
    18. img = Clipboard.GetImage()
    19. With WordDoc
    20. If .Bookmarks.Exists("diagramm") Then
    21. .Bookmarks("diagramm").Range.text = img
    22. End If
    23. End With
    24. objExcel.Quit()
    25. objExcel = Nothing
    26. End Sub


    Grüße

    Problem gelöst...

    hier die lösung...

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. Dim TabP As String = "C:\Users\Dotwin\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\Kopie von testdiagramm.xlsx"
    3. Dim objExcel As Object
    4. Dim oWbk
    5. Dim oWks
    6. Dim Diag
    7. Dim word As Object
    8. Dim WordDoc As Object
    9. objExcel = CreateObject("Excel.Application")
    10. objExcel.Visible = True
    11. oWbk = objExcel.Workbooks.Open(TabP)
    12. oWks = oWbk.Worksheets("Tabelle2")
    13. Diag = oWks.ChartObjects(1).Copy()
    14. objExcel.Quit()
    15. objExcel = Nothing
    16. word = CreateObject("Word.Application")
    17. WordDoc = word.Documents.Add("C:\Users\Dotwin\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\test.docx")
    18. word.Visible = True
    19. With WordDoc
    20. If .Bookmarks.Exists("diagramm") Then
    21. .Bookmarks("diagramm").Range.paste()
    22. End If
    23. End With
    24. End Sub

    ähnliches Problem, nur diesmal mit PowerPoint

    So, ich mussnochmal nachfragen, da ich mit meinem Problem bisher nur zur Hälfte fertig bin.
    Ich habe, wie unten beschrieben, die Alternativlösung über Excel gewählt. D.h. ich öffne eine ExcelDatei und kopiere das Diagramm. Dies ist bei mehreren Diagrammen unbefriedingend. Deswegen suche ich immer noch nach dem optimalen Weg.
    Ich bin soweit, ein Diagram in PP ansprechen zu können. Nur wie ändere ich die Datenquelle? Mein Code ist an dem unteren Link angepasst. Funzt nur leider nicht, da er, glaube ich, nicht die Exceldatei findet, in der die Diagrammwerte hinterlegt sind. Die ist ja mit dem PP-Diagramm verknüpft und hat keinen eigenen Pfad. Hat jemand ne Idee, wie ich VB das mitteile??


    Danke für Tipps

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim PPT As Object
    3. Dim PPTDoc As Object
    4. Dim MySlide As Object
    5. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    6. PPT = CreateObject("PowerPoint.Application")
    7. PPTDoc = PPT.Presentations.Open("D:\test.pptx")
    8. MySlide = PPTDoc.Slides(1)
    9. 'With MySlide.Shapes.Item(2).TextFrame.TextRange
    10. '.Text = "Line 1" & vbCrLf & "Line 2" & vbNewLine & "Line 3" & vbNewLine & "Line 4" & vbNewLine
    11. '.Font.Name = "Vardana"
    12. '.Font.Size = 36
    13. 'End With
    14. MySlide.Shapes.Item(2).Chart.chartdata.Workbook.Worksheets("Tabelle1").range("B2").value = "100"
    15. ' MySlide.Shapes.addpicture("D:\SpinnendiagrammKompetenz.png")
    16. 'MySlide.Shapes.paste()
    17. MySlide = Nothing
    18. PPT.Visible = True
    19. End Sub
    20. End Class


    msdn.microsoft.com/de-de/libra…f973127(v=office.14).aspx