![]() |
|
![]() |
#1 |
![]() Neuer Benutzer |
![]() Hallo erstmal,
Ich möchte gerade ein kleines Programm schreiben für Excel, welches als eine Art Update fungiert um Menübänder einzufügen und wollte fragen ob wer helfen könnte? Kurz zur Erklärung wie das ablaufen sollte, die neusten Office Programme wenn man sie abspeichert, sind ja alles in allem verpackte Dateien, bei Excel mit Makros wäre dieses Dateiformat eben xlsm. So nun möchte ich dieses via Visual studio öffnen, darin befinden sich dann 3 Ordner und eine xml Datei, so lange keine Menübänder bereits vorhanden sind. Die 3 Ordner wären: der Relationship Ordner worin eine Rels-Datei ist, welche ich bearbeiten muss, da dort der Pfad zur CustomUI eingegeben wird, der nächste die docProbs und der letzte der xl Ordner - welche jedoch meines wissens nach nicht relevant sind. Nun muss ich dort einen neuen Ordner erstellen, namens CustomUI und dort dann die XML Datei, also das Menüband, einfügen. So mein erstes Problem wäre, ob ich das mit Visual Studio 2010 .Net Framework simpel hinbekommen kann, oder eine höheren Version sinnvoll wäre, da ein Problem davon ist das es ZipArchiveEntry und ZipArchive als Datentyp nicht erkennt. Als Beispiel Code: Public Sub UpdateCustomUI(ByRef strCustomUI As String) 'strCustomUI - Pfad und Name der CustomUI-Datei Dim bUIFound As Boolean = False Dim rels As ZipArchiveEntry = Nothing Dim customUI As ZipArchiveEntry = Nothing If Not System.IO.File.Exists(strCustomUI) Then MsgBox("Datei " & strCustomUI & " nicht gefunden!", MsgBoxStyle.Critical) Exit Sub End If Dim strName As String = System.IO.Path.GetFileName(strCustomUI) Using archive As ZipArchive = ZipFile.Open(DocName, ZipArchiveMode.Update) For Each entry As ZipArchiveEntry In archive.Entries If entry.FullName.EndsWith(strName, StringComparison.OrdinalIgnoreCase) Then entry.Delete() bUIFound = True ElseIf entry.FullName = "_rels/.rels" Then rels = entry End If Next If Not bUIFound Then 'CustomUI war noch nicht vorhanden und der Verweis muss eingefügt werden If rels Is Nothing Then MsgBox("Rels wurde nicht im Archiv gefunden!", vbCritical) Exit Sub Else AddReference(archive, rels) End If End If 'Neue CustomUI einfügen archive.CreateEntryFromFile(strCustomUI, "customUI\" & strName) End Using End Sub End Class Und es sollte eben mehrfach verwendebar sein, also auch auf anderen Computern laufen, sonst könnte ich ja einfach den CustomUI Editor welchen ich mir runtergeladen habe verwenden, aber da der natürlich nicht bei jedem vorhanden ist, eben eine schlechte Möglichkeit. |
![]() |
![]() ![]() |