Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
404to408
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
404to408
404to408
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verknüpfung per VBA erstellen?!

Verknüpfung per VBA erstellen?!
01.04.2004 16:15:04
Andre
Hi nochmal,
jetzt kommt mal ein richtig kniffliges Problem, denke ich:
ich würde gerne per VBA eine Verknüpfung der Excel.exe auf dem Desktop generieren lassen, wobei (und jetzt kommt´s!) zum Einen der Pfad der Excel.exe rechnerspezifisch ist und zum Anderen die Zielangabe der Verknüpfung einen Zusatz erhalten soll, deren Werte in Variablen stecken.
Also nachher sollte die Veknüpfung z.B. folgende Zielzeile unter Eigenschaften besitzen:
"C:\Programme\Microsoft Office\Office\EXCEL.EXE" "c:\MeinProgramm\MeinProgramm 2.8.xls"
Das bedeutet allgemein, müßte die Zeile ungefähr so lauten:
Zielzeile = """" & Ziel der Excel.exe & """" & " """" & [Tabelle1!A1] & "\" & [Tabelle1!A2] & ".xls"""
Auf jeden fall so ähnlich, zur Veranschaulichung hat es hoffentlich gereicht, mir würde ja auch schon reichen, wenn mir jemand sagen könnte, wie ich überhaupt eine derartige Verknüpfung erstellen kann.
Danke für eure Hilfe.
Gruß Andre

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Verstehe ich nicht ganz ...
01.04.2004 17:52:48
Volker Croll
Hallo Andre,
erklaer doch mal, was und warum Du es genau so willst?!?! Denn wenn Du Deine .xls-Datei ueber eine Verknuepfung startest, wird doch die Excel.exe sowieso mitgestartet.
Gruss
Volker Croll
www.crolltools.de
AW: Verstehe ich nicht ganz ...
01.04.2004 18:06:45
Andre
Hi Volker,
ich brauche das Ganze, da sonst bei Öffnung einer Excel-Datei keine neue Application geöffnet wird. Mit dieser Lösung hab ich meine Datei immer in einer neuen Application, egal ob bereits eine andere geöffnet ist oder nicht.
Der Benutzer meiner Datei bewegt sich ausschließlich auf UserFormen, das bedeutet, andere, bereits geöffnete Excel-Dateien sind nicht zu bearbeiten, da die UF die gesamte Application blockiert.
In VBA brauche ich es, da ich ein automatisiertes Backup programmiert hab, das die Datei komplett löscht und die neue Datei vom Server in das Zielverneichnis kopiert. Und an dieser Stelle stimmt selbstverständlich auch die Verknüpfung auf dem Desktop nicht mehr, da die Versionskennziffer Teil des Dateinamens ist (z.B. MeinProgramm 2.8.xls).
Ich hoffe es ist deutlich geworden, wofür ich die Verknüpfung der Excel.exe benötige.
Oder du hast ´n anderen Plan, der sich einfacher umsetzen läßt, um immer eine neue Application zu öffnen?! Bin für jeden Vorschlag dankbar.
Gruß Andre
Anzeige
AW: Verstehe ich nicht ganz ...
01.04.2004 18:23:37
Bert
Warum nicht einfach deine Dialoge nonmodal anzeigen? Dann entfällt
der ganze Schnickschnack.
Bert
AW: Verstehe ich nicht ganz ...
02.04.2004 08:23:31
Andre
Nein, nonmodal kommt nicht in Frage. Das ist keine einfache Excel-Datei, in der ´n bißchen was addiert oder subtrahiert wird, ich bastel an einer aufwendigen Rechnungsverwaltung mit Verknüpfungen zu Access-Datenbanken, Word-Documenten sowie Outlook zur automatischen Email-Kommunikation.
Also es sollen nachher mindestens fünf Arbeitsplätze damit gleichzeitig arbeiten können, Aufträge, Rechnungen, Storno, Buchungsverwaltung, Debitorenverwaltung, Umsatzstatistiken usw., das volle Programm.
Auch das Layout wird angepasst, die Symbolleisten, Menüleiste sowie sonstige Einstellungen wie Bildlaufleisten, Statusleiste usw. werden beim Start zwar noch abgefragt, um sie beim Schließen wieder einzublenden, aber grundsätzlich werden Sie ausgeblendet, ebenso die Arbeitsmappe, die stets unter einer zweiten, als Statusleiste "getarnten" UF minimiert ist.
Sollte ich die UF auf Nonmodal setzten hätten die User die Möglichkeit problemlos auf die Tabellen Zugriff zu nehmen oder die Datei wohlmöglich zu speichern und die Datei sollte niemals gespeichert werden (!), da alle Eingaben entweder temporär sein sollen oder in die Datenbank geschrieben werden.
Ich glaube es wird schon sehr deutlich, welche Ausmaße mein Vorhaben bereits angenommen hat, daher bin ich auf diese Verknüpfung angewiesen, um auch weiterhin den Charakter eines "eigenständigen" Programms zu vermitteln und um das Speichern und Bearbeiten der Datei zu verhindern.
Gibt es denn keine Idee, um eine solche Verknüpfung zu erstellen?
Gruß Andre
Anzeige
AW: Verstehe ich nicht ganz ...
02.04.2004 12:06:21
Oberschlumpf
Hi Andre
Hört sich echt knifflig aber (noch) nicht unlösbar an :-)
Ich meld mich, wenn ich weiss, dass ich was weiss, oder wenn ich weiss, dass ich doch nix weiss ;-)
Ciao
Thorsten
AW: Verstehe ich nicht ganz ...
02.04.2004 12:13:19
Andre
Hi Thorsten,
das freut mich zu hören! Mir ist klar, daß das ´ne knifflige Kiste ist, aber ich hoffe, wir finden ´ne Lösung.
Ich freu mich auf deine Nachricht. Bis bald.
Gruß Andre
So weit, so gut, aber leider noch nicht komplett..
02.04.2004 14:23:10
Andre
Hi Leute,
also soweit bin ich schon: folgender Code legt mir eine Verknüpfung der Excel.exe auf dem Desktop an. Alles wie gewünscht, aber leider fehlt der ausgegrenzte Teil des Zielpfades (TargetPath), der auf meine Datei verweist. Unglücklicherweise waren alle Versuche vergeblich, den Textteil anzuhängen und die Verknüpfung korrekt aufrechtzuerhalten.
Kann mir jemand sagen, warum die Verknüpfung mit dem Ziel so nicht klarkommt? Bei manueller Erstellung lautet die Zeile genau so und dann haut es hin! Also warum nicht so?
Public myDeskName As String

