vba - Sådan åbnes en .xls-fil i et Excel-tilføjelsesprogram, der starter med det højre museklik i Windows-mappen

Indlæg af Hanne Mølgaard Plasc

Problem



Sandsynligvis det, jeg forsøger at gøre, er svært, måske umuligt, så jeg beder om din hjælp.
Jeg har oprettet en Excel-tilføjelse (som jeg kalder MyAddIn.xlam), der gør nogle operationer på Excel-filer '97 -03 (rapporter eksporteret fra tredjeparts software). For eksempel en MyDoc.xls-fil.
Jeg vil gerne have MyAddIn.xlam til at ændre MyDoc.xls ved at starte fra et højre klik på MyDoc.xls ikonet.
Mine spørgsmål er:
1. Hvordan kan jeg tilføje en 'Rediger med MyAddIn' stemme til .xls udvidelse til kontekstmenuen i Windows 10? (jeg tror i regedit)
2. Hvad og hvor skal jeg skrive for at lade MyAddin.xlam åbne? (jeg tror i regedit)
3. I VBA hvordan genoptager jeg navnet på myDoc.xls-filen, der tidligere er klikket?
tak skal du have

Bedste reference


Jeg forstår ikke fuldt ud hvad du vil, men hvis vi starter et sted, kan vi måske komme derhen. Så begynder vi med denne kode. Den tilføjer en knap til kontekstmenuen. Indsæt den i et normalt kode modul.


Option Explicit

    Const ButtonID As String = "MyCustomTag"

Sub DelContextControl()
    ' 28 Apr 2017

    Dim Ctl As CommandBarControl
    Dim Del As Boolean

    Do
        Set Ctl = CommandBars("Cell").Controls(1)
        Del = (Ctl.Tag = ButtonID)
        If Del Then Ctl.Delete
    Loop While Del
End Sub

Sub SetContextControl()
    ' 28 Apr 2017

    Dim Cbar As CommandBar
    Dim Cbtn As CommandBarButton

    Set Cbar = CommandBars("Cell")
    Set Cbtn = Cbar.Controls(1)
    If Not (Cbtn.Tag = ButtonID) Then
        Set Cbtn = Cbar.Controls.Add(msoControlButton, , , 1)
        With Cbtn
            .Tag = ButtonID
            .Style = msoButtonCaption
            .BeginGroup = True
        End With
    End If

    With Cbtn
        .Caption = "My own button"
        .OnAction = "MyMacro"
    End With
End Sub

Sub MyMacro()

    MsgBox "I respond to your command"
End Sub


Koden begynder ved at definere et ID til kontrollen. Du kan bruge en hvilken som helst unik streng, men når den er besluttet, må den ikke ændres, fordi koden bruger den til at identificere din knap, og hvis den går tabt, vil du også miste kontrollen over knappen.


Næste kommer en makro, der sletter knappen. Hvis du har oprettet den samme knap flere gange, vil den slette alle forekomster af den. Men det vil kun slette knapper, der har den indstillede ButtonID og fundet øverst på listen, fordi det er her, hvor den næste procedure vil indsætte den. Kør altid denne procedure, før du ændrer ButtonID i koden.


Den tredje procedure indsætter en knap øverst i kontekstmenuen og identificerer den med ButtonID. I bunden af ​​denne procedure finder du egenskaberne for .Caption og .OnAction. Du kan ændre begge dele. Egenskaben OnAction har navnet på den makro, der skal køre, når knappen trykkes.


Du kan nu oprette knappen, prøve knappen og slette knappen. Men hvad du vil have knappen til at gøre, forstår jeg ikke. Måske er det bedre at gøre det andet spørgsmål alligevel, fordi dette kapitel er både langt nok og fuldstændigt i sig selv. Jeg håber, at det er en del af det, du ledte efter.