Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

SaveAs mit Namesvorschlag über Userform vervollständigen
#1
Huhu,

ich benötige Hilfe bei der Umsetzung des folgendem Projekts bzw. Suche ich jemanden der mit der passenden Code zur Verfügung stellt oder zumindest das Grundgerüst dazu.
Über einen Button lasse ich per VBA eine CSV in eine neue Arbeitsmappe importieren, bearbeiten und ins richtige Format bringen.
Abschließend soll die gerade erstelle Arbeitsmappe natürlich auch gespeichert werden. Der Pfad dazu ist immer der selbe und der Dateiname im Grunde auch immer gleich.

Gespeichert werden soll die Datei unter dem Namen der sich so zusammensetzt:

Windowsbenutzer+GBCVTAACE_+CVTXX_Date="YYYYMMDD" & Time="hhmmss" also im Grunde so: wieauchimmer_GBCVTAACE_cvt02_20210212011448

Nun möchte ich es erreichen, das bei der Ausführung von SaveAS bzw. vor dem Speichern, eine "Abfrage" / "Eingabe" mit diesem Dateinamen
erscheint und man nur noch CVT01,CVT02 usw. mit der entsprechender Zahl (leider nicht fortlaufend) Angeben muss.

Aktuell versuche ich es mit einer UserForm:

in der UserForm

Code:
Public DateiName As String

Private Sub cmdClose_Click()
    Dim exPfad As String
    exPfad = Environ("Userprofile") & "Documents"

    Dim strUser As String
    strUser = Environ("USERNAME")

DateiName = strPfad & "" & strUser & "_" & "GBCVTAACE_" & txtCVTXX.Text & "_" & Format(Now, "YYYYMMDDhhmmss")
Me.Hide
End Sub

und im normalen Modul mit:

Code:
Private Sub AddCSV()

'direkt am Anfang der Sub und bevor die CSV bearbeitet wird   
    Dim DateiNameKomplett As String
    UserFormDateiName.Show

'direkt vorm dem Speichern mit

        UserFormDateiName.Show
             DateiNameKomplett = UserFormDateiName.DateiName
               UserFormDateiName.close
        Debug.Print DateiNameKomplett  'Zum testen

        ActiveWorkbook.SaveAs Filename:=DateiNameKomplett, FileFormat:=xlCSV, CreateBackup:=False
Allerdings klappt das so schon mal gar nicht.
Ich habs zwar mal hinbekommen das die UserForm geöffnet/angezeigt wird aber weiter bin ich bisher nicht bekommen.

Daher hoffe ich nun hier jemanden zu finden der mir den passenden Code oder das Grundgerüst zur Verfügungstellt.

Danke schon mal an alle.

VG
Antworten Top
#2
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.
https://www.clever-excel-forum.de/misc.php?action=help&hid=10

Gruß,
steve1da
Antworten Top
#3
Moin!
Eine Public Variable gehört in ein allgemeines Modul.
So wie Du es gemacht hast, erkennt die Sub AddCSV() DateiName nicht!

Und zweitens: DateiName wird im Modul gar nicht verwendet, da gibt es nur DateiNameKomplett.

und drittens: Wo hast Du denn UserFormDateiName.close ausgegraben?
Das gibt es nicht, wie man (auch) an der nicht korrigierten Kleinschreibung von .close erkennt.
Das heißt immer noch Unload UserFormDateiName

Und viertens: Wo sind die PathSeperator?


Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
(17.02.2021, 12:08)steve1da schrieb: Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.
https://www.clever-excel-forum.de/misc.php?action=help&hid=10

Gruß,
steve1da

Mach ich...
Antworten Top
#5
(17.02.2021, 12:23)RPP63 schrieb: Moin!
Eine Public Variable gehört in ein allgemeines Modul.
So wie Du es gemacht hast, erkennt die Sub AddCSV() DateiName nicht!

