Office: Excel 2007 - eine Office-fremde Anwendung soll per Makro gestartet werden

Helfe beim Thema Excel 2007 - eine Office-fremde Anwendung soll per Makro gestartet werden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forum, innerhalb einer umfangreicheren Anwendung von Excel wäre es praktisch, wenn ich eine festgelegte aber Office-fremde Anwendung per Makro... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fette Elfe, 18. April 2012.

  1. fette Elfe Erfahrener User

    Excel 2007 - eine Office-fremde Anwendung soll per Makro gestartet werden


    Hallo Forum,

    innerhalb einer umfangreicheren Anwendung von Excel wäre es praktisch, wenn ich eine festgelegte aber Office-fremde Anwendung per Makro starten könnte.
    Ich habe nur keine Ahnung ob dies überhaupt machbar ist?
    Z.Bsp. mittels API, oder könnte man eventuell den Mausklick auf das Datei-Icon simmulieren? Oder wie auch immer.
    Der Pfad und der Dateiname sind jedenfalls bekannt und konstant.

    Wenn ich den Thread nicht komplett falsch verstanden habe hat hier:
    http://www.ms-office-forum.net/forum/showthread.php?t=273265
    wohl jemand eine SAP-Anwendung aus Excel heraus gestartet.

    Leider funktioniert der Code bei mir nicht.
    Es erscheint folgende Fehlermeldung:
    Ich bin gespannt ob sich damit jemand auskennt und weiterhelfen kann.

    Danke im Vorraus für Eure Zeit und Ideen.
    Gruß Achim
     
    fette Elfe, 18. April 2012
    #1
  2. Beverly
    Beverly Erfahrener User
    Beverly, 19. April 2012
    #2
  3. miriki Erfahrener User
    Es macht einen gewaltigen Unterschied, "was" Du öffnen möchtest, weil sich danach richtet, wie es geöffnet wird.

    Im stinknormalen Windows-Explorer macht es keinen Unterschied, im Source aber wohl: Willst Du
    a) ein ausführbares Programm starten (.com, .exe, .bat, ...)?
    b) eine Datei öffnen, die mit einer Anwendung verknüpft ist (.bmp, .doc, .xls, ...)?

    Für a) kannst Du "run" benutzen, für b) wäre "open" angesagt. Und das gibt's jeweils auch noch in verschiedenen Varianten, die sich u.a. darin unterscheiden, wieviel Kontrolle Du nach dem Start über die fremde Applikation haben willst.

    Für b) eine "fire and forget" Lösung:
    Code:
    Private Const SE_ERR_NOASSOC As Long = 31&
    
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hWnd As Long, _
        ByVal Operation As String, _
        ByVal Filename As String, _
        Optional ByVal Parameters As String, _
        Optional ByVal Directory As String, _
        Optional ByVal WindowsStyle As Long = vbMaximizedFocus _
        ) As Long
        
    Public Function LaunchDocument( _
        ByRef Filename As String, _
        Optional ByVal ParentForm As Form, _
        Optional ByVal ShowOpenWithDialog As Boolean = False, _
        Optional ByVal WindowStyle As VBA.VbAppWinStyle = vbMaximizedFocus _
        ) As Boolean
    
        Dim lSuccess As Long
        Dim hWndParent As Long
    
        If Not ParentForm Is Nothing Then
            hWndParent = ParentForm.hWnd
        End If
        lSuccess = ShellExecute(hWndParent, "Open", Filename, vbNullString, vbNullString, WindowStyle)
        Select Case lSuccess
            Case Is > 32
                LaunchDocument = True
            Case SE_ERR_NOASSOC
                If ShowOpenWithDialog Then
                    Shell "rundll32 shell32.dll,openas_rundll " & Filename
                    LaunchDocument = True
                End If
            Case Else
                LaunchDocument = False
        End Select
    
    End Function
    Das Ding hab ich jetzt mal auf die Schnelle aus einem Access-Modul rauskopiert. Den Kram mit "ParentForm" wirst Du wohl amn ein paar Stellen entfernen müssen, aber ansonsten dürfte das Ding eigentlich ziemlich ohne Änderung laufen.

    Gruß, Michael
     
    miriki, 19. April 2012
    #3
  4. fette Elfe Erfahrener User

    Excel 2007 - eine Office-fremde Anwendung soll per Makro gestartet werden

    Hallo Karin,

    ganz lieben Dank, Du hast mir mit dem Link extrem weiter geholfen.
    Der Code
    Code:
    [FONT=Courier New][COLOR=#000080]Option[/COLOR] [COLOR=#000080]Explicit[/COLOR]
    
    [B][COLOR=#000080]Declare[/COLOR] [COLOR=#000080]Function[/COLOR] ShellExecute [COLOR=#000080]Lib[/COLOR] [COLOR=#800000]"SHELL32.DLL"[/COLOR] _
        Alias [COLOR=#800000]"ShellExecuteA"[/COLOR] ([COLOR=#000080]ByVal[/COLOR] hwnd [COLOR=#000080]As[/COLOR] Long, [COLOR=#000080]ByVal[/COLOR] lpOperation [COLOR=#000080]As[/COLOR] String, _
        [COLOR=#000080]ByVal[/COLOR] lpFile [COLOR=#000080]As[/COLOR] String, [COLOR=#000080]ByVal[/COLOR] lpParameters [COLOR=#000080]As[/COLOR] String, [COLOR=#000080]ByVal[/COLOR] lpDirectory [COLOR=#000080]As[/COLOR] String, _
        [COLOR=#000080]ByVal[/COLOR] nShowCmd [COLOR=#000080]As[/COLOR] [COLOR=#000080]Long[/COLOR]) [COLOR=#000080]As[/COLOR] [COLOR=#000080]Long[/COLOR][/B]
    
    [B][COLOR=#000080]Sub[/COLOR] Open_File(strFileName [COLOR=#000080]As[/COLOR] String, windowType [COLOR=#000080]As[/COLOR] [COLOR=#000080]Integer[/COLOR])[/B]
        ShellExecute 0, [COLOR=#800000]"Open"[/COLOR], strFileName, "", "", windowType
    [B][COLOR=#000080]End[/COLOR] [COLOR=#000080]Sub[/COLOR][/B]
    
    [B][COLOR=#000080]Sub[/COLOR] test()[/B]
        [COLOR=#008000]'1 = vbNormalFocus[/COLOR]
        [COLOR=#008000]'2 = Minimized[/COLOR]
        [COLOR=#008000]'3 = Maximized[/COLOR]
        Open_File [COLOR=#800000]"c:\DeineDatei.txt"[/COLOR], 1
    [B][COLOR=#000080]End[/COLOR] [COLOR=#000080]Sub[/COLOR][/B][/FONT]
    
    
    funktioniert auf Anhieb. (und er ist schön kurz und übersichtlich)


    *****************************************************

    Hallo Michael,

    auch Dir ganz lieben Dank (Du warst einer von denen, auf dessen Antwort ich gehofft hatte).
    ;O)
    Da der Code aus Karins Link für mich super passt, wirst Du es mir hoffentlich verzeihen wenn ich Deinen nicht erst anpasse (bisher bin ich auch noch nicht wirklich durchgestiegen).

    Aber um Deine (berechtigten) Fragen zu beantworten:
    Da Excel ja nur mit einem kostenpflichtigen Add-In in der Lage ist Barcodes zu generieren bzw. darzustellen, wird hierfür das Programm "DesignPro" benutzt.
    Es ist kostenlos, kann Excel-Listen verarbeiten, und ist im Arbeitsalltag inzwischen ein unverzichtbares Tool für alle erdenklichen Arten von Etiketten geworden. (kann ich nur jedem empfehlen)
    http://www.chip.de/downloads/Avery-Zweckform-DesignPro_43740624.html

    Wenn man nun damit eine Vorlage erstellt und abspeichert, erhält man eine ".zdl".
    Klickt man diese an, öffnet sich das Programm und die Vorlage ist direkt geladen.

    Um genau diese Vorlagendateien geht es.

    Nun kann ich aus Excel heraus die Datenlisten erstellen, bereitstellen oder was auch immer, und zusätzlich sogar die passende Etikettenvorlage direkt aufrufen.
    In DesignPro die Datenbank zu aktualisieren und die Etiketten zu drucken geht zwar wohl nicht per Makro, aber so ist es schonmal ein riesen Schritt.

    Wenn ich ehrlich bin hatte ich es gehofft, aber eigentlich nicht damit gerechnet das es geht.

    Danke und Gruß
    Achim
     
    fette Elfe, 19. April 2012
    #4
  5. miriki Erfahrener User
    hi hi... Dabei ist beides prinzipiell das Gleiche...

    Die Routine oben, der Einzeiler, startet über die Windows-API eine Applikation, die mit der Datei (respektive deren Erweiterung) verknüpft ist.

    Meine Routine macht genau das gleiche, ist nur noch um ein bißen was erweitert: Wenn die Datei nicht mit einer Anwendung verknüpft ist, dann wird versucht, die Datei über eine Alternative zu öffnen. Außerdem gibt die Routine zurück, ob der Aufruf erfolgreich war.

    Die obige Zeile ist aber in der Tat der Kern des Ganzen.

    Gruß, Michael
     
    miriki, 20. April 2012
    #5
Thema:

Excel 2007 - eine Office-fremde Anwendung soll per Makro gestartet werden

Die Seite wird geladen...
  1. Excel 2007 - eine Office-fremde Anwendung soll per Makro gestartet werden - Similar Threads - Excel 2007 Office

  2. Makros in Excel 2007 aktivieren

    in Microsoft Excel Hilfe
    Makros in Excel 2007 aktivieren: Fehler 57121
  3. Umstellung von Office 2007 auf 2016

    in Microsoft Excel Hilfe
    Umstellung von Office 2007 auf 2016: Hallo und guten Tag, mit vba habe ich in Excel Office 2007 ein ziemlich umfangreiches Makro programmiert. Jetzt soll bei uns die Umstellung auf Office 2016 stattfinden. Muß ich damit rechnen,...
  4. Wenn funktion in VBA

    in Microsoft Excel Hilfe
    Wenn funktion in VBA: Hallo zusammen, ich habe da ein kleines Problem, wie kann ich dieses Funktion =WENN(F19="";G19;F19) in VBA Code umwandeln? Im VBA bin ich grad nicht der beste. Hoffe jemand kann mir helfen....
  5. Office 2007 - Open-Office öffnet Excel-Dateien nur schreibgeschützt

    in Microsoft Excel Hilfe
    Office 2007 - Open-Office öffnet Excel-Dateien nur schreibgeschützt: Hallo Forum, einer unserer Kunden bekommt jeden Tag per Mail mehrere Excel-Dateien von uns. Leider arbeitet dieser Kunde nicht mit MS-Office, sondern mit Open-Office. Wechseln möchte unser Kunde...
  6. Formelproblem mit Microsoft Office Excel 2007

    in Microsoft Excel Hilfe
    Formelproblem mit Microsoft Office Excel 2007: Hallo an alle Mitglieder im Office-Hilfe.com Forum. Wir sind neu hier und haben gleich am Anfang ein großes Problem und wir hoffen uns kann geholfen werden. Wir arbeiten zurzeit mit...
  7. Microsoft Office 2007 Excel Speicherproblem!

    in Microsoft Excel Hilfe
    Microsoft Office 2007 Excel Speicherproblem!: Hi @ll! Sitz gerade in da Firma und habe ein Problem mit Excel, und zwar: Ich mache eine neue Excelmappe auf und speichere diese. Danach hole ich mir von einer anderen Excel Datei eine...
  8. Excel Fehler! Office 2003 und 2007 werden parallel betrieben

    in Microsoft Excel Hilfe
    Excel Fehler! Office 2003 und 2007 werden parallel betrieben: Hallo, folgendes Problem: Ich muss im Quartal 3/08 Office 2007 parallel zu Office 2003/XP einführen. Hierbei sollen die alten Dateitypen mit Office 2003/XP geöffnet werden die neuen aber mit...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden