Dateiauswahlbox auf Excel Arbeitsblatt

Hallo

Ich versende ein geschütztes Excel Arbeitsblatt an Kunden und die sollten in der Lage sein, direkt auf dem Blatt die Verlinkung zu einem externen Blatt zu ändern. Der Befehl im Menu ist ja bei geschützten Blättern nicht möglich.

Wie kann ich so eine Dateiauswahlbox direkt auf dem Arbeitsblatt platzieren. Ich versteh leider von VBA gar nix, wäre also für eine pfannenfertige Lösung sehr dankbar.

Gruss aus Prag

Heinz

Hallo Heinz,

hier ist gar kein VBA vonnöten. Man kann nämlich den Schutz für einzelne Zellen in dem ansonsten geschützten Arbeitsblatt aufschließen, so dass diese beschrieben / bearbeitet werden können.

Vor dem Schutz der Arbeitsmappe bitte die Zelle oder den Zellbereich markieren, im Menü auf „Format“, dann „Zellen…“ klicken. Im Reiter „Schutz“ den Haken bei „Gesperrt“ entfernen.

Dann die Tabelle ganz normal schützen.

Gruß
Natator

Hier gibt es Tipps, keine Lösungen!

Hallo Waldemar

Klar, war ja auch nur ein Wunsch (so ganz ahnungslos bin ich nicht). Eine Dateiauswahlbox kreigte ich per VBA schon noch hin, aber ich brauche eben die spezeille für die externen Links?

Hier gibt es Tipps, keine Lösungen!

@Natator: Das was Du schreibst weiss ich schon, aber ich brauche wie gesagt, die Dateinauswahl für die externen Links auf dem Arbeitsblatt, nicht durch den Menubefehl, der ist gesperrt.

Dank für alle TIPPS!

Hallo Heinz Lyner,

ich weis nicht genau, welche ‚Verlinkung‘ du hier meinst.
Versuche doch mit dem Makro-Recorder. Zeichne Aktionen auf, die du per Makro ausführen möchtest und passe dieses aufgezeichnete Makro an.
Die meisten Menü-Befehle kann man auch im Makro ausführen (ohne die Menüleiste).

MfG.
W.W.

Hallo Heinz,
füge ein Textfeld in das Blatt und schreibe den Link in das Textfeld. Dann gehe auf >>Extras>>Schutz>>Blatt. Entferne das Häkchen bei „Objekte“ im Fenster Blatt schützen. Das Blatt ist geschützt, aber der Inhalt im Textfeld kann geändert werden.
Gruß, John.

Hallo John

Da alles ist mir ja klar, aber Du musste verstehen, dass ich von meinen Kunden nicht verlangen kann, dass sie dann dort den Pfad z.B. „E:/Dokumente/WeissWas für Ordner/UNterordner/excel.xls“ eintragen, das sind meist absolute Laien! Es muss eine Dateiauswahlbox hin.

Und Dein Vorschlag löste ja das Problem der Links nicht!

Gruss

Heinz

Hallo Heinz,

eine Pfannenfertige Version könnte ich nicht erstellen.
Auf länger Hinsicht könnte ich etwas in dieser Richtung erstellen. Das würde aber Zeit kosten, die ich aktuell nicht hätte.
Tut mir leid.

MfG
Michael

Hallo Heinz

Wennst nur eine Zelle frei geben willst zum verändern.
Dann markier das gesamte blatt.
dann rechte maustaste
auf zellen formatieren klicken
dann register blatt schutz auswählen.
das häckchen weg bei gesperrt.
die eine zelle mit den link.
rechte maustaste klicken
auf zellen formatieren klicken
dann register blatt schutz auswählen.
das häckchen setzen bei gesperrt.

dann hast die eine zelle mit den link freigeben zum bearbeiten.
der rest ist aber gesperrt.

lg fred

Hallo Heinz,

das Makro unten fragt in einem Dateiauswahldialog nach den Dateien, durch die die vorhandenenen Verknüpfungen ersetzt werden sollen.

Bei geschützten Tabellenblättern muss der Schutz vor dem Wechseln der Verknüpfungen aufgehoben werden.

Falls der Schutz mit Kennwort erfolgt, dann muss dieses im Code mit angegeben werden. In diesem Fall solltest du natürlich das VBA-Projekt ebenfalls per Kennwort schützen und die Anzeige des VBA-Projektes sperren (im VBA-Editor via Extras–> Eigenschaften VBA-Projekt). Wenn der Anwender das Kennwort kennt, dann kann man dieses natürlich auch abfragen. Dann wird das Makro etwas komplizierter, da eine entsprechende Input-Box eingebaut werden muss.

