AW: Mit VBA Workbooks identifizieren
23.04.2008 21:04:00
Daniel
Hi
es gibt mehrere Möglichkeiten ein Workbook zu referenzieren, unteranderem über:
- feste VBA-Begriffe: THISWORKBOOK und ACTIVEWORKBOOK
- Objektvariablen (wenn ich das Workbook einer solchen zugewiesen habe)
- den Workbook-Namen: Workbooks("Tabelle1.xls")
- die Index-Nummer: Workbooks(1)
du wendest alles mal an, quer durcheinander.
das Problem kommt dann bei der INDEX-Variante, da bei mehreren geöffneten Workbooks Excel selbst entscheidet, welches Workbook welche Index-Nummer bekommt.
um eindeutig zu sein, sollte man immer die Variablen- oder die Workbook-Namenvariante nehmen.
opitimert auf die Variablenvariante sieht dein Code so aus:
Option Explicit
Sub csv_export()
Dim Dateiname As String
Dim csv_name As String
Dim Jahr As String
Dim wbQuelle As Workbook
Dim wbNeu As Workbook
Set wbQuelle = ActiveWorkbook
Jahr = Right(wbQuelle.Sheets("nebenberechnungen").Range("A1").Value, 4)
Dateiname = Year(Date) & "." & Format(Month(Date), "00") & "." & Day(Date) & "_SONST_" & Jahr & _
".csv"
Set wbNeu = Workbooks.Add
wbQuelle.Sheets("csv-File").Copy Before:=wbNeu.Sheets(1)
csv_name = Application.GetSaveAsFilename(Dateiname, FileFilter:="CSV (Trennzeichen-getrennt) _
(*.csv), *.csv")
If csv_name = False Then
MsgBox "CSV wurde nicht gespeichert."
Else
wbNeu.Sheets("csv-File").SaveAs Filename:=csv_name, FileFormat:=6, CreateBackup:=False, _
Local:=True
SendKeys "^s~~%dcn"
End If
End Sub
Außerdem solltest du dringend unter EXTRAS-OPTIONEN das Häkchen bei "Variablendeklaration erforderlich" setzen.
das Zwingt dich, alle variablen zu deklarieren und vermeidet damit viele schwer auffindbare Fehler, die durch Tippfehler entstehen können.
Gruß, Daniel