Musterlösungen: Unterschied zwischen den Versionen
Pwania (Diskussion | Beiträge) |
Pwania (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Category:vba-wiki]] | |||
Die folgenden Musterlösungen sollen nicht als 'Standardlösungen' gelten, sondern lediglich die Suche nach passenden Beispielen zu ganz speziellen Aufgaben darstellen. | Die folgenden Musterlösungen sollen nicht als 'Standardlösungen' gelten, sondern lediglich die Suche nach passenden Beispielen zu ganz speziellen Aufgaben darstellen. | ||
Zeile 8: | Zeile 9: | ||
Öffnet die angegebene Datei in dem Programm, welches dafür vorgesehen ist. Eine Textdatei wird zum Beispiel standardmäßig im Notepad geöffnet. | Öffnet die angegebene Datei in dem Programm, welches dafür vorgesehen ist. Eine Textdatei wird zum Beispiel standardmäßig im Notepad geöffnet. | ||
Im Kopf des (Klassen-)Moduls (unter 'Option Explicit'): | |||
<span style="Color:gray">#</span><span style="Color:blue">If </span>VBA<span style="Color:gray">7</span><span style="Color:blue"> Then</span> | |||
<span style="Color:blue"> Private </span>Declare PtrSafe<span style="Color:blue"> Function </span>ShellExecute Lib <span style="Color:gray">"shell32.dll"</span> Alias <span style="Color:gray">"ShellExecuteA"</span> <span style="Color:gray">(</span><span style="Color:blue">ByVal </span>hwnd<span style="Color:blue"> As Long</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strOperation<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strFile<span style="Color:blue"> As String</span><span style="Color:gray">,</span> _<span style="Color:blue"> | |||
ByVal </span>strParameters<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strDirectory<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>lngShowCmd<span style="Color:blue"> As Long</span><span style="Color:gray">)</span><span style="Color:blue"> As Long</span> | |||
<span style="Color:gray">#</span><span style="Color:blue">Else</span> | |||
<span style="Color:blue"> Private </span>Declare<span style="Color:blue"> Function </span>ShellExecute Lib <span style="Color:gray">"shell32.dll"</span> Alias <span style="Color:gray">"ShellExecuteA"</span> <span style="Color:gray">(</span><span style="Color:blue">ByVal </span>hwnd<span style="Color:blue"> As Long</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strOperation<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strFile<span style="Color:blue"> As String</span><span style="Color:gray">,</span> _<span style="Color:blue"> | |||
ByVal </span>strParameters<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>strDirectory<span style="Color:blue"> As String</span><span style="Color:gray">,</span><span style="Color:blue"> ByVal </span>lngShowCmd<span style="Color:blue"> As Long</span><span style="Color:gray">)</span><span style="Color:blue"> As Long</span> | |||
<span style="Color:gray">#</span><span style="Color:blue">End If</span> | |||
Dazu passend die Prozedur: | |||
<span style="Color:blue">Public Sub </span>OpenFile<span style="Color:gray">(</span><span style="Color:blue">ByVal </span>strFullName<span style="Color:blue"> As String</span><span style="Color:gray">)</span> | |||
<span style="Color:green">' Prüfen, ob diese Datei existiert</span> | |||
<span style="Color:blue"> If </span>Dir<span style="Color:gray">(</span>strFullName<span style="Color:gray">)</span> <span style="Color:gray">=</span> <span style="Color:gray">""</span><span style="Color:blue"> Then Exit Sub</span> | |||
ShellExecute <span style="Color:gray">0,</span> <span style="Color:gray">"Open",</span> strFullName<span style="Color:gray">,</span> <span style="Color:gray">"",</span> <span style="Color:gray">"",</span> <span style="Color:gray">1</span><span style="Color:blue"> | |||
End Sub | |||
== Hyperlink öffnen == | == Hyperlink öffnen == | ||
Öffnet den Hyperlink im Standard-Browser. Wenn dieser schon läuft, wird ein neuer Reiter geöffnet. | |||
Im Kopf des (Klassen-)Moduls (unter 'Option Explicit'): | Im Kopf des (Klassen-)Moduls (unter 'Option Explicit'): | ||
Zeile 24: | Zeile 47: | ||
<span style="Color:blue">Public Sub </span>FollowHyperlink<span style="Color:gray">(</span><span style="Color:blue">ByVal </span>strHyperlink<span style="Color:blue"> As String</span><span style="Color:gray">)</span> | <span style="Color:blue">Public Sub </span>FollowHyperlink<span style="Color:gray">(</span><span style="Color:blue">ByVal </span>strHyperlink<span style="Color:blue"> As String</span><span style="Color:gray">)</span> | ||
ShellExecute <span style="Color:gray">0,</span> <span style="Color:gray">"Open",</span> <span style="Color:gray">"Explorer.exe",</span> <span style="Color:gray">"/e,"</span> & strHyperlink<span style="Color:gray">,</span> | <span style="Color:green">' WICHTIG: Der Hyperlink muss mit 'http://' bzw. 'https://' beginnen!</span> | ||
End Sub</span | <span style="Color:blue"> If </span>InStr<span style="Color:gray">(1,</span> strHyperlink<span style="Color:gray">,</span> <span style="Color:gray">"http",</span> vbTextCompare<span style="Color:gray">)</span> <span style="Color:gray">=</span> <span style="Color:gray">0</span><span style="Color:blue"> Then | ||
strHyperlink <span style="Color:gray">=</span> <span style="Color:gray">"http://"</span> & strHyperlink | |||
<span style="Color:blue"> End If</span> | |||
ShellExecute <span style="Color:gray">0,</span> <span style="Color:gray">"Open",</span> <span style="Color:gray">"Explorer.exe",</span> <span style="Color:gray">"/e,"</span> & strHyperlink<span style="Color:gray">,</span> <span style="Color:gray">"",</span> <span style="Color:gray">1</span><span style="Color:blue"> | |||
End Sub</span> |
Aktuelle Version vom 28. Januar 2023, 00:35 Uhr
Die folgenden Musterlösungen sollen nicht als 'Standardlösungen' gelten, sondern lediglich die Suche nach passenden Beispielen zu ganz speziellen Aufgaben darstellen.
Bei diesen Musterlösungen wird auf eine ausführliche Erklärung größtenteils verzichtet. Hier geht es nicht wie sonst in diesem Wiki um das Verständnis, sondern um eine funktionierende Lösung, die man gleich verwenden kann ;-)
Diese Lösungsvorschläge sind anwendungsunabhängig, wodurch sie also in Excel, PowerPoint und Word einsetzbar sind.
Datei in seinem Programm öffnen
Öffnet die angegebene Datei in dem Programm, welches dafür vorgesehen ist. Eine Textdatei wird zum Beispiel standardmäßig im Notepad geöffnet.
Im Kopf des (Klassen-)Moduls (unter 'Option Explicit'):
#If VBA7 Then Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal strOperation As String, ByVal strFile As String, _ ByVal strParameters As String, ByVal strDirectory As String, ByVal lngShowCmd As Long) As Long #Else Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal strOperation As String, ByVal strFile As String, _ ByVal strParameters As String, ByVal strDirectory As String, ByVal lngShowCmd As Long) As Long #End If
Dazu passend die Prozedur:
Public Sub OpenFile(ByVal strFullName As String) ' Prüfen, ob diese Datei existiert If Dir(strFullName) = "" Then Exit Sub ShellExecute 0, "Open", strFullName, "", "", 1 End Sub
Hyperlink öffnen
Öffnet den Hyperlink im Standard-Browser. Wenn dieser schon läuft, wird ein neuer Reiter geöffnet.
Im Kopf des (Klassen-)Moduls (unter 'Option Explicit'):
#If VBA7 Then Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal strOperation As String, ByVal strFile As String, _ ByVal strParameters As String, ByVal strDirectory As String, ByVal lngShowCmd As Long) As Long #Else Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal strOperation As String, ByVal strFile As String, _ ByVal strParameters As String, ByVal strDirectory As String, ByVal lngShowCmd As Long) As Long #End If
Dazu passend die Prozedur:
Public Sub FollowHyperlink(ByVal strHyperlink As String) ' WICHTIG: Der Hyperlink muss mit 'http://' bzw. 'https://' beginnen! If InStr(1, strHyperlink, "http", vbTextCompare) = 0 Then strHyperlink = "http://" & strHyperlink End If ShellExecute 0, "Open", "Explorer.exe", "/e," & strHyperlink, "", 1 End Sub