Zum Starten des Makros im Tabellenblatt eine Schaltfläche aus den Formular-Steuerelementen einfügen und das Makro zuweisen.

Gruß
Franz

'Erstellt unter Excel 2007
'Code in einem allgemeinen Modul
Sub Verknuepfung\_zu\_QuelleWechseln()
 Dim wb As Workbook
 Dim varVerknuepfung
 Dim varVerknuepfungNeu
 Dim varTab, intTab As Integer
 Dim strVerzeichnisVerkn As String
 Dim strPW As String
 On Error GoTo Fehler
 Set wb = ActiveWorkbook
 strVerzeichnisVerkn = wb.Path & Application.PathSeparator
 For Each varVerknuepfung In wb.LinkSources(Type:=xlExcelLinks)
 With Application.FileDialog(msoFileDialogOpen)
 .Title = "Andere Datei für Verknüpfung """ & varVerknuepfung & """ auswählen"
 .InitialView = msoFileDialogViewDetails
 .FilterIndex = 3 'ist in Excel normalerweise = Exceldateien
 .InitialFileName = strVerzeichnisVerkn 'Startverzeichnis für Dateiauswahl
 If .Show = -1 Then
 varVerknuepfungNeu = .SelectedItems(1)
 'Verzeichnis der Verknüpfung für ggf. weitere Vernüpfungen merken
 strVerzeichnisVerkn = Left(varVerknuepfungNeu, \_
 VBA.InStrRev(varVerknuepfungNeu, Application.PathSeparator))
 If MsgBox("Alt: " & varVerknuepfung & vbLf \_
 & "Neu: " & varVerknuepfungNeu, \_
 vbQuestion + vbOKCancel, "Wechseln Verknüpfung") = vbOK Then
 If varVerknuepfung varVerknuepfungNeu Then
 'Für alle Tabellenblätter in denen die Verknüpfung vorkommt muss der \_
 Blattschutz aufgehoben werden
 'im Array Index-Nummern oder Namen (in Anführungszeichen) der Blätter angeben
 varTab = Array(1)
 strPW = "MyTest" 'hier ggf. Kennwort für Blattschutz angeben
 For intTab = LBound(varTab) To UBound(varTab)
 Worksheets(varTab(intTab)).Unprotect Password:=strPW
 Next intTab
 wb.ChangeLink Name:=varVerknuepfung, NewName:=varVerknuepfungNeu, \_
 Type:=xlLinkTypeExcelLinks
 'Tabellenblätter wieder schützen
 For intTab = LBound(varTab) To UBound(varTab)
 Worksheets(varTab(intTab)).Protect Password:=strPW
 'Falls der Blattschutz mit bestimmten Optionen erfolgen soll, dann \_
 müssen diese angegeben werden
' Worksheets(varTab(intTab)).Protect Password:=strPW, DrawingObjects:=True, \_
 Contents:=True, Scenarios:=True, AllowInsertingRows:=True, AllowSorting:=True, \_
 AllowFiltering:=True
 Next intTab
 End If
 End If
 Else
 MsgBox "Die Verknüpfung """ & varVerknuepfung & """ wurde nicht geändert!", \_
 vbInformation + vbOKOnly, "Wechseln Verknüpfung"
 End If
 End With
 Next
 Err.Clear
Fehler:
 With Err
 Select Case .Number
 Case 0 'Alles OK
 Case 9
 MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf \_
 & "Blatt mit " & IIf(VBA.TypeName(varTab(intTab)) = "String", "Name """, \_
 "Index-Nummer """) & varTab(intTab) & """" & " ist in Datei nicht vorhanden"
 Case Else
 MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
 End Select
 End With
End Sub

Hallo Herr Lyner,

wenn man ein Blatt schütz, kann man doch bestimmte aktionen zulassen. Wie ist es denn wenn SIe die Zelle mit einer Dropdown-Auswahlliste füllen?

Gruß Hugo

hallo Heinz,
leider kann ich dir nicht weiter helfen dazu müsste ich mehr wissen und sehen, wenn du möchtest kannst du mir ein Muster von dem Arbeitsblatt schicken,meine E-Mail lautet [email protected]
Gruß Bernd

Das war, was ich gesucht habe, danke!

Hallo,
habe leider keine schnelle Lösung.
Kp