Office: (Office 2007) Macro ActiveWorksheet.Name mit Wildcard möglich?

Helfe beim Thema Macro ActiveWorksheet.Name mit Wildcard möglich? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen Sorry wenn meine Frage für die meisten von euch etwas banal erscheint aber ich bin nicht gerade ein Profi was das erstellen von VBA... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von hansi9990, 15. Mai 2015.

  1. Macro ActiveWorksheet.Name mit Wildcard möglich?


    Hallo zusammen

    Sorry wenn meine Frage für die meisten von euch etwas banal erscheint aber ich bin nicht gerade ein Profi was das erstellen von VBA Makros in Excel angeht ;)
    Ich möchte den Name der gerade aktiven Excel Liste abfragen und dann entweder sofort ein externes tool mit übergabe des Pfad und Dateiname ausführen oder das ganze noch mit einem vorherigen Dateidialog zum speichern der Datei ausführen, dafür habe ich mir dieses Makro erstellt:

    Code:
    Sub Export_to_Labview_Worksheet()
    '
    ' Export_to_Labview_Worksheet Makro
    ' Excel Arbeitsmappe zu Labview exportieren
    '
    ' Tastenkombination: Strg+Umschalt+L
    '
    Dim para As String
    If ActiveWorkbook.Name = "LAB*PV.xls" Then
        para = ActiveWorkbook.FullName
        Shell ("L:\builds\Excel_export\Excel_export.exe -- ") & para
        Else
            Application.Dialogs(xlDialogSaveAs).Show
            para = ActiveWorkbook.FullName
            Shell ("L:\builds\Excel_export\Excel_export.exe -- ") & para
        End If
    End Sub
    Grundsätzlich funktioniert zumindest das ausführen des externen Programmes aber die Abfrage nach dem ActiveWorkbook.Name mit der enthaltenen Wildcard scheint so nicht zu funktionieren. Hat jemand einen Tip wie ich sowas zu Laufen bekomme?
     
    hansi9990, 15. Mai 2015
    #1
  2. fette Elfe Erfahrener User
    Hallo hansi,

    ist jetzt nur auf die schnelle getestet, aber probier doch mal dies:
    Code:
    If ActiveWorkbook.Name Like "LAB*PV" Then
    Das Gleichheitszeichen durch "Like" ersetzen und beim Dateinamen die Endung weglassen.
     
    fette Elfe, 16. Mai 2015
    #2
  3. Danke für die Info, habe es gerade erst jetzt und nach einigen Stunden intensiver Rechereche auch gefunden, es geht bei mir auch mit der Endung und sieht so aus:

    Code:
    Sub Export_to_Labview_Worksheet()
    '
    ' Export_to_Labview_Worksheet Makro
    ' Excel Arbeitsmappe zu Labview exportieren
    '
    ' Tastenkombination: Strg+Umschalt+L
    '
    Dim para As String
    Dim WshShell As Object
    Set WshShell = CreateObject("Wscript.Shell")
        If ActiveWorkbook.Name Like "LAB*-PV.xls" Then
        para = ActiveWorkbook.FullName
        WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
        Else
        Application.Dialogs(xlDialogSaveAs).Show
        para = ActiveWorkbook.FullName
        WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
        End If
    End Sub
    Jetzt habe ich noch zwei Fragen,
    1. wenn ich das Makro starte wird Excel beendet, also nicht wirklich denn es läuft noch ein Prozess im Hintergrund der dann zu andere Probleme führt, ich befürchte fast das Excel abstützt, kann das daran liegen das ich eine "Personal.xls" unter C:\Program Files (x86)\Microsoft Office\Office12\XLSTART abgelegt habe damit das Makro global verfügbar ist, gibt es evtl. eine bessere Methode oder hat jemand einen Tip warum Excel sich so verhält?

    2. Möchte ich noch das bei einem Abbruch des "Application.Dialogs(xlDialogSaveAs).Show" der darauf folgende Befehl "WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para" übersprungen wird, wie könnte ich das machen?
     
    hansi9990, 16. Mai 2015
    #3
  4. fette Elfe Erfahrener User

    Macro ActiveWorksheet.Name mit Wildcard möglich?

    Tut mir leid, da kann ich leider garnichts zu sagen. Vielleicht kann jemand anderes helfen?


    Probiere es doch mal so in der Art:
    Code:
    Dim blnSaveAs As Boolean
    
    blnSaveAs = Application.Dialogs(xlDialogSaveAs).Show
    If blnSaveAs = True Then
        ' mach das eine
    Else
        ' mach was anderes
    End If
     
    fette Elfe, 16. Mai 2015
    #4
  5. Hallo Achim

    Hezlichen Dank, das scheint so zu funktionieren. :)

    Mein Code sieht jetzt so aus:

    Code:
    Sub Export_to_Labview_Worksheet()
    '
    ' Export_to_Labview_Worksheet Makro
    ' Excel Arbeitsmappe zu Labview exportieren
    '
    ' Tastenkombination: Strg+Umschalt+L
    '
    Dim para As String
    Dim WshShell As Object
    Dim blnSaveAs As Boolean
    Dim byWert As Byte
    Set WshShell = CreateObject("Wscript.Shell")
        If ActiveWorkbook.Name Like "LAB*-PV.xls" Then
            para = ActiveWorkbook.FullName
            byWert = MsgBox("Änderungen speichern?", 1, "Schalterabfrage")
                If byWert = 1 Then
                    ActiveWorkbook.Save
                    WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
                ElseIf byWert = 2 Then
                    WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
                End If
        Else
        blnSaveAs = Application.Dialogs(xlDialogSaveAs).Show
        If blnSaveAs = True Then
            para = ActiveWorkbook.FullName
            WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
        End If
        End If
    End Sub
    
    Gibt es eine Methode zum Abfragen ob es Änderungen am ActiveWorkbook gibt die bisher nicht gespeichert wurden?

    PS: Mein Problem mit beenden von Excel ist auch gefunden, es lag an meinem LabView Tool (Excel_export.exe) das ich gebaut habe welches die Liste in ein Array schreibt und dieses widerum als .bin speichert, es wurde keine neue Instanz von Excel geöffnet und so dann das offene abgewürgt.
     
    hansi9990, 16. Mai 2015
    #5
  6. fette Elfe Erfahrener User
    Ob eine Mappe generell schon einmal gespeichert wurde, und auch ob sie nach der letzten Speicherung verändert wurde oder nicht, kann man mit der Eigenschaft "Saved" abfragen:
    Code:
    If ThisWorkbook.Saved = True Then
    Freut mich, dass Du das andere Problem selber lösen konntest.
     
    fette Elfe, 16. Mai 2015
    #6
  7. Nochmal danke für die Unterstützung. :)

    Habe es gerade versucht aber das funktioniert irgendwie nicht.
    Ich verstehe auch den Unterschied zwischen ThisWorkbook und ActiceWorkbok noch nicht, was aber egal ist denn in beiden Fällen funktioniert diese Abfrage nicht.
    Habe es mal so
    Code:
    If ActiveWorkbook.Saved = False Then
    MsgBox "Änderungen speichern?"
    End If
    und so
    Code:
    If ThsiWorkbook.Saved = False Then
    MsgBox "Änderungen speichern?"
    End If
    und so
    Code:
    If ActiveWorkbook.Saved = True Then
    MsgBox "Änderungen speichern?"
    End If
    und so
    Code:
    If ThisWorkbook.Saved = True Then
    MsgBox "Änderungen speichern?"
    End If
    und so auch noch
    Code:
    If Not ActiveWorkbook.Saved Then
    MsgBox "Änderungen speichern?"
    End If
    gemacht aber egal wie entweder kommt die MsgBox immer oder gar nicht und das unabhängig davon ob ich eine Änderung am Workbook vorgenommen habe oder nicht.
    Bist du sicher das diese Funktion korrekt ist?


    PS: Halt es geht doch, mein Makro sieht jetzt so aus und scheint das zu machen was ich möchte :)
    Code:
    Sub Export_to_Labview_Worksheet()
    '
    ' Export_to_Labview_Worksheet Makro
    ' Excel Arbeitsmappe zu Labview exportieren
    '
    ' Tastenkombination: Strg+Umschalt+L
    '
    Dim para As String
    Dim WshShell As Object
    Dim blnSaveAs As Boolean
    Dim byWert As Byte
    para = ActiveWorkbook.FullName
    Set WshShell = CreateObject("Wscript.Shell")
        If ActiveWorkbook.Name Like "LAB*-PV.xls" Then
            If Not ActiveWorkbook.Saved Then
            byWert = MsgBox("Änderungen speichern?", 1, "Die Liste wurde verändert!")
                If byWert = 1 Then
                    MsgBox "Konvertierung wird durchgeführt!"
                    ActiveWorkbook.Save
                    WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
                ElseIf byWert = 2 Then
                    MsgBox "Konvertierung wird durchgeführt!"
                    WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
                End If
                Else
                MsgBox "Konvertierung wird durchgeführt!"
                WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
            End If
        Else
        blnSaveAs = Application.Dialogs(xlDialogSaveAs).Show
        If blnSaveAs = True Then
            MsgBox "Konvertierung wird durchgeführt!"
            WshShell.Run "L:\builds\Excel_export\Excel_export.exe " & para
        End If
        End If
    End Sub
    
     
    Zuletzt bearbeitet: 16. Mai 2015
    hansi9990, 16. Mai 2015
    #7
  8. fette Elfe Erfahrener User

    Macro ActiveWorksheet.Name mit Wildcard möglich?

    Hallo hansi,

    zuerst einmal muss ich mich entschuldigen.
    Du fragst nach "ActiveWorkbook" und ich antworte mit "ThisWorbook". Das habe ich übersehen.



    ;) Ja, ich bin sicher dass das so korrekt ist. Und da Du nichts weiter erklärt hast, habe ich keine Ahnung was bei Dir nicht funktioniert hat.
    Die Eigenschaft "Saved" steuert zum Beispiel, ob man beim schliessen einer Mappe gefragt wird, ob vorher noch gespeichert werden soll.
    Eigentlich ist das alles ganz einfach und vorhersehbar:
    - Du öffnest eine neue Mappe - "Saved" bleibt solange auf "False" bis Du die Mappe das erste Mal speicherst.
    - Du hast eine bereits gespeicherte Mappe geöffnet und veränderst etwas - "Saved" ändert sich in "False"
    - Du speicherst Deine Mappe - "Saved" ändert sich in "True"
    Nun kommt der etwas unübersichtliche Teil, und ich vermute, dass der Dich bei Deinen Tests verwirrt hat.
    Als Änderung einer Mappe wird nicht nur gewertet, wenn man etwas in eine Zelle schreibt, etwas löscht, o.ä.
    Es können auch Änderungen auftreten, die Du so garnicht warnimmst: eine Neuberechnung der Formeln wird ausgelöst (bekommt man meist nie mit), eine Bedingte Formatierung wird neu überprüft, ein Makro verändert etwas oder lösst etwas entsprechendes aus, usw.
    D.h. auch wenn Du glaubst, dass Deine Datei ja garnicht verändert wurde, muss das noch lange nicht so sein.

    Den aktuellen Zustand kannst Du Dir so:
    Code:
    MsgBox ThisWorkbook.Saved
    ganz einfach anzeigen lassen. Wenn Du damit ein wenig spielst, verstehst Du es vielleicht besser.



    Manchmal ist beides das gleiche, und manchmal nicht. :) :) :)

    Ist eigentlich auch ganz einfach:
    "ThisWorkbook" bezeichnet die Mappe, in der dieser Code steht. Damit kann man also ganz eindeutig auf diese Mappe referenzieren, und egal mit wievielen Mappen man gerade gleichzeitig arbeitet, es kann keine andere Mappe betroffen sein, als die wo halt dieser Code drinn steht.
    "ActiveWorkbook" bezeichnet die Mappe, die gerade den Focus hat, die also gerade die aktive ist. Das kann sich ständig ändern, und es kann die Mappe sein wo der Code drinn steht, es kann aber auch eine ganz andere sein. Hier muss man also beim Programmieren immer genau aufpassen, ob man wirklich sicher sein kann, dass die gemeinte Mappe auch die aktive ist.
    Beispiel:
    Du öffnest Mappe1 und schreibst dort hinein einen Code der eine neue Mappe (Mappe2) öffnet. Dann lässt Du diesen Code laufen.
    Mappe1 wird immer "ThisWorbook" sein, das ändert sich nicht. Gleichzeitig ist sie auch "ActiveWorkbook" solange Du den Code schreibst. In dem Moment wo Du ihn aber laufen lässt, und Dein Code Mappe2 öffnet, wird Mappe2 zu "ActiveWorkbook".

    Ich hoffe das ist für Dich jetzt besser verständlich?
     
    fette Elfe, 17. Mai 2015
    #8
  9. Und erneut möchte ich mich für die ausführliche Unterstützung und Hilfe bei dir herzlich bedanken, jemand wie ich (der keine Ahnung hat was er da genau machtMacro ActiveWorksheet.Name mit Wildcard möglich? :rolleyes:) ist darauf besonders angewiesen. ;)

    Ich hatte wohl gestern einen Fehler gemacht den ich jetzt irgendwie nicht mehr nachvollziehen kann denn heute funktioniert es wie von dir beschrieben. :)

    Dann ist bei mir "ActiveWorkbook" richtig denn um globalen Zugriff auf das Makro zu gewährleisten habe ich eine "Personal.xlsb" unter ..\AppData\Roaming\Microsoft\Excel\XLSTART" abgelegt die mit Excel gestartet wird und bei "ThisWorkbook" würde das Makro dann nur auf diese angewendet.
     
    hansi9990, 17. Mai 2015
    #9
