Aus vbs eine xls unter Monatsangabe speichern?
Hallo,
ich habe ein Script welches mir eine bestimmte xls Datei öffnet (Import.xls) und einen Import aus einer MySql DB ausführt.
Jetzt will ich die Datei unter einem andren Namne speichern. Bisher hab ich die Datei immer unter dem selben Namen gespeichert
Hier der Code
Hier der ganze Code:
Kann ich das so abändern das er die Datei speichert als Import_Jan.xls wenn wir uns im Januar befinden und Import_Feb.xls wenn wir uns im Februar befinden usw.
Ist die Datei vorhanden soll er sie ohne Fragen überschreiben. Gibt es die Datei nicht soll er sie anlegen.
Anschließend soll die Datei wieder geschlossen werden.
Kann man das irgendiwe umsetzten?
Wahrscheinlich wird es erst ab Zeile 110 interessant...
ich habe ein Script welches mir eine bestimmte xls Datei öffnet (Import.xls) und einen Import aus einer MySql DB ausführt.
Jetzt will ich die Datei unter einem andren Namne speichern. Bisher hab ich die Datei immer unter dem selben Namen gespeichert
Hier der Code
Hier der ganze Code:
Option Explicit
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
' Const adOpenKeyset = 1
' Const adOpenDynamic = 2
' Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
' Const adLockPessimistic = 2
' Const adLockOptimistic = 3
' Const adLockBatchOptimistic = 4
'---- CursorLocationEnum Values ----
' Const adUseServer = 2
Const adUseClient = 3
'---- ConnectModeEnum Values ----
' Const adModeUnknown = 0
Const adModeRead = 1
' Const adModeWrite = 2
' Const adModeReadWrite = 3
' Const adModeShareDenyRead = 4
' Const adModeShareDenyWrite = 8
' Const adModeShareExclusive = &Hc
' Const adModeShareDenyNone = &H10
' Const adModeRecursive = &H400000
Dim objExcel, objWb, SkriptPfad
Dim objSheet
Dim Conn, RS
Dim rowCount, i, headerSet
Dim x 'Zähler für Statusbar
x = 0 'Anfangswert für Zähler - Anzahl importierter Datensätze
rowCount = 1
SkriptPfad = WScript.ScriptFullName 'Pfadermittlung
SkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName)) 'Pfadermittlung
Set objExcel = CreateObject("Excel.Application")
Set objWb = objExcel.Workbooks.Open(SkriptPfad & "Import.xls")'öffnet die angegebene xls
objExcel.Visible = False 'die geöffnete xls ist während dem Import nicht sichtbar
objExcel.Sheets("Datenbasis").Select 'wählt die angegebene Mappe der zuvor geöffneten xls
objExcel.Range("Datenbasis!$1:$65536").ClearContents 'löscht alle Inhalte von angegebener Mappe
'Angabe des Tabellenblattes
Set objSheet = objExcel.ActiveWorkbook.WorkSheets("Datenbasis") 'Import in angegebenes Tabellenblatt
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "MSDASQL"
Conn.Mode = adModeRead
Conn.CursorLocation = adUseClient
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=10.11.12.33;UID=read;PWD=Test;Port=1141;database=db_kunde"
Set RS = CreateObject("ADODB.Recordset")
RS.CursorLocation = adUseClient
'verwendete SQL-Anweisung
RS.Source = "SELECT * FROM Kunde;"
Set RS.ActiveConnection = Conn
RS.CursorType = adOpenForwardOnly
RS.LockType = adLockReadOnly
RS.Open
Do While Not RS.EOF
If( headerSet = 0 ) Then
For i = 0 to RS.Fields.Count - 1
objSheet.Cells(rowCount, i+1).Value = RS.Fields.Item(i).Name
Next
headerSet = 1
End If
For i = 0 to RS.Fields.Count -1
objSheet.Cells(rowCount+1, i+1).Value = RS.Fields.Item(i).Value
Next
rowCount = rowCount + 1
RS.MoveNext
x = x + 1
Loop
'objExcel.Statusbar = False 'Statusbar bereinigen 'macht nur Sinn bei objExcel.Visible = True
objExcel.Sheets("Basis").Select
objExcel.Cells(12, 5) = Date & " / " & Time & " Uhr"
objExcel.Cells(13, 5) = x & " Datensätze"
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
objExcel.Visible = False 'macht die zuvor geöffnete Datei nach Import sichtbar wenn True eingestellt
objExcel.Run "alles_aktualisieren"
objExcel.Run "alles_aktualisieren"
objExcel.ActiveWorkBook.Save
objExcel.Quit
Kann ich das so abändern das er die Datei speichert als Import_Jan.xls wenn wir uns im Januar befinden und Import_Feb.xls wenn wir uns im Februar befinden usw.
Ist die Datei vorhanden soll er sie ohne Fragen überschreiben. Gibt es die Datei nicht soll er sie anlegen.
Anschließend soll die Datei wieder geschlossen werden.
Kann man das irgendiwe umsetzten?
Wahrscheinlich wird es erst ab Zeile 110 interessant...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133565
Url: https://administrator.de/forum/aus-vbs-eine-xls-unter-monatsangabe-speichern-133565.html
Ausgedruckt am: 24.12.2024 um 12:12 Uhr
16 Kommentare
Neuester Kommentar
Moin KikiMiki,
Nach so einer Einleitung kommt erfahrungsgemäß ein "Aber...."
Noch eine kleine Anmelrkung.
Ist "Anmelrkung" so etwas wie eine weitere (fünfte?) Nachklapp-Frage?
Wenn ja, was können wir tun, damit ein Haken in der Farbe eines getrockneten Laubfrosches hier drangepappt wird?
Ist es möglich den Monat als Nummer auszugebeb
d.h. 01 anstatt Jan?
Ja.
Dann hast du es im mittelfristig sortierbaren Format "Import_2010_01" aka "Import_JJJJ_MM.ext"
Grüße
Biber
Nach so einer Einleitung kommt erfahrungsgemäß ein "Aber...."
Doch wenn die Datei schon vorhanden ist muss ich immer mit "ja" bestätigen um sie zu überschreiben.
bastla hat doch schon dreimal geschrieben: "Sollte nicht passieren, weil die ja eigentlich gelöscht wird.."Irgendeine Idee?
Jepp. Poste doch mal deinen Codeschnipsel... denn der läuft doch nicht...Noch eine kleine Anmelrkung.
Wenn ja, was können wir tun, damit ein Haken in der Farbe eines getrockneten Laubfrosches hier drangepappt wird?
Ist es möglich den Monat als Nummer auszugebeb
d.h. 01 anstatt Jan?
Muss ich dafür 12 Fälle einbauen? 01 = jan 02=feb usw.?
Nein.Weil mit Month oder Monthnumber ging es nicht
Dann versuche es doch mal so:FileNew = Skriptpfad & "Import_" & Year(Date) & "_" & Format(date, "MM")
' -- oder noch schlanker--
FileNew = Skriptpfad & "Import_" & Format(date, "YYYY_MM")
Grüße
Biber
Tja, KikiMiki,
Wenn ich im "Direktfenster" des VBA-Editors die o.g. Syntax eingebe, erhalte ich aber ein Ergebnis.
Grüße
Biber
Wenn ich im "Direktfenster" des VBA-Editors die o.g. Syntax eingebe, erhalte ich aber ein Ergebnis.
Debug.Print "Import_" & Format(date, "YYYY_MM")
Import_2010_01
Obwohl ich natürlich speziell am Montagmorgen unverträgliche Typen niemals ausschließen würde...Import_2010_01
Grüße
Biber
@Biber
So sollte das aber klappen:
Grüße
bastla
Wenn ich im "Direktfenster" des VBA-Editors ...
Ist leider VBS ...So sollte das aber klappen:
FileNew = Skriptpfad & "Import_" & Year(Date) & "_" & Right("0" & Month(Date), 2)
bastla
Moin bastla,
Uuuups, wie peinlich....
Wieder mal viel zu flüchtig gelesen....
Ich sollte montags noch vorsichtiger auftreten...
Grüße & danke fürs Augenöffnen
Biber
Uuuups, wie peinlich....
Wieder mal viel zu flüchtig gelesen....
Ich sollte montags noch vorsichtiger auftreten...
Grüße & danke fürs Augenöffnen
Biber