Datenübernahme variabilisieren
Thomas
Hallo Oberschlumpf,
entschuldige, dass ich mich gestern nicht mehr auf Deinen Eintrag gemeldet habe. Ich bin zur tagesschau resigniert ausgeschieden und habe erst heute früh den Kampf wieder aufgenommen.
Ich bastel weiterhin an einer Lösung und bin immernoch erfolglos. Anbei sende ich Dir ein aufgezeichnetes Makro meiner manuellen Datenübernahme. Wie gesagt, manuell ist alles kein Problem. Schwierigkeiten bereitet die Variabilisierung, so dass in Abhängigkeit von der Auswahl in der Kombo-Box eine Tabelle aus Access nach Excel geholt wird. Die Access-Tabellen können dabei unterschiedlich groß sein und haben auch teilweise unterschiedliche Spaltenbeschriftungen.
Mein Problem ist auf Grund meiner Schusseligkeit zweimal im Forum gelistet. Auf meinen Eintrag "datenimport von Access nach Excel" hat ein Herr Klemke eine VBA-Routine als Beispieldatei gepostet. Leider bekomme ich auch dieses Gerät nicht in die Gänge, weil "benutzerdefinierte Bezüge fehlen", von denen ich keine Ahnung habe.
Vielleicht fällt Dir ja nochmal eine Zeile ein, wie ich meinen Alptraum Datenimport flexibilisieren kann.
Gruß
Thorsten
Sub Makro1()
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=C:\test\datenbank.mdb;DefaultDir=C:\test;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5" _
), Array(";")), Destination:=Range("A1"))
.Sql = Array( _
"SELECT `Tbl-BWL`.ID, `Tbl-BWL`.StudId, `Tbl-BWL`.`1 Semester`, `Tbl-BWL`.`2 Semester`, `Tbl-BWL`.`3 semester`, `Tbl-BWL`.`4 Semester`, `Tbl-BWL`.`5 Semester`, `Tbl-BWL`.`6 Semester`, `Tbl-BWL`.`7 Seme" _
, _
"ster`, `Tbl-BWL`.`8 Semester`, `Tbl-BWL`.`9 Semester`, `Tbl-BWL`.`10 semester`" & Chr(13) & "" & Chr(10) & "FROM `C:\test\datenbank`.`Tbl-BWL` `Tbl-BWL`" _
)
'Das Select möchte ich verallgemeinern.
'Wie z.B. durch .CommandType = xlCmdTable
'CommandText = ARRAY (tbl-" & Sheets(1).Range("E3").Value)
'wenn ich diese Zeilen stattdessen einsetze, erhalte ich eine Fehlermeldung.
'Das Ziel dieses Makros soll schließlich sein, das mir ein Access-Tabellenblatt
'egal welcher Spalten- und Zeilenanzahl in Excel übertragen wird.
.FieldNames = True
.RefreshStyle = xlInsertDeleteCells
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.HasAutoFormat = True
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SavePassword = True
.SaveData = True
End With
End Sub