wie zum Lesen von Daten aus einem excel-Arbeitsblatt, die dynamisch mit VBA 2003
Ich bin neu in der vba-Programmierung, daher brauche ich Eure kompetente Hilfe im versuchen, um in der Lage sein, um in der Lage zu Lesen alle Werte aus der folgenden excel-Tabelle in ein ADODB-recordset-Objekt mit VBA 2003
Das recordset wird wie folgt gefüllt
'Create new recordset with the following fields
Dim rsData as new ADODB.Recordset
rsData.Fields.Append "Month", adVarChar, 20
rsData.Fields.Append "Product", adVarChar, 20
rsData.Fields.Append "Type", adVarChar, 50
rsData.Fields.Append "Value", adVarChar, 50
rsData.Open
'for each row in spreadsheet read the following info
rsData.Addnew
rsData.Fields("Month") = 'value from row 2 Jan followed by data below
rsData.Fields("Product") = "Color" ' Value from B5
rsData.Fields("Type") = "MK1" ' value from C5
rsData.Fields("Value") = "111=" ' value from D6
'Now move to next set of values for Feb
rsData.Addnew
rsData.Fields("Month") = 'value from row 2 FEB
rsData.Fields("Product") = "Shade" ' Value from F5
rsData.Fields("Type") = "AB2" ' value from G5
rsData.Fields("Value") = "345=ABX" ' value from H5
'Now move to next set of values for Mar
rsData.Addnew
rsData.Fields("Month") = 'value from row 2 MAR
rsData.Fields("Product") = "Color" ' Value from F5
rsData.Fields("Type") = "3FG" ' value from G5
rsData.Fields("Value") = "PLZ" ' value from H5
'Now move to next row
rsData.Addnew
rsData.Fields("Month") = 'value from row 2 Jan
rsData.Fields("Product") = "Color" ' Value from F5
rsData.Fields("Type") = "MK2" ' value from C6
rsData.Fields("Value") = "234=BZX" ' value from D6
...and so on
Bitte beachten Sie, dass **die Daten bewegen kann aber das gesamte layout unverändert bleibt.
Wie Sie sehen können aus dem folgenden Diagramm. die Reihenfolge hat sich geändert: Jan., März, Feb**
- Sie brauchen, um Ihre Frage klar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist nicht wirklich VBA für Excel, das problem ist, dass das ein Müll Datenquelle. Wenn die Blöcke zu bewegen kann in beliebiger Reihenfolge sein, Sie haben wirklich keine einfache Möglichkeit zu sagen, wo Sie sein werden und wie viel Daten, die in Ihnen ist. Wenn das der Fall, Sie wäre viel besser dran, die Fragen:
("Besser" = mehr Struktur, berechenbar.)
Auch, du denkst zu viel in Bezug auf jede Zeile einen Datensatz. Jeder block ist ziemlich getrennt von den anderen und da jeder einen einzigartigen "header record" (der Monat), würde ich geneigt sein, zu jedem Prozess-block in turn, anstatt zu versuchen, springen von einem zum anderen, als Ihrem Beispiel-code versucht zu tun.
Den folgenden sollten Sie genug Erdung, um in der Lage sein zu navigieren Sie Ihren Weg durch ein Excel-Arbeitsblatt. Es ist einfach etwas, das ich gerädert schnell zusammen und haben nicht bullet-proofed zwar wollte ich es testen, mit einem mock-up von dem Blatt in Ihrer zweiten Abbildung, und es hat funktioniert. Es sollte genug sein, um zu helfen setzen Sie auf dem richtigen Kurs, aber ich wieder betonen... was Sie haben, ist nicht eine echte Daten-Quelle. Es ist ein Bericht, der muss nahezu beliebig analysiert werden. Sie brauchen, um zu sehen, ob angegangen werden können, bevor Sie etwas tun.