Anzeige
Archiv - Navigation
1800to1804
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

Dateiname auffüllen

Dateiname auffüllen
16.12.2020 15:08:31
Ulrich
Hallo,
ich habe eine kurze Frage.
Mit folgendem Code speichere ich eine Datei mit einem aus 2 Zellen ( M1 und H1) zusammengesetzten Namen ab.
Wenn in H1 nur z.B. eine 1 steht, sollte der Wert H1 mindestens 3 stellig in den Namen eingehen, d. h. mit "001".
Kann mir jemand helfen? Danke vorab.
Gruß Ulli
Call objTargetWorkbook.SaveAs(Filename:=strPath & .Range("M1").Value & _
.Range("H1").Value & ".xlsx", FileFormat:=xlOpenXMLWorkbook)

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname auffüllen
16.12.2020 15:12:10
Hajo_Zi
Hallo Ulli,
Format( .Range("H1"),"000")

AW: Dateiname auffüllen
16.12.2020 15:19:46
Ulrich
Danke für die schnelle Antwort.
AW: Dateiname auffüllen
16.12.2020 15:13:50
Nepumuk
Hallo Ulli,
so:
Format$(.Range("H1").Value, "000")
Gruß
Nepumuk
AW: Dateiname auffüllen
16.12.2020 15:18:50
Ulrich
top !! Danke
AW: Dateiname auffüllen
16.12.2020 15:28:31
Ulrich
Hallo Nepumuk,
bei diesem Code bringt er mir folgenden Fehler (unten)
Sub Speichern_Makro()
'
' Speichern Makro
'
gblnCancel = False
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("M1").Value & _
Format$(.Range("H1").Value, "000") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ThisWorkbook.Sheets("Protokoll").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & Range("M1").Value & _
Format$(.Range("H1").Value, "000") & ".pdf", Quality:=xlQualityStandard, _
Userbild
Anzeige
AW: Dateiname auffüllen
16.12.2020 15:31:24
Nepumuk
Hallo Ulli,
schau im VBA-Editor - Menüleiste - Extras - Verweise. Da ist mindestens einer dabei bei dem steht "Nicht vorhanden". Wähle diesen ab.
Gruß
Nepumuk
AW: Dateiname auffüllen
16.12.2020 15:35:58
Ulrich
Hallo Nepumuk,
hier? da kann ich nichts finden
Gruß Ulli
Userbild
AW: Dateiname auffüllen
16.12.2020 15:43:37
Nepumuk
Hallo Ulli,
der Codepart sieht doch so aus:
With objSourceWorksheet
    
    Call objTargetWorkbook.SaveAs(Filename:=strPath & .Range("M1").Value & _
        Format$(.Range("H1").Value, "000") & ".xlsx", FileFormat:=xlOpenXMLWorkbook)
    
End With

Ich kann da keinen Fehler feststellen, denn der Bezugspunk zeigt ja auf ein Worksheet-Objekt.
Gruß
Nepumuk
Anzeige
AW: Dateiname auffüllen
16.12.2020 15:50:27
Ulrich
Hallo Nepumuk,
ich habe zwei Codes.
Einmal speichern mit Makro und einmal ohne.
Dies ist der "Mit Makro" ohne die Modifizierung.
Sub Speichern_Makro()
' Speichern Makro
gblnCancel = False
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("M1").Value & _
Range("H1").Value & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ThisWorkbook.Sheets("Protokoll").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("M1").Value & _
Range("H1").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If Not gblnCancel Then
Workbooks.Open ThisWorkbook.Path & "\Protokoll.xlsm"
Dim WB As Workbook
For Each WB In Workbooks
If WB.Name  ThisWorkbook.Name And _
WB.Name  "Protokoll.xlsm" Then
WB.Close SaveChanges:=True
End If
Next WB
ThisWorkbook.Close SaveChanges:=True
End If
End Sub

Oder kann ich den änder auf :
Call objTargetWorkbook.SaveAs(Filename:=strPath & .Range("M1").Value & _
.Range("H1").Value & ".xlsx", FileFormat:=xlOpenXMLWorkbook)
:
:
Anzeige
AW: Dateiname auffüllen
16.12.2020 15:55:34
Nepumuk
Hallo Ulli,
die im Startpost gezeigte Zeile war also nicht aus dieser Prozedur. Nimm die Bezugspunkte raus.
Gruß
Nepumuk
AW: Dateiname auffüllen
16.12.2020 16:07:47
Ulrich
Hallo Nepumuk,
sorry, ich bin stehe auf dem Schlauch.
Welche Bezugspunkte meinst du?
Gruß Ulli
AW: Dateiname auffüllen
16.12.2020 16:10:40
Nepumuk
Hallo Ulli,
na die vor Range. Also so:
    Call objTargetWorkbook.SaveAs(Filename:=strPath & Range("M1").Value & _
Format$(Range("H1").Value, "000") & ".xlsx", FileFormat:=xlOpenXMLWorkbook)