Sub Create_Link_On_Desktop()
Dim wsh As Object
Dim myWSO As Object
Dim myDesktop As String
Set wsh = CreateObject("WScript.Shell")
myDesktop = wsh.SpecialFolders("Desktop")
myDeskName = "Test Verknüpfung"
Set myWSO = wsh.CreateShortcut(myDesktop & _
"\" & myDeskName & ".lnk")
With myWSO
.WindowStyle = 3
.IconLocation = "C:\Programme\Microsoft Office\Office\Excel.exe,3"
.WorkingDirectory = "C:\Programme\Microsoft Office\Office"
.TargetPath = """C:\Programme\Microsoft Office\Office\EXCEL.EXE"""     ' & """ """
& "C:\MeinProgramm\NächstesProgramm 3.2.xls"""
.Save
End With
Set wsh = Nothing
End Sub

Gruß Andre
Anzeige
AW: Verstehe ich nicht ganz ...
02.04.2004 14:36:33
Oberschlumpf
Hi Andre
Zuerst eine Info:
Die Befehlszeile der Verknüpfung, wie Du sie haben möchtest...
"""" & Ziel der Excel. exe & """" & " """" & [Tabelle1!A1] & "\" & [Tabelle1!A2] & ".xls"""
ergibt
"Pfad\Excel. exe" "MeinProgramm\MeinProgramm 2.8.xls"
und funktioniert so bei mir nicht.
Der Parameter darf nicht zwischen "" stehen.
Wenn ich die Befehlszeile so ändere...
"Pfad\Excel. exe" MeinProgramm\MeinProgramm 2.8.xls
...dann wird Excel UND der Anhang wie gewünscht gestartet.
Und nun zu meiner Idee
---------------------------------------------------------------------------
Also...ich weiss einen Lösungsansatz, aber leider passt er (noch) nicht ganz zu Deinem Problem :-)
Der Ansatz sieht aus wie folgt und wird, wie auch das Problem, weiter unten beschrieben.
Voraussetzung:
Im VBA-Editor muss der Verweis auf das Windows Scripting Host gesetzt sein.
Hierbei handelt es sich um den Verweis
Windows Script Host Object Model


Sub MakeDesktopShortcut()
        
    Dim wsh As New WshShell
    Dim sc As WshShortcut
    Dim sPath As String, sFile As String
    
    sPath = wsh.SpecialFolders.Item("Desktop")
    sFile = Sheets(1).Range("a1").Value & "\" & Sheets(1).Range("a2").Value & ".xls"
    Set sc = wsh.CreateShortcut(sPath & "\DeinName.lnk")
    sc.TargetPath = Application.Path & "\excel.exe" & Chr(34) & " " & sFile
    sc.Hotkey = "CTRL+ALT+Z"
    sc.Save
    Set wsh = Nothing
    
End Sub


     Code eingefügt mit Syntaxhighlighter 2.5

