Hallo zusammen,
ich habe folgendes Problem: ich habe mit VBA im Visual Studio 2010 eine Word 2010 Addin (OfficeRibbon) erstellt. Es funktioniert alles perfekt, solange ich nur ein Dokument geöffnet habe. Wenn nun aber mehrere Dokumente geöffnet sind, dann bezieht sich sich die Anzeige und die Aktion des Addins immer auf das aktuell angeklickte Dokument, und nicht das in den anderen Fenstern.
Konkret erstellt das Addin automatisch Backups vom Dokument und soll das auch tun, wenn gerade ein anderes Word-Dokument den Focus hat.
Zum speichern nutze ich die Funktion Globals.ThisAddIn.Application.ActiveDocument.SaveAs().
Wie könnte ich nun feststellen, dass mehere Instanzen von Word laufen (die ja dann auch alle eine eigene Kopie meiner Ribbon-Toolbar haben) und dann die Toolbars von einander "entknüpfen", sodass jede nur ihr eigenes Dokument bearbeitet?
Wär toll, wenn jemand nen Tipp hätte...
LG Manuel
für die Vollständigkeit hier noch mal der komplette Code:
Imports Microsoft.Office.Tools.Ribbon
Public Class Ribbon1
Dim doc
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click
doc = Globals.ThisAddIn.Application.ActiveDocument
If Not doc.Path = "" Then
speichern()
Else
Dim box = MsgBox("Sie müssen die Datei vorher speichern. Jetzt speichern?", MsgBoxStyle.OkCancel, "AutoBackup")
If box = 2 Then
Exit Sub
End If
Try
doc.save()
Catch ex As Exception
MsgBox("AutoBackup konnte nicht speichern", MsgBoxStyle.Critical, "AutoBackup")
Exit Sub
End Try
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
speichern()
End Sub
Private Sub ToggleButton1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles ToggleButton1.Click
doc = Globals.ThisAddIn.Application.ActiveDocument
If ToggleButton1.Checked = True Then
If Not doc.Path = "" Then
speichern()
Timer1.Enabled = True
ToggleButton1.Label = "Automatik EIN"
Else
Dim box = MsgBox("Sie müssen die Datei vorher speichern. Jetzt speichern?", MsgBoxStyle.OkCancel, "AutoBackup")
If box = 2 Then
ToggleButton1.Checked = False
Exit Sub
End If
Try
doc.save()
Catch ex As Exception
MsgBox("AutoBackup konnte nicht gestartet werden", MsgBoxStyle.Critical, "AutoBackup")
ToggleButton1.Checked = False
Exit Sub
End Try
Timer1.Enabled = True
ToggleButton1.Label = "Automatik EIN"
End If
Else
Timer1.Enabled = False
ToggleButton1.Label = "Automatik AUS"
MsgBox("AutoBackup wurde beendet", MsgBoxStyle.OkOnly, "AutoBackup")
End If
End Sub
Private Sub speichern()
Dim pfad
Dim data1
Dim data2
doc = Globals.ThisAddIn.Application.ActiveDocument
If Not pfad Then
pfad = "c:\WORD-BACKUP\"
End If
If Not System.IO.Directory.Exists(pfad) Then
MkDir(pfad)
End If
data1 = pfad & Strings.Left(doc.Name, Strings.Len(doc.name) - Strings.InStrRev(doc.Name, ".")) & "-" & Format(Today, "yyyymmdd") & "-" & Format(Now, "hhmm") & ".docx"
data2 = doc.FullName
doc.SaveAs2(data1)
doc.SaveAs2(data2)
End Sub
End Class
|