Clever-Excel-Forum

Normale Version: Makro soll auch ."xlsm" und ".xlsx" Dateien öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ein Makro das vor mehr als 10 Jahren geschrieben wurde, zur Zeit der ".xls" Endung, müsste auch Dateien mit den aktuellen Endungen öffnen.
Da es zu komplex ist als dass ich es wirklich verstehen könnte, verstehe ich nicht, welche Aenderungen vorgenommen werden müssen.
In dem Makro wird eine Funktion aufgerufen, in der die Endung ".xls" zweimal vorkommt. Ich habe schon mit ".xlsm" und ".xlsx" experimentiert, aber ohne Erfolg.
Ist es in dieser Funktion wo das festgelegt wird? Ich finde sonst nirgendwo eine Stelle mit der Endung.

Code:
Function simpleCellRegex(quelle As String) As String
   Dim regEx As New RegExp
   Dim strPattern As String
   Dim strInput As String
   Dim strReplace As String
   Dim strOutput As String
   Dim Zwischen As String
   


   strPattern = "\s+[A-Z]+.xls$"

   If strPattern <> "" Then
       strInput = quelle
       strReplace = ""

       With regEx
           .Global = True
           .MultiLine = True
           .IgnoreCase = False
           .Pattern = strPattern
       End With

       If regEx.test(strInput) Then
           Zwischen = regEx.Replace(strInput, strReplace)
           simpleCellRegex = Trim(Replace(Replace(strInput, Zwischen, ""), ".xls", ""))
       Else
           simpleCellRegex = ""
       End If
   End If
End Function
Mit freundlichen Grüßen
Alooha
Hi
Schon mal xls* probiert ?
Igel
Hallo,
Danke für den Tipp.
Das ändert leider nichts am Problem.
MfG
Alooha
Dieser Code bedeutet


Code:
strPattern = "\s+[A-Z]+.xls$"


das am Ende einer Zeile (das $) ".xls" steht.

Versuche:


Code:
strPattern = "\s+[A-Z]+xls.$"


Der Punk vor $ bedeutet "jedes Zeichen".

Der "Replace"-Befehl muss auch noch geändert werden.
Hallo,
du meinst das:

Code:
simpleCellRegex = Trim(Replace(Replace(strInput, Zwischen, ""), ".xls", ""))
?
Was bedeuten eigentlich die Gänsefüsschen hinter dem xls?

Muß ich es so ändern:

Code:
simpleCellRegex = Trim(Replace(Replace(strInput, Zwischen, ""), "+xls.$", ""))
?  oder die Gänsefüßchen weg?

Diese Sache blockiert mich total; es hat funktioniert, tut es jetzt aber nicht mehr, d.h. die Dateien die geöffnet werden sollen werden es nicht (es geht darum, Daten aus monatlichen Blättern in jährlichen zu sammeln, weil man für verschiedene Berechnungen wissen muß wie es die ersten Tage vom nächsten Monat aussieht was die Arbeitszeiten anbelangt).
MfG
Alooha
Hallo Alloha

der Code den du da mit dem Kollegen entwickelst ist mir einfach zu hoch.  Dafür habe ich eina andere Idee, weiss aber nicht ob sie dir gefaellt.  Alternative Lösung ist, den ganzen Sorurce Ordner mit allen Dateien aufzulisten, und durch ein "X" die Datei markieren die man danach Öffnen will.  Anbei eine Beispieldatei mit umgeschriebenem Code.

mfg  Gast 123
Hallo,

jeder Code der seine Aufgabe erfüllt gefällt mir!

Ein Wort zur Erklärung:
Bei der anderen Aufgabe bei der du geholfen hast, ging es darum, den Inhalt von Blättern in identische (ausser die Formeln, die nicht die selben sind wie in den alten) rüberzukopieren.
Dies ist die nächste Etappe: Kopieren der selben Daten von den monatlichen in jährliche Blätter, da es Berechnungen gibt, die sich nicht strikt auf einen Monat beschränken können; auf diese Weise hat man immer, mit einem Monat Verspätung, auch die Daten der ersten Tage des nächsten Monats zur Verfügung.
Es müssen auch wieder für alle Personen für die es kein Blatt gibt, Blätter erstellt werden.
Eine Besonderheit: in den monatlichen Blättern sind die Zellen, die die Daten enthalten, zwei zu zwei vertikal verbunden; diese Verbindung muß zuerst gelöst werden (unmerge), da die Zellen in den Zielblättern nicht verbunden sind.

Mit freundlichen Grüßen
Alooha
Hallo

im Prinzip sieht ein Code zum anhaengen der Daten aus monatlichen Blaetter in die Jahres Übersicht wie unten aus:  Wie man die monatlichen Blaetter festlegen kann, z.B. die monatlichen Workbook Namen aus den Zellen der Sourceliste zu laden, wurde bereits beschrieben.  Einen Code der das ganze automatisiert kannst du damit selbst zusammenbasteln.  Viel Erfolg...   

mfg  Gast 123

Code:
Sub Moatlich_kopieren()
Dim WbM As Workbook
Dim WbSht As Worksheet
Set WbM = Workbooks("Monatliche Blätter.xlsx")
Set WbSht = WbM.Worksheets("Name des Blattes")
 
With ThisWorkbook.Worksheets("Modèle")
    lz = .Cells(Rows.Count, 2).End(xlUp).Row + 1
     
    WbSht.Range("F5:AC66").Copy
    .Cells(lz, 2).PasteSpecial xlPasteValues
     Application.CutCopyMode = False

  'Was soll in Spalte A kopiert werden ??
  'in Monatliche Blaetter gibt es A + B !!
End With
End Sub
Hallo,

ich hatte vergessen, die Aera zu definieren, die kopiert werden muß: Nach dem Lösen der Verbindungen in dem monatlichen Blatt müssen die Daten dort sortiert werden, und dann die Zellen F5:AC36 der monatlichen Blätter in die Zellen ab B16:Y16 in die jährlichen kopiert werden.
MfG
Alooha