Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wert aus aktiver Zelle in Makro übernehmen?

Wert aus aktiver Zelle in Makro übernehmen?
28.04.2005 09:05:37
Gerhard
Hallo Excel-Profis,
ich habe muss aus einem Excel-Tabellenblatt Links auf .pdf setzen. Allerdings sind meine User, die darauf zugreifen sollen teilweise nicht in der Lage einen Doppelklick auszuführen (Das soll's tatsächlich geben?!). Deswegen gibt es mit
Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)....
immmer Probleme. Meine Idee war nun, die Zelle mit dem Dateinamen zu markieren, und dan per Makro über einen Button die gewählte Datei zu öffnen. Folgendes Makro funtioniert super:

Sub Link()
Dim strDateiName As String, MyShell As Object, StrPfad As String, StrDtei As String
StrPfad = "\\Server\kataloge\"
StrDtei = "Katalog1"
Set MyShell = CreateObject("WScript.Shell")
strDateiName = StrPfad & StrDtei  & ".pdf"
strDateiName = Chr(34) & strDateiName & Chr(34)
MyShell.Run strDateiName
Set MyShell = Nothing
Cancel = True
End Sub

Nur wie schaffe ich es, "Katalog1" durch den Wert der aktiven Zelle zu ersetzen?
Weiß wer eine Möglichkeit?
Gruß
Gerhard
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert aus aktiver Zelle in Makro übernehmen?
28.04.2005 09:08:04
Gerhard
Hallo,
besser wäre noch, den Wert aus Spalte "A" der Zeile, in der die aktive Zelle ist.
Gruß
Gerhard
AW: Wert aus aktiver Zelle in Makro übernehmen?
28.04.2005 09:08:44
EtoPHG
Hallo Gerhard,
StrDtei = ActiveCell.Value
Gruss Hansueli
AW: Wert aus aktiver Zelle in Makro übernehmen?
28.04.2005 10:53:45
Gerhard
Hallo,
Danke für die Antworten. Nun bin ich mit noch ein wenig nachdenken und lesen hierauf gekommen.

Sub Link()
Dim strDateiName As String, MyShell As Object, StrPfad As String, StrDtei As String
StrPfad = "\\Server\kataloge\"
StrDtei = Cells(ActiveCell.Row, 1).Value
Set MyShell = CreateObject("WScript.Shell")
strDateiName = StrPfad & StrDtei & ".pdf"
strDateiName = Chr(34) & strDateiName & Chr(34)
MyShell.Run strDateiName
Set MyShell = Nothing
Cancel = True
End Sub

Doch wie kann ich noch den Fehler abfangen, wenn die Datei nicht vorhanden ist? In dem Fall landet der Debugger hier:
MyShell.Run strDateiName
Am besten wäre eine Textausgabe "DAtei nicht vorhanden" oder so ähnlich.
Wenn das noch klappt, bin ich wunschlos glücklich ;-)
Gruß
Gerhard
Anzeige
AW: Wert aus aktiver Zelle in Makro übernehmen?
28.04.2005 11:23:35
Kurt
If Dir(StrPfad & StrDtei & ".pdf") "" Then
'dein code
Else
MsgBox "nicht vorhanden"
End If
StrDtei = ActiveCell o.T.
28.04.2005 09:10:31
IngGi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wert aus aktiver Zelle in Makro übernehmen


Schritt-für-Schritt-Anleitung

Um den Wert aus der aktiven Zelle in einem VBA-Makro zu übernehmen, kannst du das folgende Vorgehen nutzen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)", wähle "Einfügen" und dann "Modul".
  3. Füge den folgenden Code ein:
Sub Link()
    Dim strDateiName As String, MyShell As Object, StrPfad As String, StrDtei As String
    StrPfad = "\\Server\kataloge\"
    StrDtei = Cells(ActiveCell.Row, 1).Value  ' Wert aus Spalte A der aktiven Zeile
    Set MyShell = CreateObject("WScript.Shell")
    strDateiName = StrPfad & StrDtei & ".pdf"
    strDateiName = Chr(34) & strDateiName & Chr(34)

    ' Überprüfung, ob die Datei existiert
    If Dir(StrPfad & StrDtei & ".pdf") <> "" Then
        MyShell.Run strDateiName
    Else
        MsgBox "Datei nicht vorhanden"
    End If

    Set MyShell = Nothing
End Sub
  1. Speichere dein Makro und schließe den Editor.
  2. Füge einen Button in dein Excel-Dokument ein, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht vorhanden" wird immer angezeigt.

    • Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei tatsächlich im angegebenen Verzeichnis vorhanden ist.
  • Fehler: Der VBA-Code führt nicht aus.

    • Lösung: Stelle sicher, dass du das Makro aktiviert hast. Gehe zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" und aktiviere die Makros.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Application.ActiveCell.Value, um den Wert direkt auszulesen:

StrDtei = Application.ActiveCell.Value

Diese Methode ist nützlich, wenn du den Wert der aktiven Zelle in einer anderen Subroutine oder Funktion verwenden möchtest.


Praktische Beispiele

Hier einige Beispiele, wie du das Makro anpassen kannst:

  1. Öffnen einer anderen Datei:

    • Ändere den Dateipfad in StrPfad, um eine andere Datei zu öffnen.
  2. Anzeigen einer Fehlermeldung:

    • Du kannst die MsgBox-Funktion anpassen, um eine spezifischere Fehlermeldung anzuzeigen.
MsgBox "Die Datei '" & StrDtei & ".pdf' ist nicht vorhanden."

Tipps für Profis

  • Fehlerbehandlung: Nutze On Error Resume Next, um mit unerwarteten Fehlern umzugehen.
  • Verwendung von Variablen: Überlege, Variablen für deinen Dateipfad und Dateinamen zu verwenden, um den Code leichter zu warten.
  • Debugging: Verwende Debug.Print für Ausgaben in das Direktfenster, um den Wert von Variablen während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich die aktive Zelle in einem anderen Arbeitsblatt auslesen? Du kannst die aktive Zelle in einem anderen Arbeitsblatt auslesen, indem du den Arbeitsblattnamen angibst:

StrDtei = Worksheets("Sheetname").Cells(ActiveCell.Row, 1).Value

2. Was passiert, wenn die aktive Zelle leer ist? Wenn die aktive Zelle leer ist, wird die Variable StrDtei leer sein, und der Code wird versuchen, eine Datei mit einem leeren Namen zu öffnen. Es ist sinnvoll, eine Überprüfung hinzuzufügen, um sicherzustellen, dass die Zelle nicht leer ist:

If ActiveCell.Value <> "" Then
    StrDtei = ActiveCell.Value
Else
    MsgBox "Die aktive Zelle ist leer."
End If

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige