Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1340to1344
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code von fcs

VBA Code von fcs
02.01.2014 13:36:03
fcs
Hi,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code von fcs
03.01.2014 12:25:41
fcs
Hallo Julia,
mit deaktivieren und ggf. wieder aktivieren ds Blattschutzes muss es etwa wie folgt aussehen.
Wenn kein Passwort festgelegt istm dann kannst den Parameter in den beiden Zeilen weglassen.
Gruß
Franz
  '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
' Blattschutz deaktivieren
.Unprotect Password:="" 'Passwort angeben falls vorhanden
'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 

Anzeige
AW: VBA Code von fcs
03.01.2014 14:32:58
fcs
Vielen Dank, jetzt klappt es.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige