Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei neu machen

Forumthread: Datei neu machen

Datei neu machen
14.10.2024 18:48:48
guennih
Hallo ,
hat jemand ein Tool/Makro, das mir von einer Excel-Datei Blätter, Formeln, bedingte Formatierungen, Datenüberprüfungen ("nur" Listen mit Pulldown) und Namen ausliest und in eine neue Datei einträgt?


Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei neu machen
14.10.2024 19:00:09
RPP63
Moin!
Selbstverständlich kann man die Scherben einer zerbrochenen Vase mühsam zusammenkleben.
Viel besser wäre es, sie erst gar nicht fallen zu lassen!

Weniger kryptisch und genau anders herum:
Erstelle eine neue Mappe mit Blättern, Formeln, bedingten Formatierungen, Datenüberprüfungen ("nur" Listen mit Pulldown) und Namen.
Diese speicherst Du als .xltx (Excel-Vorlage).
Neue Dateien auf Basis dieser Vorlage erstellst Du mittels Datei → Neu
https://support.microsoft.com/de-de/office/speichern-einer-arbeitsmappe-als-vorlage-58c6625a-2c0b-4446-9689-ad8baec39e1e?

Gruß Ralf
Anzeige
AW: Datei neu machen: Formeln, bed. Formatierungen
15.10.2024 07:08:57
MCO
Moin, guennih!

Ich hab mir mal was gebaut, bei dem ich je nach Bedarf Zelen ein-/auskommentiere.
auch die Range musst du wahrscheinlich anders definieren, aber damit kommst du sicher klar.

Zum Formeln auslesen
Sub formel()

Dim zähler As Long
Dim rng As Range
Dim cl As Range
Dim frml As String
Dim frml_locl As String

On Error Resume Next
Set rng = Selection.SpecialCells(xlCellTypeFormulas)
'Set rng = Union(rng, Selection.SpecialCells(xlCellTypeConstants))

Dim dat As Variant
txt = "C:\Temp\test.txt"

Open txt For Output As #1

