Anzeige
Archiv - Navigation
1936to1940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kennwort per Makro füllen

Kennwort per Makro füllen
17.07.2023 09:04:33
M Merlin
Hallo zusammen,
ich habe eine Exceldatei ( x.xlsm ), in welcher sich Verknüfungen zu mehreren anderen Excel-Dateien befinden. Jede dieser Dateien ist mit einem Kennwort zum Öffnen versehen.
Wenn ich nun diese Datei ( x.xlsm ) öffne, bekomme ich eine Meldung ob die Verknüpfungen aktuallisiert werden sollen. Diese bestätige ich mit ja. Jetzt wird für jede Datei das Kennwort verlangt.
Jetzt meine Frage:
Gibt es eine Möglichkeit, dass ich per Makro die Kennworte übergebe, sodass alle Verknüpfungen ohne die Nachfrage des Kennwortes aktuallisiert werden.
Falls ja, bitte etwas Qelltext als Beispiel anfügen...

Danke

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kennwort per Makro füllen
17.07.2023 09:55:38
UweD
Hallo

versuch es mal so.

Workbooks.Open Filename:="E:\Excel\Temp\DeineDatei.xlsx", UpdateLinks:=True, Password:="ABC"
LG UweD

AW: Kennwort per Makro füllen
17.07.2023 11:16:45
M Merlin
Vielen Dank für deine Rückmeldung.
Die Meldung kommt wie gewohnt. Jetzt werden zusätzlich die Dateien geöffnet. Ich möchte nicht z.B. 10 geöffnete Dateien haben, sondern es sollen nur die Verkupfungen aktuallisiert werden

AW: Kennwort per Makro füllen
17.07.2023 10:17:01
Ulf
Hi,
ich mache das, indem ich die Aktualisierung deaktiviere und es manuell anstoße oder auch nicht:
minimale Beispieldaten https://www.herber.de/bbs/user/159954.zip
Im Code der Arbeitsmappe

Option Explicit

Private Sub Workbook_Open()
    'So ist sichergestell, dass nach dem nächsten nicht mehr automatisch nachgefragt wird
    ThisWorkbook.UpdateLinks = xlUpdateLinksNever
    'Auskommentieren, wenn Verknüfungen nicht gewollt/nötig
    aktualisiereVerknüpfung
End Sub

Public Sub aktualisiereVerknüpfung()
    'So geht es manuell
    'Application.Workbooks.Open ThisWorkbook.Path & "\pw01.xlsx", True, False, , "tiger"
    'Application.Workbooks.Open ThisWorkbook.Path & "\pw02.xlsx", True, False, , "tiger2"
    'Application.Workbooks.Open ThisWorkbook.Path & "\pw03.xlsx", True, False, , "tiger3"
    Dim cn As Variant
    Dim strPw As String
    Dim wbFremd(2) As Workbook
    Dim intIndex As Integer
    Application.ScreenUpdating = False
    'Variante über Index
    For Each cn In ThisWorkbook.LinkSources
        intIndex = Val(Left(Right(cn, 7), 2))
        Select Case intIndex
            Case 1
                strPw = "tiger"
            Case 2
                strPw = "tiger2"
            Case 3
                strPw = "tiger3"
        End Select
        Set wbFremd(intIndex - 1) = Application.Workbooks.Open(cn, True, False, , strPw)
    Next
'    'Variante mit beliebigen Namen
'    For Each cn In ThisWorkbook.LinkSources
'        Select Case True
'            'Hier den kompletten Namen mit Pfad angeben
'            Case cn = ThisWorkbook.Path & "\pw01.xlsx"
'                intIndex = 0
'                strPw = "tiger"
'            Case cn = ThisWorkbook.Path & "\pw02.xlsx"
'                intIndex = 1
'                strPw = "tiger2"
'            Case cn = ThisWorkbook.Path & "\pw03.xlsx"
'                intIndex = 2
'                strPw = "tiger3"
'            '.....
'            'immer Paare Name Mappe und Index
'        End Select
'        Set wbFremd(intIndex) = Application.Workbooks.Open(cn, True, False, , strPw)
'    Next
    For intIndex = 0 To 2
        wbFremd(intIndex).Close False
    Next
    Application.ScreenUpdating = True
End Sub
hth
Ulf

Anzeige
AW: Kennwort per Makro füllen
17.07.2023 11:47:50
M Merlin
Danke. Für deine Hilfe. Dein Ansatz ist sehr gut.
Ich habe das für mich wie folgt abgeändert:

Option Explicit

Private Sub Workbook_Open()
    ThisWorkbook.UpdateLinks = xlUpdateLinksNever
    aktualisiereVerknüpfung
End Sub

Public Sub aktualisiereVerknüpfung()
    Dim cn As Variant
    Dim wbFremd() As Workbook
    Dim intFiles As Integer
    Dim intIndex As Integer
    intIndex = 0
    Application.ScreenUpdating = False

    For Each cn In ThisWorkbook.LinkSources

        ReDim Preserve wbFremd(intIndex)
        Set wbFremd(intIndex) = Application.Workbooks.Open(cn, True, False, , "PWD") 'wenn alle Dateien das gleiche Kennwort haben
        intIndex = intIndex + 1
    Next

    intFiles = UBound(wbFremd)
    For intIndex = 0 To Max
        wbFremd(intIndex).Close False
    Next
    Application.ScreenUpdating = True
End Sub

Anzeige
AW: Kennwort per Makro füllen
17.07.2023 11:52:18
M Merlin
5. letzte Zeile muss wie folgt heißen


For intIndex = 0 To intFiles

AW: Kennwort per Makro füllen
17.07.2023 12:26:47
Ulf
Hi
thx für die Meldung
ist ja immer noch irgendwie Krampf aber der leider einzig Gangbare
Hauptsache Ruhe und gut is
Grüße
Ulf

AW: Kennwort per Makro füllen
17.07.2023 14:20:05
M Merlin
Noch kürzer ginge es so:

Private Sub Workbook_Open()
    Dim LS As Variant
    Dim inti As Integer
    
    ThisWorkbook.UpdateLinks = xlUpdateLinksNever
    
    Application.ScreenUpdating = False
    LS = ActiveWorkbook.LinkSources
    For inti = 1 To UBound(LS)
        Workbooks.Open Filename:=LS(inti), Password:="PWD" ', WriteResPassword:="pwd"
        ActiveWorkbook.Close
    Next
    Application.ScreenUpdating = True
    
End Sub

Anzeige
AW: Kennwort per Makro füllen
17.07.2023 16:58:49
Luschi
Hallo Uwe & Ulf & M Merlin,

bei mir sieht die Aktualisierung der externen Verknüpfungen mit KW-geschützten Exceldateien so aus:
    For inti = 1 To UBound(LS)
        Workbooks.Open Filename:=LS(inti), UpdateLinks:=3, Password:="PWD", WriteResPassword:="pwd"
        ActiveWorkbook.Close
    Next
Gruß von Luschi
aus klein-Paris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige