Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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

Speicherort ändern zwecks sonderzeichen

Speicherort ändern zwecks sonderzeichen
07.02.2020 10:04:50
kai
Hallo zusammen,
hab hier noch ein kleines Problemchen mit einem Code und hoffe auf eure Hilfe.
Schonmal ein Mega Dankeschön an Nepumuk, der den Großteil des Codes erstellt hat.
Nun zu meinem Problem:
Es geht darum, anhand von Zellvorgaben (Speicherpfad Zell "P68", Speichername Zelle "P69 einen Neuen Ordner zu erstellen und ein PDF + xlsm inkl. Abfrage ob vorhanden darin zu speichern.
Das ganze klappt auch mit denm Angehängten code. Nur ist es jetzt so, dass es vorkommen kann, dass der Speichername mal ein unzulässiges Zeichen beinhaltet (" : " / " > ") da ist eine Speicherung natürlich nicht möglich. Hierzu habe ich eine Inputbox erstellt in der nach der Fehlermeldung der geänderte Name vergeben werden kann.
Leider wird der geänderte Name nich in die Zelle "P69" übertragen.
Gruß Kai
Hoffe Ihr könnt mir erneut helfen
Option Explicit
Private Declare

Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long

Sub Ordner_PDF_XLSM()
Dim DateiName As String
Dim Pfad As String
Dim lw_pfad As String
Dim strFolder As String
Dim lngRetun As Long
With Worksheets("Angebot")
strFolder = .Range("p68").Value
If Right$(strFolder, 1)  "\" Then strFolder = strFolder & "\"
strFolder = strFolder & .Range("p69").Value
If Right$(strFolder, 1)  "\" Then strFolder = strFolder & "\"
lngRetun = MakeSureDirectoryPathExists(strFolder)
If lngRetun = 0 Then
MsgBox "Fehler beim erstellen   ungültiges Zeichen im Ordnername (Zelle P 69).",  _
vbCritical, "Fehler"
End If
DateiName = Sheets("Angebot").Range("p69").Value
DateiName = InputBox("Geben Sie hier den Pfad an, wo die Datei gespeichert werden soll." & Chr(  _
_
13) & Chr(13), "Datei speichern unter...", DateiName)
If DateiName = "" Then
MsgBox "Die Datei wird nicht gespeichert, da Sie [Abbrechen] gedrückt oder nichts eingegeben   _
_
haben.", , "Abbruch"
Exit Sub
Else
If Right(DateiName, 1)  "\" Then DateiName =DateiName & "\"
Sheets("Angebot").Range("P69").Value = DateiName
End If
DateiName = strFolder & .Range("p69") & "___" & Format(Date, "DD_MM_YYYY") & ".pdf" '!!! _
_
If Dir$(DateiName)  vbNullString Then
If MsgBox("Das PDF existiert bereits." & vbLf & vbLf & _
"Überschreiben?", vbYesNo Or vbQuestion, "Abfrage") = vbYes Then
.Range("C55:K116").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=DateiName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
Else
.Range("C55:K116").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=DateiName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
DateiName = strFolder & .Range("p69").Value & "___" & Format(Date, "DD_MM_YYYY") & ". _
xlsm"
If Dir$(DateiName)  vbNullString Then
If MsgBox("Die XLSM existiert bereits." & vbLf & vbLf & _
"Überschreiben?", vbYesNo Or vbQuestion, "Abfrage") = vbYes Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=DateiName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.DisplayAlerts = True
MsgBox "Die Datei wurde unter " & DateiName & " gespeichert.", _
vbExclamation, "OK"
End If
Else
ActiveWorkbook.SaveAs Filename:=DateiName, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
MsgBox "Die Datei wurde unter " & DateiName & " gespeichert.", _
vbExclamation, "OK"
End If
End With
MsgBox "````Endlich geschafft :-)````"
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speicherort ändern zwecks sonderzeichen
07.02.2020 11:56:40
kai
noch Niemand ne Idee?
AW: Speicherort ändern zwecks sonderzeichen
07.02.2020 14:46:19
Curly
Hi Kai,
du kannst z.b. mit Regex auf "verbotene" Zeichen prüfen oder nur bestimmte freigeben
Function Datei_Benennung(Name As String) As Boolean
Dim objRegex As Object, objMatch As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True 'Global-Eigenschaft bestimmt, ob nur die erste gefundene Suchstelle zurü _
ckgegeben werden soll, wenn der Ausdruck mehrfach matcht
.MultiLine = True 'MultiLine bestimmt, ob Zeilenumbrüche im Suchstring dazu führen,  _
dass jede Zeile als eigener Ausdruck behandelt werden soll
.Pattern = "[^a-zA-Z0-9_]" 'Suchmuster
.IgnoreCase = True 'IgnoreCase bestimmt, ob zwischen Groß- und Kleinschreibung  _
unterschieden wird
Set objMatch = .Execute(Name) 'Dagegen wendet die Execute-Methode den Ausdruck zunächst  _
an und speichert das Ergebnis in Objekten vom Typ Match, die wiederum in einem MatchCollection-Objekt zusammengefasst sind.
End With
"Erlaubte Zeichen sind: a-z, A-Z, 0-9 und Unterstrich _"
If objMatch.Count > 0 Then Datei_Benennung = True Else Datei_Benennung = False
Set objRegex = Nothing
Set objMatch = Nothing
End Function

Anzeige
AW: Speicherort ändern zwecks sonderzeichen
10.02.2020 06:48:27
Kai
Hallo Curley,
danke für deine Hilfe, aber das hilft mir leider nicht weiter.
Wie gesagt die Zelle um die es sich handelt (Speichername) setzt sich aus mehreren ansderen Zellen zusamen. Darunter auch die Zeichnungsnummer der Verschiedenen Werkstücke. Da kann es eben vorkommen , dass die Zeichnungsnummer mal ein Sonderzeichen beinhaltet und das sollte nicht verändert werden.
Gruß Kai
AW: Speicherort ändern zwecks sonderzeichen
10.02.2020 11:16:11
Curly
Moin Kai,
der Code verändert kein Zelleninhalt. Er überprüft nur ob "Sonderzeichen" vorkommen.
Ob sich der Pfad aus mehreren Zellen zusammensetzt , spielt keine Rolle.
Man kann Dateien aber nur ohne Sonderzeichen speichern, also versteh ich das Problem nicht wirklich.
Gruß Curly
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige