Guten Morgen
Ich habe eine, für mich Knacknuss zu lösen und komme nicht weiter.
Folgende Ausgangslage:
Ich möchte eine Tabelle aus meinem Planungstool (19MB gross) in ein neues File exportieren. Sourcefile hat Blattschutz.
Dabei sollen keine Formeln sondern nur die Werte eingefügt werden.
Alle Formate, inklusiv der Farben die aus der bedingten Formatierung stammen. Die bedingten Formate haben Formeln integriert welche nicht übernommen werden können.
Vereinzelte Zellen haben Informationen hinterlegt, die sollten ebenfalls aufrufbar sein.
Der Filename beim exportieren soll automatisch generiert werden. Filename = abcd_(Exportdatum Kalenderjahr_Kalenderwoche) --- abcd_2019_48.xlsx
Es glit noch anzumerken, wenn ich die Tabelle mit dem bestehenden Kopierfunktion (Kopie Tabelle in neue Arbeitsmappe) lade, kann ich das neue File nicht Speichern.
Ich würde mich sehr freuen, wenn mich bei diesem unterfangen jemand unterstützen könnte. Beispieldatei hochgeladen.
https://www.herber.de/bbs/user/133489.xlsx
Liebe Gruess
Richi
3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread
das Kopieren des Tabellenblatts solte mit folgendem Makro funktionieren. Passwörter muss du ggf im Code ergänzen.
Das Blatt wird zunächst innerhalb der Arbeitsmappe kopiert. Dann werden die Formeln durch Werte ersetzt.
Anschliessend wird das kopierte Blatt in eine neue Mappe verschoben.
Das Blatt wird umbenannt und die Datei wird gespeichert im gleichen Ordner wie die Quelldatei.
Die Laufzeit des Kopiermakros ist relativ lang - vermutlich wegen der Vielahl an Kommentaren oder Excels-Verzuch die externen Verknüpfungen in den bedingten Formatierungen aufzubauen..
Die bedingten Formatierungen gehen wahrscheinlich verloren. Das lässt sich auch nur schwierig bereinigen denn die Zellfarbe, die von der bedingten Formatierung komt kann nicht direkt abgefragt werden.
Es glit noch anzumerken, wenn ich die Tabelle mit dem bestehenden Kopierfunktion (Kopie Tabelle in neue Arbeitsmappe) lade, kann ich das neue File nicht Speichern.
Damit kann ich nichts anfangen. Das liegt möglichweise an irgendwechen Schutzeinstellungen.
LG
Franz
Sub Tabelenblatt_kopieren()
Dim wkb_Q As Workbook, wkb_Z As Workbook
Dim wks_Q As Worksheet, wks_Z As Worksheet
Dim strFilename As String
Dim StatusCalc As Long
Dim bolwbProtedStructur As Boolean
Dim bolwbProtedWindows As Boolean
Set wkb_Q = ActiveWorkbook
Set wks_Q = wkb_Q.Worksheets("Tabelle1") 'Name anpassen !
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.Calculate
End With
bolwbProtedStructur = wkb_Q.ProtectStructure
bolwbProtedWindows = wkb_Q.ProtectWindows
If (bolwbProtedStructur = True Or bolwbProtedWindows = True) Then _
wkb_Q.Protect Password:="", Structure:=False, Windows:=False
wks_Q.Copy after:=wkb_Q.Worksheets(wkb_Q.Sheets.Count)
Set wks_Z = wkb_Q.Worksheets(wkb_Q.Sheets.Count)
With wks_Z
.Unprotect Password:="" 'ggf. Passwort anpassen
With .UsedRange
.Copy
.PasteSpecial Paste:=xlPasteValues
End With
.Protect Password:="" 'ggf. Passwort anpassen
.Range("A1").Select
End With
wks_Z.Move
Set wkb_Z = ActiveWorkbook
wkb_Z.Worksheets(1).Name = wks_Q.Name
'Deutsche/ISO Kalenderwoche
strFilename = wkb_Q.Path & "\" & "abcd_" & Format(Date, "YYYY") & "_" & _
Format(Application.WorksheetFunction.IsoWeekNum(Date), "00")
'US-Kalenderwoche-1- Jan ist immer in KW 1
' strFilename = wkb_Q.Path & "\" & "abcd_" & Format(Date, "YYYY") & "_" & _
Format(Application.WorksheetFunction.WeekNum(Date), "00")
wkb_Z.SaveAs Filename:=strFilename, FileFormat:=51 'xlsx
wkb_Z.Close savechanges:=False
If (bolwbProtedStructur = True Or bolwbProtedWindows = True) Then _
wkb_Q.Protect Password:="", Structure:=bolwbProtedStructur, Windows:= _
bolwbProtedWindows
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
.EnableEvents = True
End With
End Sub
Nach anfänglichen Problemen mit dem Eingeben der Parameter im Programm, funktioniert das ganz prächtig. Herzlichen Dank.
Hab dennoch zwei Fragen:
1. Beim Kopieren der Tabelle werden auch Arbeitsmappen Verknüpfungen übernommen. Gibt es hierfür eine Lösung, dass diese Verknüpfung zum Schluss gelöscht oder zu Beginn gar nicht kopiert wird?
2. Gibt es eine Möglichkeit via VBA Bedingte Formatierung zu definieren?
Liebe Gruess
Richi
Frage1: Verknüpfungen
Die Verknüpfungen verschwinden wahrscheinlich, wenn in dem kopierten Blatt alle bedingten Formatierungen, die diese Verküpfung verwenden gelöscht werden.
Frage 2: bedingte Formatierungen per VBA
Ja kann man auch per VBA erstellen.
Als erster Ansatz mit dem Makro-Rekorder in der Datei mit dem kopierten Blatt
a) alle vorhandenen bedingten Formatierungen löschen und dann die gewünschten bedingten Formatierungen neu anlegen
oder
b) die vorhanden bedingten Formatierungen mit den Formeln und der Verknüpfung anpassen
Damit hast du ein Makro-Grundgerüst.
Wenn die Zeilenzahl in den kopierten Blättern unterschiedlich sein kann, dann muss der Code noch entsprechend angepasst werden.
Dieser Code muss dann in den vorhandenen integriert werden am besten als separates Makro, das vor dem speichern gestartet wird.
Bei der Anpassung des aufgezeichneten Makros kann ich wieder behilflich sein.
LG
Franz
Beliebteste Forumthreads (12 Monate)
-
ThreadtitelLesezugriffe
-
34292
-
23815
-
16961
-
16233
-
15683
-
15452
-
14478
-
12464
-
12034
-
11543
-
10808
-
10749
-
9686
-
9629
-
9547
-
9063
-
8903
-
8868
-
8519
-
8325
-
8040
-
8040
-
7946
-
7800
-
7695
-
7605
-
7282
-
7281
-
7206
-
7115
-
6942
-
6676
-
6541
-
6328
-
6310
-
6199
-
6085
-
6052
-
6047
-
5920
-
5868
-
5834
-
5833
-
5807
-
5745
-
5735
-
5683
-
5605
-
5585
-
5534
-
5433
-
5386
-
5384
-
5340
-
5314
-
5138
-
5130
-
5125
-
5117
-
5041
-
4977
-
4977
-
4927
-
4922
-
4813
-
4809
-
4772
-
4752
-
4738
-
4688
-
4685
-
4662
-
4612
-
4586
-
4582
-
4570
-
4569
-
4521
-
4517
-
4490
-
4488
-
4418
-
4415
-
4388
-
4385
-
4382
-
4359
-
4311
-
4304
-
4295
-
4276
-
4268
-
4252
-
4220
-
4192
-
4178
-
4163
-
4128
-
4086
-
4012