Word öffnen => Excel inkl. Makro öffnen => Daten von Sharepoint aktualisieren => Excel schließen

  • Word

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Word öffnen => Excel inkl. Makro öffnen => Daten von Sharepoint aktualisieren => Excel schließen

    Hallo zusammen,

    ich verzweifel...folgende Gegebenheiten:

    In der Firma wird ein Sharepoint installiert was dazu dient Aufgaben zu erfassen und an ausgewählte Mitarbeiter zu verteilen.
    Sharepoint wird dann mittels Excel abgefragt. Innerhalb Excel habe ich ein VBA Code geschrieben der mir erstmal die Daten formatiert heisst: Bei der Übergabe von Sharepoint zu Excel
    werden viele unnötige Absätze in die Zellen mit übertragen. Das entfernen dieser Absätze ist aber wichtig, weil mittels der Seriendruckfunktion von Word die Daten von Excel in Word übergeben werden.
    Das ganze dient dazu um die Aufgabenpakete auf einem standartisierten Formular darzustellen bzw. zu drucken.

    Also nochmals zusammengefasst: In Sharepoint wird eine Aufgabe eingetragen => Excel ruft die Daten ab => Word ruft aus der Exceldatei die nötigen Seriendruckfelder ab => Worddokument bzw. Wordvorlage mit gewünschten Daten wird (manuell) dann ausgedruckt.

    Alles in allem funktioniert für sich alleine recht gut.

    Um die Usability zu erhöhen bzw. zu vereinfachen möchte ich nun beim Start der Word-Seriendruckvorlage die Exceldatei im Hintergrund öffnen, innerhalb der Exceldatei soll dann das Makro zum formatieren ausgeführt werden, die Exceldatei gespeichert und geschlossen werden.

    Ich hab das bereits mittels SHELL Funktionen versucht allerdings wird mir dann Excel immer schreibgeschützt geöffnet, weil "ein anderer Benutzer" gerade auf die Exceldatei zugreift. Logischerweise sollte die Exceldatei aber eben nicht schreibgeschützt geöffnet werden...

    Ich verneige und bedanke mich schonmals im vorraus....


    gruß

    Visual Basic-Quellcode

    1. ​Set Excel = CreateObject("Excel.Application")
    2. Set wb = Excel.Workbooks.Open(PathToYourExcel)
    3. ...
    4. wb.Close False

    FrankyWill schrieb:

    allerdings wird mir dann Excel immer schreibgeschützt geöffnet, weil "ein anderer Benutzer" gerade auf die Exceldatei zugreift
    Egal, ob du mit Shell oder mit dem Excel-Objekt die Datei öffnest.
    Das wird sich nicht ändern.
    Wenn die Datei gelockt ist, kriegst du sie nur ReadOnly auf.

    Selbst wenn die Datei gerade niemand in Bearbeitung hat, kann gut sein, dass Sharepoint sie dennoch gelockt hat.
    Die wird erst nach einiger Zeit wieder freigegeben.
    Ein Grund, weshalb ich Sharepoint hasse.

    Abhilfe könnte sein, das Workbook mit ReadOnlyRecommended zu versehen, dass es nur dann schreibend geöffnet wird, wenn es wirklich notwendig ist.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Das ist eine gute Idee, vielen Dank!

    Ich habe da noch eine andere Frage die ich erstmal hier stelle, vielleicht weisst du (petaod) oder jeder andere etwas dazu. Im Zweifel eröffne ich einen neuen Thread:

    In der erwähnten Word Vorlage möchte ich einen Command Button integrieren der dafür sorgt, das die erste Seite, und nur diese als PDF gespeichert wird. Das Makro dazu sieht bei mir so aus:

    Quellcode

    1. Private Sub CommandButton1_Click()
    2. With Dialogs(wdDialogFileSaveAs)
    3. .Format = wdFormatPDF
    4. .Show
    5. End With
    6. End Sub


    Wie gesagt möchte ich eben nur die Erste Seite des Dokuments speichern, die anderen Seiten des docs allerdings nicht.


    Desweiteren möchte ich einen weiteren Command Button integrieren der alle Dokumente die in der Excel Liste mit dem Status "open" deklariert sind ausdruckt.
    Weisst du dazu zufällig etwas?
    Mit SaveAs kannst du nur das ganze Dokument speichern.
    Willst du einzelne Seiten, musst du diese in ein neues Dokument kopieren und dieses speichern.

    Wenn du einen PDF-Printer hast, kannst du einzelne Seiten drucken.

    Visual Basic-Quellcode

    1. Application.PrintOut Range:=wdPrintRangeOfPages, Pages:="2,6-10"
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Im Endeffekt möchte ich den Druck auf Seite 1 nur deshalb beschränken, weil sich auf Seite 2 der Command Button zum pdf speichern befindet.

    Gibt es eine Möglichkeit, den CommandButton temporär zum speichern des pdf auszublenden, und nach dem Speichern wieder einzublenden?