For Each cl In rng
zähler = zähler + 1
frml = cl.FormulaLocal
frml = Replace(frml, """", """""")
frml_locl = IIf(Left(frml, 1) = "=", ".formula2local", "")

' frml = Replace(frml, Chr(10), "") 'Umbrüche entfernen
' Do
' frml = Replace(frml, " ", " ") 'doppelte Leerzeichen entfernen
' Loop While InStr(frml, " ") > 0

Debug.Print ".Range(""" & cl.Address(0, 0) & """)" & frml_locl & " = """ & frml & """"
'Debug.Print ".Range(""" & cl.Address(0, 0) & """).numberformat = """ & cl.NumberFormat&; """"

'Debug.Print cl.Column & "," & cl.Row & "," & ".Range(""" & cl.Address(0, 0) & """).formulalocal = """ & frml & """"
'Debug.Print Split(frml, "+")(1) & Split(frml, "+")(2)

'Schreibt Zellinhalte in eine lokale Textdatei
' If frml > "" Then
' Print #1, ".Range(""" & cl.Address(0, 0) & """)" & frml_locl & " = """ & frml & """"
' End If

Next cl
Close #1
End Sub


Sub bedingte_formatierung_auslesen()


Dim rng As Range
Dim fc

For Each fc In ActiveSheet.Cells.FormatConditions

Set rng = Range(fc.AppliesTo.Areas(1).Address)

On Error Resume Next

With fc

Debug.Print "With Range(""" & fc.AppliesTo.Areas(1).Address & """)"
'Debug.Print ".FormatConditions(activesheet.FormatConditions.Count).SetFirstPriority"
Debug.Print " Set n_FC = .FormatConditions.Add (Type:=xlExpression, Formula1:=""" & Replace(.Formula1, """", """""") & """)"
Debug.Print " with n_FC"
Debug.Print " with .Interior"
If Not (IsNull(.Interior.PatternColorIndex)) Then Debug.Print " .PatternColorIndex = " & .Interior.PatternColorIndex
If Not (IsNull(.Interior.ThemeColor)) Then Debug.Print " .ThemeColor = " & .Interior.ThemeColor
If Not (IsNull(.Interior.TintAndShade)) Then Debug.Print " .TintAndShade = " & .Interior.TintAndShade

Debug.Print " End With" & Chr(13)
Debug.Print " with .font"
If Not (IsNull(.Font.ColorIndex)) Then Debug.Print " .Font.ColorIndex = " & .Font.ColorIndex
If Not (IsNull(.Font.Bold)) Then Debug.Print " .Font.bold = " & .Font.Bold * 1
If Not (IsNull(.Font.TintAndShade)) Then Debug.Print " .Font.TintAndShade = " & .Font.TintAndShade
Debug.Print " End With"
Debug.Print " .StopIfTrue = " & .StopIfTrue; ""
Debug.Print " End With"
Debug.Print "End With" & Chr(13)

Debug.Print "'" & WorksheetFunction.Rept("_", 50) & Chr(13)
End With
Next

End Sub


Bei Namen und Dropdowns hab ich nix
Gruß, MCO
Anzeige
AW: Datei neu machen
15.10.2024 21:38:58
Piet
Hallo

ist es nicht einfacher die ganze Tabelle in die neue Datei zu kopieren/ verschieben??
Und die Datei aus der verschoben wurde ohne zu speichern schließen.

mfg Piet
AW: Datei neu machen: Formeln, bed. Formatierungen
15.10.2024 12:31:52
guennih
Hallo MCO,
Vielen Dank für den Ansatz, Das bringt mich beim Selberschreiben auf ein bisschen einfachere Gedanken.
letztlich werde ich die bedingten Formatierungen manuell übertragen, nachdem ich mir die Liste und die Typen ausgegeben habe.
Wichtig sind immer die Listen, damit ich nichts vergesse von den vielen Features die sich im Laufe der Jahre angesammelt haben.
so sieht das aktuelle AusleseMakro aus:


Sub GH_Opt_ListConditions(Optional QuelBook As Workbook, Optional ZielStartRng As Range)
' wird Quelbook nicht angegeben, so wird das aufrufende Workbook verwendet
' wird ZielSartRng nicht angegeben, muss ein (leeres) Blatt mit dem Namen "BedFormat" in der Datei mit diesem Makro vorhanden sein

Dim BedForm As Variant
Dim BedForm_FC As FormatCondition
Dim BedForm_CS As ColorScale

Dim ZielRef As Range
Dim sh As Worksheet
Dim Zaehler

If QuelBook Is Nothing Then
Set QuelBook = ActiveWorkbook
End If
If ZielStartRng Is Nothing Then
Set ZielRef = ThisWorkbook.Sheets("BedFormat").Range("C3")
Else
Set ZielRef = ZielStartRng
End If

'--- Überschrift
ZielRef = "Nr"
ZielRef.Offset(0, 1) = "Blatt"
ZielRef.Offset(0, 2) = "Priority"
ZielRef.Offset(0, 3) = "AppliesTo"
ZielRef.Offset(0, 4) = "Formula1"
ZielRef.Offset(0, 5) = "PTCondition"
ZielRef.Offset(0, 6) = "StopIfTrue"
ZielRef.Offset(0, 7) = "Type"
Set ZielRef = ZielRef.Offset(1, 0)

Zaehler = 1
For Each sh In QuelBook.Worksheets
For Each BedForm In sh.Cells.FormatConditions
Debug.Print BedForm.AppliesTo.Address
ZielRef = Zaehler
ZielRef.Offset(0, 1) = sh.Name
ZielRef.Offset(0, 7) = BedForm.Type
ZielRef.Offset(0, 2) = BedForm.Priority
ZielRef.Offset(0, 3) = BedForm.AppliesTo.Address(external:=False)
Select Case BedForm.Type
Case 1, 2
Set BedForm_FC = BedForm
ZielRef.Offset(0, 4) = " " & BedForm_FC.Formula1
ZielRef.Offset(0, 5) = BedForm_FC.PTCondition
ZielRef.Offset(0, 6) = BedForm_FC.StopIfTrue

Case 3
Set BedForm_CS = BedForm
ZielRef.Offset(0, 4) = " Bedingungstyp Farbscala "
ZielRef.Offset(0, 5) = " Anzahl: " & BedForm_CS.ColorScaleCriteria.Count
ZielRef.Offset(0, 6) = " Mitte: " & BedForm_CS.ColorScaleCriteria.Item(2).Value

Case Else
ZielRef.Offset(0, 4) = " für diesen Bedingungstyp gibt es noch keine Listenausgabe"
ZielRef.Offset(0, 5) = " "
ZielRef.Offset(0, 6) = " "
End Select

Set ZielRef = ZielRef.Offset(1, 0)
Zaehler = Zaehler + 1

Next
Next
End Sub

Sub GH_ListConditions()
' Aufrufmakro, damit was in der ALT+F8-Liste erscheint
Call GH_Opt_ListConditions
End Sub

Anzeige
AW: Datei neu machen
14.10.2024 20:24:35
guennih
Danke Ralf,
Das Abspeichern als xlt wird mir aber sicher keine versteckten Fehler wie unsichtbare Namen o.ä. aus der Datei holen. Glaub das beeinflusst nur das Öffnen, dass es als "Mappexx" dargestellt wird.
hab schon selber begonnen, aber beim Auslesen der bedingten Formatierung gibts dann verschiedene Objekttypen in einer Auflistung was ich echt nervig finde beim Programmieren. Da hätt ich gern auf was fertiges oder fast fertiges zurückgegriffen.
viele Grüße,
Günther
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige