VB.NET 2015 : Vorlagen Manager für Office Anwendungen

Ich habe mal wieder eine kleine Fingerübung in VB.NET gemacht, rausgekommen ist ein Vorlagen Manager für alle Arbeitsgruppen Vorlagen unabhängig von der Anwendung. Ob das Sinn macht oder nicht ist egal es war mal wieder eine gute Übung für mich. Wenn man zur Laufzeit Elemente erstellen möchte gibt es einiges zu beachten. In meinem Beispiel erstelle ich eine TabPage im TabControl und füge ein ListView Element hinzu.

Formular
Vorlagen_Manager

Benötigt
Imports System.IO
Deklaration für den Pfad in der Klasse:
Dim varPath As New DirectoryInfo("pfad zu den Arbeitsgruppen Vorlagen")
Sub für das erstellen zur Laufzeit :
Private Sub AddTabPage()
    Dim tempPage As TabPage
    Dim LView As ListView
    For Each oSubDir As DirectoryInfo In varPath.GetDirectories
        tempPage = New TabPage(oSubDir.Name)
        LView = New ListView()
        With LView
                .Dock = DockStyle.Fill
                .View = View.Details
                .Name = "lvw_" & oSubDir.Name
                .GridLines = True
        End With
        tempPage.Controls.Add(LView)
        AddHandler LView.DoubleClick, AddressOf OpenFile_DoubleClick
        AddHeader(LView)
        If oSubDir.GetFiles.Count > 0 Then
                tab_ctl.TabPages.Add(tempPage)
                GetFilesFromFolder(oSubDir, LView)
        End If
    Next
End Sub
Um das erstellte Listview auch mit einem onKlick oder wie in meinem Fall DoppelKlick zu versehen wird AddHandler benötigt.
Dieser verweist in meiner Sub auf die Funktion OpenFile_DoubleClick
Private Sub OpenFile_DoubleClick(ByVal sender As Object, ByVal e As EventArgs)
        Dim lv As ListViewItem = CType(sender, ListView).FocusedItem
        Dim App As String = UCase(lv.SubItems(1).Text.ToString)
        Dim Template As String = lv.SubItems(2).Text.ToString
        Dim var_proc_start As String
        Select Case App
            Case "WO"
                var_proc_start = "winword.exe"
            Case "EX"
                var_proc_start = "excel.exe"
            Case "PP"
                var_proc_start = "powerpnt.exe"
            Case Else
                var_proc_start = Nothing
        End Select
        If Not (var_proc_start Is Nothing) Then
            Process.Start(Chr(34) & OfficePfad & var_proc_start & Chr(34), "/N " & Chr(34) & Template & Chr(34))
        End If
    End Sub
Hier werden die Header für das ListView Element geschrieben
Private Function AddHeader(ByVal Lstview As Object)
  Dim HEAD1, HEAD2, HEAD3 As ColumnHeader
  HEAD1 = New ColumnHeader
  HEAD2 = New ColumnHeader
  HEAD3 = New ColumnHeader
  With HEAD1
          .Text = "Vorlage"
          .TextAlign = HorizontalAlignment.Left
          .Width = 650
  End With
  With HEAD2
          .Text = "Typ"
          .TextAlign = HorizontalAlignment.Center
          .Width = 50
  End With
  With HEAD3
          .Text = "Pfad"
          .TextAlign = HorizontalAlignment.Left
          .Width = 5
  End With
  With Lstview
          .Columns.Add(HEAD1)
          .Columns.Add(HEAD2)
          .Columns.Add(HEAD3)
  End With
End Function
Datei Typ ermitteln :
Private Function Get_File_Type(ByVal File As FileInfo)
        Dim FTYPE As String
        Select Case File.Extension
            Case ".dotx"
                FTYPE = "WO"
            Case ".xltx"
                FTYPE = "EX"
            Case ".potx"
                FTYPE = "PP"
            Case Else
                FTYPE = "NA"
        End Select
        Return FTYPE
    End Function
Dateien in das Listview Element eintragen :
Private Sub GetFilesFromFolder(ByVal Folder As DirectoryInfo, ByVal oLiVi As Object)
        For Each File As FileInfo In Folder.GetFiles
            If File.Name.Substring(0, 1) = "~" Then
                Exit Sub
            End If
            Dim Item As New ListViewItem(File.Name)
            Item.SubItems.Add(Get_File_Type(File))
            Item.SubItems.Add(File.FullName)
            oLiVi.Items.Add(Item)
        Next
    End Sub
