| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Array aus Excel-Makro in Visual Basic übernehmen? im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo zusammen! Ist es möglich, einen mehrdimensionalen Array aus einem Excel-Makro in einer Visual Basic Anwendung weiter zu verwenden?! ...
![]() |
| | #1 (permalink) |
| Anzeige Hallo zusammen! Ist es möglich, einen mehrdimensionalen Array aus einem Excel-Makro in einer Visual Basic Anwendung weiter zu verwenden?! Es geht darum, dass aus einer Exceltabelle viele Daten ausgelesen werden und in einen Array gespeichert werden sollen (Array(sheet,zeile,spalte)). Mit einem Excel-Makro geschieht dies innerhalb von wenigen Sekunden. Mache ich das ganze jedoch direkt in der VB-Anwendung, also das Füllen des Arrays mit den Daten aus der Exceltabelle, dann dauert dies mehrere Minuten, bis zu einer viertel Stunde!! Nun war meine Überlegung, ob ich den Array über das Makro füllen lassen kann und dieser dann irgendwie an die VB-Anwendung übergeben werde kann. Danke schonmal für eure Hilfe! | |
| | |
| | #2 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | Ich weiss ja nicht, was du da genau implementiert hast, allerdings konnte ich bei vielerlei Dingen den Effekt, dass ein Makro wesentlich schneller läuft als ein gleichwertiges VB-Programm, noch nicht feststellen. Vielleicht solltest du dir mal deinen Programmcode genauer anschauen, ob du da noch was optimieren kannst. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter | Der Witz ist, dass ich genau den gleichen Code benutzt habe. Makro und Visual Basic: Sub arrayladen() Dim kursarray(2 To 100, 1 To 1300, 1 To 12) For i = 2 To Sheets.Count For j = 1 To 10 Step 3 k = 1 Do While Sheets(i).Cells(k, j) <> "" kursarray(i, k, j) = Sheets(i).Cells(k, j) kursarray(i, k, j + 1) = Sheets(i).Cells(k, j + 1) kursarray(i, k, j + 2) = Sheets(i).Cells(k, j + 2) k = k + 1 Loop Next j Next i MsgBox "fertig" End Sub Visual Basic: Option Explicit Dim Excel As Object Dim LFlag As Boolean Private Sub Command1_Click() CommonDialog1.Filter = ("Excel-Datei (*.xls)|*.xls;") CommonDialog1.InitDir = App.Path CommonDialog1.ShowOpen If CommonDialog1.FileName <> "" Then Excel.Workbooks.Open CommonDialog1.FileName LFlag = True End If End Sub Und dann eben noch die gleiche Sub von oben... |
| | |
| | #4 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | Hast du den Verweis auf Excel korrekt gesetzt? Dann solltest du nicht Object, sondern Application.Excel (oder sowas) nehmen. Besser als eine Do-While-Schleife wäre glaub ich auch, wenn du dir die letzte belegte Zelle holst und mit einer For-Schleife bis dahin iterierst. Muss ich mir später mal genauer angucken. Bin grad inner Vorlesung |
| | |
| | #5 (permalink) |
| Themenstarter | Ok, danke schonmal soweit für deine Hilfe! Hab noch was vergessen oben, für die Visual Basic Anwendung: Private Sub Form_Load() Set Excel = CreateObject(?Excel.Application?) Excel.Visible = False End Sub Und hier der vollständigkeit halber dann nochmal die Sub arrayladen() von Visual Basic: Sub arrayladen() Dim kursarray(2 To 100, 1 To 1300, 1 To 12) For i = 2 To Excel.Sheets.Count For j = 1 To 10 Step 3 k = 1 Do While Excel.Sheets(i).Cells(k, j) <> "" kursarray(i, k, j) = Excel.Sheets(i).Cells(k, j) kursarray(i, k, j + 1) = Excel.Sheets(i).Cells(k, j + 1) kursarray(i, k, j + 2) = Excel.Sheets(i).Cells(k, j + 2) k = k + 1 Loop Next j Next i MsgBox "fertig" End Sub |
| | |
| | #6 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | Mh, das mir jetzt ehrlich gesagt auch etwas unerklärlich. Andere Idee: Hast du schonmal versucht auf eine laufende Excelanwendung mit der geöffneter Datei zuzugreifen? Könnte vielleicht nen Overhead im VB geben, weil es die Excelanwendung öffnen muss. Ansonsten schau mal bei vbarchiv.net im Forum, wenn es so ein Problem wirklich gibt, dann ist das dort zu finden. |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Excel - Mit wenn Formel Makro auslösen | nonpretium | Applikationen | 13 | 05.08.09 16:27 |
| visual basic | redips | Applikationen | 7 | 21.01.06 18:05 |
| C++ und Visual Basic | HackerXp | (In)security allgemein | 5 | 07.01.05 14:48 |
| Visual Basic Api | BlackCat | Code Kitchen | 2 | 21.12.04 22:05 |
| Visual Basic low end | Easyrider | Code Kitchen | 0 | 08.07.04 16:48 |