Thema:

Macro ActiveWorksheet.Name mit Wildcard möglich?

Die Seite wird geladen...
  1. Macro ActiveWorksheet.Name mit Wildcard möglich? - Similar Threads - Macro ActiveWorksheet Name

  2. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  3. Macro Fehler Subscript out of Range

    in Microsoft Excel Hilfe
    Macro Fehler Subscript out of Range: Hallo Zusammen, ich muesste aus ca. 500 pdf's mit teilweise 90 oder evtl. sogar mehr Seiten, ein paar Daten auslesen. Ich habe ein Makro, dass ich vor Jahren benutzt habe, mit dem ich erst die...
  4. SICHERHEITSRISIKO Microsoft hat die Ausführung von Macros blockiert, ...

    in Microsoft Word Hilfe
    SICHERHEITSRISIKO Microsoft hat die Ausführung von Macros blockiert, ...: Hallo, ich habe seit 2 Tagen ein Problem. Ich habe seit Wochen Macros programmiert und konnte diese immer ausführen. Jedoch seit 2 Tagen bekomme ich immer obige Fehlermeldung auf rötlichem...
  5. Macro zum spreichern

    in Microsoft Excel Hilfe
    Macro zum spreichern: Hallo zusammen, ich suche eine Möglichkeit, per Macro ein Tabellenblatt als csv zu speichern. Der Pfad steht auf einem anderen Blatt. Dieser sollte dort ausgelesen werden, da die Datei auf...
  6. Excel Macro durch Sheets springen und informationen sammeln?

    in Microsoft Excel Hilfe
    Excel Macro durch Sheets springen und informationen sammeln?: Frohes Neues Liebe Leute, Vielleicht kann mir wer helfen, ich komm hier einfach nicht mehr weiter.. L Ich versuche aktuell ein Macro zu schreiben das durch die offenen Sheets in einem Workbook...
  7. Excel Macro automatischen Suchen in Zeilen und TextBox

    in Microsoft Excel Hilfe
    Excel Macro automatischen Suchen in Zeilen und TextBox: Hallo, Hoffe vielleicht das von euch jemand eine Idee hat hier bei meinem Problem. Denke mal der Code ist ziemlich unsauber, aber er funktioniert :D hehe, mein größeres Problem ist das er bei...
  8. Excel Macro

    in Microsoft Excel Hilfe
    Excel Macro: Hallo, Ich möchte mir ein Macro erstellen mit dem ich ein Datum aus zwei Zellen links von der ausgewählten Zelle + eine bestimmte Zahl addiere. Kann mir jemand sagen wie ich dieses Macro erstelle?...
  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