jose 10 Geschrieben 27. Januar 2009 Melden Teilen Geschrieben 27. Januar 2009 Ich habe für Excel ein Script entwickelt, dass mir große Datenbestände in einzelne Tabellenblätter importiert. Zur besseren Übersicht möchte ich die Spalten automatisch anpassen und habe dazu folgende Zeilen Code: Worksheets(vFilename).Select ActiveSheet.Columns.AutoFit Das funktioniert nur, wenn ich das Script per F8 in Einzelschritten durchlaufe, nicht jedoch, wenn ich es in einem Schwung durchlaufen lasse... :confused: Vielleicht weiß ja jemand wieso es zu so einem Verhalten kommt. Vielen für Eure Unterstützung. :) Zitieren Link zu diesem Kommentar
NilsK 2.918 Geschrieben 27. Januar 2009 Melden Teilen Geschrieben 27. Januar 2009 Moin, bitte beschreib das Verhalten und den entsprechenden Code mal genauer. Was machst du genau, und was passiert, wenn es nicht klappt? Gruß, Nils Zitieren Link zu diesem Kommentar
jose 10 Geschrieben 27. Januar 2009 Autor Melden Teilen Geschrieben 27. Januar 2009 Hallo NilsK, danke für die Antwort. Ich importiere über eine ODBC Verbindung große Datenmengen aus lokalen Accessdatenbanken. Dabei wird für jede Accessdatenbank ein neues Tabellenblatt generiert in das die Daten importiert werden. Und genau hier liegt jetzt der Hund begraben.. :( Private Sub B_Import_Click() Dim vFileInd As Integer Dim vSql As String vFileInd = 4 vPath = Sheets("Workflow").Range("B2").Value strSystemdatenquelle = "Microsoft Access-Datenbank" Do While Sheets("Workflow").Cells(vFileInd, 2).Value <> "" vFilename = Sheets("Workflow").Cells(vFileInd, 2).Value strDatenbank_Pfad = vPath + "\" + vFilename vSql = Sheets("Workflow").List1.Value arCommandtext = Array("SELECT * From " + vSql) Worksheets.Add().Name = vFilename Sheets(vFilename).Select With ActiveSheet.QueryTables.Add(Connection:= _ "ODBC;DSN=" & strSystemdatenquelle & ";DBQ=" & strDatenbank_Pfad & ";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;", Destination:=ActiveSheet.Range("A1")) .CommandText = arCommandtext .Name = "Abfrage von Microsoft Access-Datenbank" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = False .AdjustColumnWidth = False .RefreshPeriod = 0 .PreserveColumnInfo = True On Error Resume Next .Refresh BackgroundQuery:=True End With Worksheets(vFilename).Select ActiveSheet.Columns.AutoFit vFileInd = vFileInd + 1 Loop Worksheets("Workflow").Select End Sub Wie bereits erwähnt... Gehe ich diesen Code mittels Einzelschrittprozedur durch wird zunächst ein neues Tabellenblatt mit entsprechenden Namen erzeugt; darin werden die Daten importiert und Spalten automatisch angepasst. Lasse ich jedoch das ganze Script automatisch durchlaufen (und das sind 20 *.mdb Dateien, die importiert werden), dann sind die neuen Tabellenblätter zwar mit Daten gefüllt, aber eben die Spalten wurden nicht angepasst. Ich versteh nur nicht so wieso nur die Einzelschrittprozedur sauber arbeitet... ... da wäre ich um fachkundige Hilfe sehr dankbar, denn meine Programmierfähigkeiten sind begrenzt. :D Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 27. Januar 2009 Melden Teilen Geschrieben 27. Januar 2009 ich denke mal, dass das activesheet quasi stecken bleibt und nicht zum neu angelegten Tabellenblatt "weitergereicht wird". Ist die erste von deinen 20 Tabellen richtig formatiert? Am einfachsten gehst du am Ende deines Programmes nochmal über alle Sheets und formatierst die durch etwa so könnte ichs mir vorstellen (ungetestet): for each worksheet in sheets worksheet.Columns.AutoFit next Zitieren Link zu diesem Kommentar
jose 10 Geschrieben 27. Januar 2009 Autor Melden Teilen Geschrieben 27. Januar 2009 Das funktioniert leider auch nicht, selbst wenn ich es außerhalb der Loop-Schleife platziere oder in ein eigenes Modul auslagere und zum Schluss der gesamten Prozedur aufrufe. In Einzelschritten funktioniert es allerdings abermals! :confused: Ich habe deinen Code mal in eine eigene Funktion gelegt, die erst auf einen Knopfdruck von mir wartet. Dann funktioniert es! Ich kriege so langsam das Gefühl, dass Excel sich bei der Ausführung dieser Befehlsketten über 20 Tabellen irgendwie "verschluckt" (ich weiss, dass das kein Fachausdruck ist ;) )?! ----------Offtopic---------- juhuuu... mein 100ter Beitrag! :) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 27. Januar 2009 Melden Teilen Geschrieben 27. Januar 2009 nochmal die Frage: ist eine, bzw. die erste von deinen 20 Tabellen richtig formatiert? Zitieren Link zu diesem Kommentar
jose 10 Geschrieben 28. Januar 2009 Autor Melden Teilen Geschrieben 28. Januar 2009 Nein, leider nicht. Die Tabellen sehen alle gleich aus... :( #Nachtrag Ich habe mittlerweile weiter an dem Script gearbeitet. Jeglicher Versuch die Spalten oder Zellen der Tabellenblätter automatisch anzupassen scheitert, wenn die Prozedur automatisch abläuft. Sobald ich die Prozedur in Einzelschritten durchlaufe, funktioniert es allerdings. Ich habe im Nachgang eine neue Prozedur geschrieben, die per separatem Knopfdruck aufgerufen wird und siehe da, dann funktioniert es (auch ohne Einzelschritt)! :suspect: Da es sich sowieso um einen kosmetischen Eingriff handelt, werde ich es auch so belassen müssen. :( Nichts desto trotz würde mich trotzdem interessieren woher der Fehler kommt?! :confused: Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.