Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speichern unter gleichem Dateinamen

Forumthread: Speichern unter gleichem Dateinamen

Speichern unter gleichem Dateinamen
10.06.2023 12:58:25
reiner

Hallo Leute,

https://www.herber.de/bbs/user/159527.xlsm
Hinweis: Beim Hochladen wurde die Datei in "159527.xlsm" umbenannt. Bitte diese Änderung im VBA-Editor, Modul "UserForm1" Zeile7 ab Spalte56 anpassen!!

Eine mit Dateiattribut"Schreibschutz EIN" versehene Datei wird geöffnet, bearbeitet und soll anschließend mit dem GLEICHEN Dateinamen erneut gespeichert werden.
Beim Speichervorgang wird das Dateiattribut"Schreibschutz EIN" durch "Schreibschutz AUS" ersetzt.
Wenn die daraufhin erscheinende Meldung: "DateiXXX.xlsm ist bereits vorhanden. Möchten Sie sie ersetzen? mit JA quittiert wird, erscheint die nächste Meldung mit dem Hinweis:"Laufzeitfehler 1004; Kann unter diesem Namen nicht speichern. Die Datei wurde schreibgeschützt geöffnet.
Das heißt für mich, dass die ursprünglich mit das Dateiattribut"Schreibschutz EIN" geöffnete Datei trotz mittlerweile deaktiviertem Schreibschutz die "interne" Information "mit Schreibschuz geöffnet" enthält.
Gibt es dennoch eine Möglichkeit diese "interne" Information zu deaktivieren und das Speichern unter GLEICHEM Dateinamen mit hinzugefügtem Dateiattribut"Schreibschutz EIN" zu ermöglichen?

mfG
reiner

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Speichern unter gleichem Dateinamen
10.06.2023 13:50:47
Nepumuk
Hallo Reiner,

teste mal:

Private Sub cmdbeenden_Click()
    With ThisWorkbook
        Call SetAttr(PathName:=.FullName, Attributes:=vbNormal)
        .Saved = True
        If .ReadOnly Then Call .ChangeFileAccess(Mode:=xlReadWrite)
    End With
    With Application.FileDialog(fileDialogType:=msoFileDialogSaveAs)
        .FilterIndex = 2
        .InitialFileName = Left$(ThisWorkbook.FullName, _
            Len(ThisWorkbook.FullName) - 5) & Format$(Date, "yyyymmdd")
        If .Show Then
            Application.DisplayAlerts = False
            Call .Execute
            Application.DisplayAlerts = True
            Call SetAttr(PathName:=.SelectedItems(1), Attributes:=vbReadOnly)
            Call ThisWorkbook.ChangeFileAccess(Mode:=xlReadOnly)
        End If
    End With
End Sub
Gruß
Nepumuk


Anzeige
Korrektur
10.06.2023 14:12:57
Nepumuk
Hallo Reiner,

ich denke, so war es gemeint:

Private Sub cmdbeenden_Click()
    Dim strPath As String
    With ThisWorkbook
        strPath = .FullName
        Call SetAttr(PathName:=.FullName, Attributes:=vbNormal)
        .Saved = True
        If .ReadOnly Then Call .ChangeFileAccess(Mode:=xlReadWrite)
    End With
    With Application.FileDialog(fileDialogType:=msoFileDialogSaveAs)
        .FilterIndex = 2
        .InitialFileName = ThisWorkbook.Path & "\Dateiname " & Format$(Date, "yyyymmdd")
        If .Show Then
            Application.DisplayAlerts = False
            Call .Execute
            Application.DisplayAlerts = True
            Call SetAttr(PathName:=.SelectedItems(1), Attributes:=vbReadOnly)
            Call ThisWorkbook.ChangeFileAccess(Mode:=xlReadOnly)
        End If
        Call SetAttr(PathName:=strPath, Attributes:=xlReadOnly)
    End With
End Sub
Gruß
Nepumuk


Anzeige
AW: Korrektur
10.06.2023 14:23:03
reiner
Hallo Nepumuk,
die Korrekturversion läuft einwandfrei und wie gewünscht, dafür herzlichen Dank
Eine Frage bleibt noch: Wie kann das Dateiattribut "h" versteckt verhindert werden?

reiner


AW: Korrektur
10.06.2023 14:25:36
Nepumuk
Hallo Reiner,

das wird in meinem Code nicht gesetzt.

Gruß
Nepumuk


Anzeige
AW: Korrektur
10.06.2023 14:35:59
reiner
Hallo Nepumuk,

soweit ich den Programmcode nachvollziehen kann ist -wie du schreibst- nicht ersichtlich wieso dieses Attribut "h" gesetzt wird. Es ist aber vorhanden.
Dennoch vielen Dank für die Unterstützung

reiner

;

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