VBA Code von fcs
02.01.2014 13:36:03
fcs
habe ein Problem mit einem alten Code:
Und zwar übertage ich den Code aus der alten Datei 2013 (https://www.herber.de/forum/archiv/1324to1328/t1324218.htm#1324218) auf eine neue Datei 2014. Es hat sich aber in der Originaldatei folgendes geändert:
Ich habe das Blatt geschützt, da hier Werte aus 2013 drin stehen die nicht mehr geändert werden sollen und dann erst die neuen Werte die für 2014 eingetragen werden (sind zur Bearbeitung frei). Durch den Blattschutz hat der Code jetzt aber ein Problem an der Stelle
.UsedRange.Value = .UsedRange.Value
Im Code wird ja eine Arbeitskopie angelegt, wie kann ich hier den Blattschutz automatisch entfernen? Hier ein Ausschnitt aus dem Code:
'temporäre Arbeitskopie speichern
strDatei = wbkHaupt.Path & "\" & Format(Now(), "YYYYMMDD_hhmmss") & "temp.xlsm"
wbkHaupt.SaveCopyAs Filename:=strDatei
Application.ScreenUpdating = False
'Arbeitskopie öffnen und mit dieser weiterarbeiten
Set wbkHaupt = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksHaupt = wbkHaupt.Worksheets("Buchungsvorlage") 'Name ggf. anpassen
With wksHaupt
'Alle Daten anzeigen, wenn Autofilter in Haptdatei aktiv
If .AutoFilterMode = True Then
If .FilterMode = True Then .ShowAllData
End If
'letzte Datenzeile
Zeile_AL = .Cells(.Rows.Count, 1).End(xlUp).Row
If Zeile_AL < 2 Then
MsgBox "Keine Abteilunsdaten in Tabelle"
Exit Sub
End If
'bedingte Formatierungen entfernen
.UsedRange.FormatConditions.Delete
'Formeln durch Werte ersetzen
.UsedRange.Value = .UsedRange.Value
'Datenmüll rechts von Spalte AV löschen
.Range(.Columns(.Range("AV1").Column + 1), .Columns(.Columns.Count)).Clear
.Range(.Rows(Zeile_AL), .Rows(Rows.Count)).Clear
.Range(.Rows(Zeile_AL), .Rows(Rows.Count)).EntireRow.Delete
.Range(.Columns(.Range("AV1").Column + 1), .Columns(.Columns.Count)).EntireColumn.Delete
Danke für die Hilfe.
VG Julia