Form Load :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   AddTabPage()
End Sub


Es gibt bestimmt schönere Weg oder auch andere die besser wären, wenn das so ist schreibts mir in die Kommentare. Ich bin bis jetzt zufrieden es funktioniert ;-)


Windows 10 - Feature Update 1607 - Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert

Problem : Nach dem installieren des Feature Updates 1607 in Windows 10 (64Bit) erscheint diese Meldung "Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert" nach der Anmeldung des Benutzers.

Lösung : Scheinbar tritt dieses Problem auf wenn Microsoft Office auf dem Client installiert ist. Eine Reparatur der Office Installation hat das Problem bei mir gefixt. In meinem Fall war ein Office 2016 (32Bit) installiert, der Fehler tritt aber scheinbar bei alle Office Versionen auf.

Outlook: Umbenennen eines Outlook-Profilenamens

Problem:
Ich habe ein Outlook-Profil angelegt und möchte dieses jetzt umbenennen ohne Einstellungen zu verlieren!

Lösung:
Unglaublich aber wahr...das geht nicht so einfach. Man kann den Profilnamen aber in der Registry ändern.
Hierzu bitte wie folgt vorgehen:

- Outlook und Mail-Konfiguration schließen
- "Regedit" starten
- Navigieren zu: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles
- Hier muss der Wert "DefaultProfile" auf den gewünschten Namen geändert werden
- Danach muss man den Schlüsselname unterhalb von "Profiles" (Profilname) anpassen auf den neuen, gewünschten Namen
-Fertig

In der Quelle unten ist das Ganze in englisch und mit Bildern ausführlicher erklärt!

Quelle:
Techrepublic: How to rename your Microsoft Outlook Mail Profile

Outlook 2010: Das Herunterladen von zusätzlichen Postfächern im Cached-Modus aktivieren/deaktivieren

Problem:
Ich habe bei einem Outlook 2010, das im Cached-Mode läuft, ein zusätzliches Postfach einhängt.
Daraufhin fängt Outlook sofort an das zusätzliche Postfach in eine OST herunterzuladen.
Da es sich dabei um eine Anbindung mit kleiner Bandbreite handelte, wollte ich dieses Verhalten nicht, sondern nur einen Zugriff auf das Postfach ohne cachen.

Lösung:
Der Microsoft Support hat hierfür einen Lösung bereitgestellt und auch erklärt, dass sich das Verhalten von Outlook 2007 zu Outlook 2010 geändert hat.
Bei Outlook 2007 wurden standardmäßig die zusätzlichen Postfächer NICHT zwischengespeichert. Seit Outlook 2010 wird das standardmäßig gemacht. Wer das nicht will, kann das wie folgt abändern (Auch bei 2007):

- "regedit" öffnen
- Navigieren zu : HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Cached Mode
- Neues DWORD anlegen namens "CacheOthersMail"
- Den Wert wie folgt setzen: 0 = zus. Postfach wird NICHT gecacht / 1 = zus. Postfach wird gecacht

Quelle:
Microsoft Support: Standardmäßig werden freigegebene Nachrichtenordner im Cache-Modus in Outlook 2010 und höher heruntergeladen.

Excel: Alle Menüpunkte sind ausgegraut - keine Auswahl möglich

Problem:
Beim Öffnen einer Excel-Datei konnte ich nichts mehr im Menü anklicken - fast alle Punkte waren ausgegraut.
Auch ein erneutes Öffnen und Schließen hat das Problem nicht behoben.
Andere Dateien funktionieren problemlos!

Lösung:
Die Lösung des Problem war einfach, wenn man genau hinschaut!
Es waren bei dieser Datei mehrere Tabellenblätter mittels STRG-Taste markiert worden.
Diese Einstellung wird beim Speichern beibehalten (Warum auch immer??)
Ich habe dann nur ein Tabellenblatt ausgewählt und, siehe da, die Menüpunkt waren wieder farbig und anwählbar!
Manchmal kann die Lösung so einfach sein!
“Die Organisationen stecken Millionen von Dollars in Firewalls und Sicherheitssysteme und verschwenden ihr Geld, da keine dieser Maßnahmen das schwächste Glied der Sicherheitskette berücksichtigt: Die Anwender und Systemadministratoren.”
Kevin Mitnick