Mit diesem Code wird ohne Probleme eine Verknüpfung auf dem Desktop erstellt, die als Ziel...
...den Pfad zur Excel. exe enthält
...den Wert aus Tabelle1!A1 enthält (ich vermute, in A1 steht bei Dir der Pfad der Zieldatei)
...den Wert aus Tabelle1!A2 enthält (in A2 steht wohl der Dateiname, oder?)
Die Befehlszeile der Verknüpfung sieht so aus:
"F:\Büro\Microsoft Office\Office10\excel. exe" c:\MeinProgramm\MeinProgramm 2.8.xls"
und lässt sich NICHT so starten.
Das Problem ist das letzte Zeichen in der Befehlszeile.
Ich schaffe es leider nicht, das Anführungszeichen per VBA zu entfernen.
Wenn ich es manuell entferne (Rechtsklick auf Verknüpfung/Eigenschaften/Anführungszeichen löschen/OK), wird eine neue Excel-Instanz inklusive der Datei MeinProgramm 2.8.xls gestartet...yeahh :-)
Wenn Du es nun schaffst, dieses Anführungszeichen zu entfernen, oder diesen Code anderweitig anzupassen, und wenn dieses Beispiel zu all Deinem anderen VBA-Code passt, dann habe ich Dir helfen können ;-)
Wenn Du es geschafft hast, gib mal bitte die Lösung bekannt.
Ciao
Thorsten
P.S.
- Ich hoffe, Du hast meinem wirren Text folgen können :-)
- das Leerzeichen, welches ich immer VOR jedem EXE gesetzt habe, ließ sich leider nicht vermeiden, da ich sonst immer den Hinweis bekam, dass ich doch bitte keinen Link zu EXE- oder anderen ausführbaren Programmen posten soll.
Anzeige
AW: Verstehe ich nicht ganz ...
02.04.2004 14:38:20
Oberschlumpf
upps....nun hast Du selbst schon etwas gefunden....
aber leider auch noch nicht 100% ohne Probleme :-)
fremde Lorbeeren...
02.04.2004 14:45:25
Oberschlumpf
Hi
Hab versäumt, dass ich mich ncht mit fremden Lorbeeren schmücken möchte :-)
Den Code, den ich hier postete, habe ich diesem Link entnommen
https://www.herber.de/mailing/188402h.htm
Ciao :-)
Thorsten
Danke für deine Hilfe ....
02.04.2004 15:17:21
Andre
du hast völlig recht, mit meinem Lösungsansatz stehe ich vor gleichem Phänomen, die Verknüpfung funktioniert erst, wenn ich im Zielpfad das letzte " wegnehme! Ist ja ´n Ding, aber wie soll ich das per VBA wegkriegen, ich schreib´s ja noch nicht einmal hin, das wird automatisch generiert!
Vielleicht weiß noch jemand weiter?

Sub Create_Link_On_Desktop()
Dim wsh As Object
Dim myWSO As Object
Dim myDesktop As String
Set wsh = CreateObject("WScript.Shell")
myDesktop = wsh.SpecialFolders("Desktop")
myDeskName = "Test Verknüpfung"
Set myWSO = wsh.CreateShortcut(myDesktop & _
"\" & myDeskName & ".lnk")
With myWSO
.WindowStyle = 3
.IconLocation = "C:\Programme\Microsoft Office\Office\Excel.exe,3"
.WorkingDirectory = "C:\Programme\Microsoft Office\Office"
.TargetPath = "C:\Programme\Microsoft Office\Office\EXCEL.EXE" & """ """ & "C:\MeinProgramm\NächstesProgramm 3.2.xls"
.Save
End With
Set wsh = Nothing
End Sub

Gruß Andre
Anzeige
AW: Lösung ;-))
02.04.2004 18:20:39
andre
hallo andre,
schreibs so:
sc.TargetPath = Application.Path & "\excel.exe"
sc.Arguments = sFile
es gibt folgende parameter:
.TargetPath = ProgrammPfad
.IconLocation = ProgrammPfad
.Arguments = Parameter
.Description = Beschreibung
.WindowStyle = Fenstermodus
.WorkingDirectory = Arbeitsverzeichnis
.HotKey = Tastenkombination
gruss
der andre andré
AW: Lösung ;-))
02.04.2004 18:29:45
Oberschlumpf
huhuuuu :-)))
Jep! genau so!
Nun hab auch ICH die Lösung gefunden :-)
sc.Arguments ist der Schlüssel zum Erfolg :-)
Nun denn.
Andre Nr. 1 und Andre Nr. 2, die Zusammenarbeit war erfolgreich :-)
Ciao
Thorsten
Anzeige
Vielen Dank euch beiden.
05.04.2004 08:10:04
Andre
Funktioniert fantastisch.
Bis dann und
Gruß Andre
ich sag: thx for feedback :-)..o.T.
05.04.2004 09:35:35
Oberschlumpf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige