Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - String mit Schleife

VBA - String mit Schleife
23.03.2016 16:44:28
Mario
Hallo Forumsgemeinde,
leider sind meine VBA-Kentnisse nicht so überragend und daher stehe ich vor einem kleinen Problem. Habe ein Skript, dass ich mir aus dem inet kopiert und angepasst habe und mit dem ich Daten aus excel in eine mysql DB schreibe. Das funktioniert soweit auch sehr gut. Würde den Code aber trotzdem noch gerne anpassen wollen, da ich verschiedene Tabellen mit unterschiedlich vielen Tabellenfeldern befüllen möchte.
Unterhalb der Code. Würde jetzt gerne eine Schleife innerhalb der Set Anweisung machen. Also wenn die Tabelle 4 Spalten hat, dann führe das set bis Field 4 aus, wenn 6 Spalten, dann bis field 6 usw. Da es ziemlich viele Tabellen sind müsste ich sonst für jede Tabelle einen eigenen Code hinterlegen. Alles andere habe ich gelöst, das ist das einzige wo ich nicht weiß wie es funktionieren könnte.
For i = 2 To 10000
If Cells(i, 2) = "" Then Exit For
sqlstr = "INSERT INTO " & table1 & " SET " _
& field(2) & " = '" & Cells(i, 2) & "', " _
& field(3) & " = '" & Cells(i, 3) & "', " _
& field(4) & " = '" & Cells(i, 4) & "', " _
& field(5) & " = '" & Cells(i, 5) & "', " _
& field(6) & " = '" & Cells(i, 6) & "', " _
& field(7) & " = '" & Cells(i, 7) & "'"
conn.Execute sqlstr
Next i
Ich hoffe ich konnte es verständlich erklären.
Danke im Voraus für eure Hilfe.
mfg
Mario

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - String mit Schleife
24.03.2016 11:35:05
UweD
Hilft dir das schon weiter ?

Sub sjdjs()
Dim TB, LC As Integer, CC As Integer, i As Integer
For Each TB In ActiveWorkbook.Sheets
LC = TB.Cells(1, Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile 1
CC = TB.Cells.SpecialCells(xlCellTypeLastCell).Column 'Letzte Spalte des gesamten  _
Blattes
For i = 1 To LC 'oder CC
'dein Code
Next
Next
End Sub
Gruß UweD
Über Rückmeldungen würde ich mich freuen

AW: VBA - String mit Schleife
29.03.2016 16:07:51
Mario
Hallo Uwe,
herzlichen Dank für deine Antwort. Habe das mal testen müssen und Ostern ist auch dazwischen gekommen :-), daher hats ein wenig gedauert mit der Antwort. Leider sind meine VBA Kentnisse sagen wir mal naja. Ich hab dein Beispiel iwie nicht verstanden.

Sub sjdjs()
Dim TB, LC As Integer, CC As Integer, i As Integer
For Each TB In ActiveWorkbook.Sheets
LC = TB.Cells(1, Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile 1
CC = TB.Cells.SpecialCells(xlCellTypeLastCell).Column 'Letzte Spalte des gesamten  _
Blattes
For i = 1 To LC 'Schleife von links nach rechts (hier sollte ich wahrscheinlich
eine andere Variable verwenden oder?)
For i = 2 To 10000 'Schleife von Zeile 2 bis 10000
If Cells(i, 2) = "" Then Exit For
sqlstr = "INSERT INTO " & table1 & " SET " _
& field(2) & " = '" & Cells(i, 2) & "', " _
& field(3) & " = '" & Cells(i, 3) & "', " _
& field(4) & " = '" & Cells(i, 4) & "', " _
& field(5) & " = '" & Cells(i, 5) & "', " _
& field(6) & " = '" & Cells(i, 6) & "', " _
& field(7) & " = '" & Cells(i, 7) & "'"
conn.Execute sqlstr
Next i
Next
Next
End Sub
sqlstr muss ja ein zusammengesetzter String zum Schreiben in die Mysql DB sein und darf auch keine leeren Felder haben. Hab jetzt schon einiges durchprobiert aber iwie bring ich es nicht hin.
Die Schleife von Zeile 2 bis x ist ja nicht das Problem aber dann die Schleife für die Spalten mit Feldname und Feldinhalt und das ganze als zusammengesetzten fortlaufenden String ohne Anzeige der Leeren Spalten ist mir zu hoch.
Habe jetzt zur Veranschaulichung noch eine excel Tabelle hochgeladen.
https://www.herber.de/bbs/user/104652.xlsx
Vielleicht kannst du mir da noch weiter auf die Sprünge helfen. Wäre echt nett.
mfg
Mario

Anzeige
AW: VBA - String mit Schleife
29.03.2016 16:57:48
UweD
Hallo
meinst du das so?

Sub sjdjs()
Dim TB, LC As Integer, i As Integer, j As Integer, Sqlstr as String
For Each TB In ActiveWorkbook.Sheets 'durchläuft alle Tabellenblätter
LC = TB.Cells(1, Columns.Count).End(xlToLeft).Column 'letzte Spalte der Zeile 1
For j = 2 To 10000 'Schleife von Zeile 2 bis 10000
If Cells(j, 1) = "" Then Exit For
Sqlstr = "INSERT INTO " & TB.Name & " SET "
For i = 1 To LC 'Schleife von Spalte 1 bis zur letzten Benutzten
Sqlstr = Sqlstr & TB.Cells(1, i) & " = " & Cells(j, j) & ", "
Next i
Sqlstr = Left(Sqlstr, Len(Sqlstr) - 2) ' letzte Komma weg
MsgBox Sqlstr ' zum testen
'conn.Execute Sqlstr
Next
Next
End Sub

Gruß UweD
Über Rückmeldungen würde ich mich freuen

Anzeige
AW: VBA - String mit Schleife
30.03.2016 11:21:23
Mario
Hallo Uwe,
du bist Spitze :-). Herzlichen Dank,hab es zwar nur mal testweise mit der msgbox ausgeben lassen aber das schaut echt schon super aus. Ist genau das was ich wollte. Mit ein paar Anpassungen auf meine Gegebenheiten bin ich genau da wo ich hinwollte.
Eine Kleinigkeit noch falls den Code noch jemand anderes benötigt

Sqlstr = Sqlstr & TB.Cells(1, i) & " = " & Cells(j, j) & ",
Sqlstr = Sqlstr & TB.Cells(1, i) & " = " & Cells(j, i) & ", 'hier das letzte j durch i ersetzen
Würde mich aber falls ich wider erwarten auf weitere Probleme stoße gerne nochmals melden ansonsten sage ich herzlichen Dank für deine Hilfe.
mfg
Mario
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige