Jump to content

VB Script greift nur bei Einzelschrittausführung?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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. :)

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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! :)

Link zu diesem Kommentar

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:

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...