Der Code als solcher wurde mir als Beispiel vorgeschlagen,
da ich Ursprünglich eine "Inputbox" oder sowas im Sinn hatte.
Ich werde mich nachher aber dann nochmal genauer mit der Userform beschäftigen.

(17.02.2021, 12:23)RPP63 schrieb: Und zweitens: DateiName wird im Modul gar nicht verwendet, da gibt es nur DateiNameKomplett.

und drittens: Wo hast Du denn UserFormDateiName.close ausgegraben?
Das gibt es nicht, wie man (auch) an der nicht korrigierten Kleinschreibung von .close erkennt.
Das heißt immer noch Unload UserFormDateiName

Wenn ich mich nicht Irre hatte ich es so als die Userform dann auch angezeigt wurde.
Bei dem Versuch hatte ich das mit dem DateiNamen weggelassen und das close auch und
dafür dann Unload genutzt.

Zitat:Und viertens: Wo sind die PathSeperator?
Gruß Ralf

Den hatte ich Weggelassen da ich den originalen Pfad nicht im Kopf hatte und davon ausgegegangen
bin das der fürs eigentliche Problem nicht so relevant ist.
Aber wie gesagt, Aufgrund deines Postings werde ich mich nachher nochmal damit beschäftigen,
jetzt gehe ich erstmal pennen.



VG
Antworten Top
#6
Hola,


Zitat:Mach ich...



läuft ja super....

Gruß,
steve1da
Antworten Top
#7
Hab doch gesagt ich geh erstmal pennen ^^
Antworten Top
#8
Nabend,

hier mal ein kleines Update:

Module1
Code:
Option Explicit

Public makeName As String
Public fullName As String

Userform: makeName
Code:
Option Explicit

Private Sub close_Click()

    Dim strPfad As String
    exPfad = "C:\Users\Public\cda\cup\vF\BDV"
  
    Dim strUser As String
    strUser = Environ("USERNAME")

fullName = exPfad & "\" & strUser & "_" & "GBCVTAACE_" & txtCVTXX.Text & "_" & Format(Now, "YYYYMMDDhhmmss")
Me.Hide

End Sub

Der Teil aus dem Modul fullConvert mit UserForm
Code:
Private Sub AddCSV()

    Dim newWkb As Workbook

        Load makeName
   
        Application.ScreenUpdating = False
        Application.EnableEvents = False
   
    Workbooks.Add
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & csv_ _
    , Destination:=Range("A1"))
        .Name = ""
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 2, 2, 2, 2, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileThousandsSeparator = ","
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

        Rows("4:4").Select
        Rows("4:61").Select
        Selection.Delete Shift:=xlUp
        Columns("C:C").Select
        Selection.NumberFormat = "0"
       
        ActiveSheet.QueryTables(1).Delete
       
        makeName.Show
        ThisWorkbook.SaveAs fullName, FileFormat:=xlCSV, CreateBackup:=False
        Unload makeName
       
        Application.EnableEvents = True
        Application.ScreenUpdating = True
        ActiveWorkboook.Close savechanges:=False
End Sub


Das is mein letzter Stand.
Das Öffnen und Importieren in eine neue Arbeitsmappe funzt.

Jedoch besteht mein Grundproblem weiterhin und ich bin mir immer noch sicher ob eine
Userform die richtige Wahl ist bzw. wurde mir diese Empfohlen.
Mal ganz davon abgesehen das ich mich bisher wenig mit VBA beschäftigt habe und daher auf der Suche nach jemanden bin
der mir mit nem "Grundgerüst" zur Userform oder dem laufenden Code weiterhelfen kann.

Das herzliche Empfangskomitee ... naja... ich Verlinke dat Dingen lieber mal schnell...


Schönen Abend noch.
Antworten Top
#9
Hallöchen,

wenn Du eine gesonderte Abfrage haben willst dann schaue Dir mal die Syntax der INPUTBOX an. Ansonsten warten wir dann wohl noch auf die Verlinkung.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste