Speichern ohne bestätigung / Variable für Auswahl des Verzeichnisses

jerry0110

Erfahrenes Mitglied
Hi,

ich habe folgende Herausforderung:

1. möchte ich die Datei speichern, ohne das er nachfragt ob sie gespeichert werden soll oder überschrieben werden soll.
2. möchte ich gerne den bei dem Punkt (siehe Codeschnipsel) das ich in der Exel ein Datum angeben will (z.B. 01.01.2016) und der Code nimmt das als Variable und öffnet den Ordner mit dem richtigen Datum.

Code:
sPath = "\\2015-11 Monatsabschluss\xyz\"



Das ist der gesamte Code

Code:
Private Sub CSVSeverins()
  Dim sFile As String, sPath As String, iFree As Integer
  Dim arrCSV, arrTmp, arrXLS(), i As Long, j As Integer, n As Long
  Dim zFile As String

  sPath = "\\2015-11 Monatsabschluss\xyz\"       
  sFile = Dir(sPath & "*.csv")
  zFile = "BWA xyz"
  Application.ScreenUpdating = False
 
  Do While Len(sFile)
 
    iFree = FreeFile
    Open sPath & sFile For Input As iFree
    arrCSV = Split(Input(LOF(iFree), iFree), vbCrLf)
    Close iFree
   
    For i = 0 To UBound(arrCSV)
      arrTmp = Split(arrCSV(i), ";")
      n = Application.Max(n, UBound(arrTmp))
    Next
   
    ReDim arrXLS(1 To UBound(arrCSV) + 1, 1 To n + 1)
    For i = 0 To UBound(arrCSV)
      arrTmp = Split(arrCSV(i), ";")
      For j = 0 To UBound(arrTmp)
        arrXLS(i + 1, j + 1) = arrTmp(j)
      Next
    Next
   
    With Workbooks.Add
      .Sheets(1).Cells(1, 1).Resize(UBound(arrXLS), UBound(arrXLS, 2)) = arrXLS
      .SaveAs sPath & Mid(zFile, 1, Len(sFile) - 4)
      Spaltenerstellen
      fillFields1
      .Close
    End With
   
    sFile = Dir
  Loop
 
End Sub
 

Yaslaw

n/a
Moderator
Zum Datum im Ordner:
Visual Basic:
  Dim myDate As Date
  myDate = #12/31/2016#

  sPath = "\\" & Format(myDate, "YYYY-MM") & " Monatsabschluss\xyz\"

Zum Speichern ohne Nachfrage. Verstehe ich richtig? Du speicherst es wieder als csv ab? Dann solltest du den Typ mitgeben
Visual Basic:
.SaveAs sPath & Mid(zFile, 1, Len(sFile) - 4), xlCSV
Um ganz ehrlich zu sein, ich verstehe nicht, was Mid(zFile, 1, Len(sFile) - 4) bewirken soll
 

jerry0110

Erfahrenes Mitglied
Zum Datum im Ordner:
Visual Basic:
  Dim myDate As Date
  myDate = #12/31/2016#

  sPath = "\\" & Format(myDate, "YYYY-MM") & " Monatsabschluss\xyz\"

Zum Speichern ohne Nachfrage. Verstehe ich richtig? Du speicherst es wieder als csv ab? Dann solltest du den Typ mitgeben
Visual Basic:
.SaveAs sPath & Mid(zFile, 1, Len(sFile) - 4), xlCSV
Um ganz ehrlich zu sein, ich verstehe nicht, was Mid(zFile, 1, Len(sFile) - 4) bewirken soll


Also die CSV wird in eine xlsx gespeichert. Und speichern möchte ich ohne das die Nachricht kommt dass die Datei gespeichert oder überschrieben wird.

Zum oberen Teil sieht meine Lösung so aus:

Visual Basic:
Private Sub CSVodf()
  Dim sFile As String, sPath As String, iFree As Integer
  Dim arrCSV, arrTmp, arrXLS(), i As Long, j As Integer, n As Long
  Dim zFile As String
  Dim myDate As Date
  myDate = ThisWorkbook.Worksheets("Inhalt").Range("A4")

  sPath = "C:\Monatsabschlüsse " & Format(myDate, "YYYY") "\" & Format(myDate, "YYYY-MM") & " Monatsabschluss" & Format(myDate, "YYYY-MM") & " Monatsabschluss\xyz\"
  sFile = Dir(sPath & "*.csv")
  zFile = "BWA xyz"
  Application.ScreenUpdating = False

Es kommt aber bei sPath immer ein Syntaxfehler
 
Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
Es fehlt ein & nach dem Jahr.

Zum speichern im Excel ohne Meldung muss ich passen. Das bedeutet aber nicht, dass es nicht geht. In Excel-VBA bin ich nicht besonders versiert
 

jerry0110

Erfahrenes Mitglied
Leider findet er die Datei nicht wenn ich auf einen Pfad verweise. Wenn ich C:/.... nehme dann klappt es. Mache ich aber //Servername.... dann findet er den nicht obwohl der Pfad richtig ist.

Code:
Sub CSVxyz()
  Dim sFile As String, sPath As String, iFree As Integer
  Dim arrCSV, arrTmp, arrXLS(), i As Long, j As Integer, n As Long
  Dim zFile As String
  Dim myDate As Date
  myDate = ThisWorkbook.Worksheets("Inhalt").Range("A4")

  sPath = "\\servername\xxx\Allgemein\Beteiligungsgesellschaften\Monatsabschlüsse " & Format(myDate, "YYYY") & "\" & Format(myDate, "YYYY-MM") & " Monatsabschluss\xyz\"       'anpassen
  sFile = Dir(sPath & "*.csv")
  zFile = "BWA xyz"
  Application.ScreenUpdating = False

Das ist der Pfad:

\\servername\xxx\Allgemein\Beteiligungsgesellschaften\Monatsabschlüsse 2015\2015-11 Monatsabschluss\xyz

Wenn ich eine Abfrage starte mit If Dir(sPath) starte um die Datei zu suchen, dann kommt als Massage dass er die nicht findet.

Dazu ist zu sagen, dass in der Exceltabelle unter dem Sheet "Inhalt" in der Zelle A4 ein Datum steht (01.11.2015)
 
Zuletzt bearbeitet:

jerry0110

Erfahrenes Mitglied
Kommando zurück. Alles geht.

Nur das Speichern nicht ohne Bestätigung. Vielleicht weiß da noch jemand einen Rat.