Gruß
Nepumuk
AW: Dateiname auffüllen
16.12.2020 16:31:57
Ulrich
Hallo Nepumuk,
sorry,
mit dem Code speichere ich ja als PDF und als XLSM
Ich habe den jetzt wie folgt vergewaltigt, aber es kommt ein Fehler (Anhang)
Darunter setze ich noch einmal den Code ohne die 3-Stellige Ergänzung, der funktioniert soweit.
Option Explicit
Public gblnCancel As Boolean
Sub Speichern_Makro()
' Speichern Makro
Dim objCell As Range
Dim objTargetWorkbook As Workbook
Dim objTargetWorksheet As Worksheet, objSourceWorksheet As Worksheet
Dim objName As Name
Dim lngEmptyCells As Long
Dim strPath As String
gblnCancel = False
Call objTargetWorkbook.SaveAs(Filename:=strPath & Range("M1").Value & _
Format$(Range("H1").Value, "000") & ".xlsm", FileFormat:=xlOpenXMLWorkbook)
ThisWorkbook.Sheets("Protokoll").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("M1").Value & _
Format$(Range("H1").Value, "000") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If Not gblnCancel Then
Workbooks.Open ThisWorkbook.Path & "\Protokoll.xlsm"
Dim WB As Workbook
For Each WB In Workbooks
If WB.Name  ThisWorkbook.Name And _
WB.Name  "Protokoll.xlsm" Then
WB.Close SaveChanges:=True
End If
Next WB
ThisWorkbook.Close SaveChanges:=True
End If
End Sub

Option Explicit
Public gblnCancel As Boolean
Sub Speichern_Makro()
' Speichern Makro
gblnCancel = False
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("M1").Value & _
Range("H1").Value & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ThisWorkbook.Sheets("Protokoll").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("M1").Value & _
Range("H1").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If Not gblnCancel Then
Workbooks.Open ThisWorkbook.Path & "\Protokoll.xlsm"
Dim WB As Workbook
For Each WB In Workbooks
If WB.Name  ThisWorkbook.Name And _
WB.Name  "Protokoll.xlsm" Then
WB.Close SaveChanges:=True
End If
Next WB
ThisWorkbook.Close SaveChanges:=True
End If
End Sub

Userbild
Anzeige
AW: Dateiname auffüllen
16.12.2020 16:44:31
Nepumuk
Hallo Ulli,
läuft bei mir ohne Probleme. Welche Zeile markiert der Debugger?
Gruß
Nepumuk
AW: Dateiname auffüllen
16.12.2020 17:31:31
Ulrich
Hallo Nepumuk,
folgende Zeile markiert er: (fett)
Option Explicit
Public gblnCancel As Boolean
Sub Speichern_Makro()
' Speichern Makro
Dim objCell As Range
Dim objTargetWorkbook As Workbook
Dim objTargetWorksheet As Worksheet, objSourceWorksheet As Worksheet
Dim objName As Name
Dim lngEmptyCells As Long
Dim strPath As String
gblnCancel = False
Call objTargetWorkbook.SaveAs(Filename:=strPath & Range("M1").Value & _
Format$(Range("H1").Value, "000") & ".xlsm", FileFormat:=xlOpenXMLWorkbook)
ThisWorkbook.Sheets("Protokoll").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("M1").Value & _
Format$(Range("H1").Value, "000") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If Not gblnCancel Then
Workbooks.Open ThisWorkbook.Path & "\Protokoll.xlsm"
Dim WB As Workbook
For Each WB In Workbooks
If WB.Name  ThisWorkbook.Name And _
WB.Name  "Protokoll.xlsm" Then
WB.Close SaveChanges:=True
End If
Next WB
ThisWorkbook.Close SaveChanges:=True
End If
End Sub

Userbild
Anzeige
AW: Dateiname auffüllen
16.12.2020 17:38:12
Nepumuk
Hallo Ulli,
du mischt verschiedene Codezeilen munter durcheinander bzw. kopierst ohne nachzudenken. So funktioniert es:
Option Explicit

Public gblnCancel As Boolean

Sub Speichern_Makro()
    '
    ' Speichern Makro
    '
    gblnCancel = False
    
    ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("M1").Value & _
        Format$(Range("H1").Value, "000") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
    ThisWorkbook.Sheets("Protokoll").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ThisWorkbook.Path & "\" & Range("M1").Value & _
        Format$(Range("H1").Value, "000") & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    
    If Not gblnCancel Then
        
        Workbooks.Open ThisWorkbook.Path & "\Protokoll.xlsm"
        
        Dim WB As Workbook
        For Each WB In Workbooks
            If WB.Name <> ThisWorkbook.Name And _
                WB.Name <> "Protokoll.xlsm" Then
                WB.Close SaveChanges:=True
            End If
        Next WB
        ThisWorkbook.Close SaveChanges:=True
        
    End If
End Sub

Und jetzt suche den Unterschied und verstehe.
Gruß
Nepumuk
Anzeige
AW: Dateiname auffüllen
16.12.2020 17:47:05
Ulrich
Hallo Nepumuk,
Tip Top. (Irgendwann werde ich es hoffentlich auch noch einmal besser verstehen )
Ich werde wieder spenden.
Ganz lieben Dank!!
Gruß Ulli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige