-
Hi,
Ich hab mehrere Excel Arbeitsmappen, bei diesen würde ich gern auf einen Schlag alle Tabellennamen auslesen und in in eine neue Exceltabelle schreiben.
Ich kireg es via Makro hin, aber dazu müssen auch alle Arbeitsmappen geöffnet sein.
Gibt es hier eine Lösung in welcher nicht erst alle Dateien geöffnet werden müssen?
-
Im Hintergrund wird Excel schon geöffnet. Aber es muss ja nicht am Bildschirm aufpopen
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
' @param iFilePath Pfad der Exceldatei ' @return Array mit den Sheetnamen der Exceldatei Public Function readExcelSheetNames(ByVal iFilePath As String) As String() On Error GoTo Err_Handler Dim myExcel As New excel.Application Dim myWorkbook As workbook Dim names() As String Dim i 'Excel verstecken myExcel.Visible = False Set myWorkbook = myExcel.Workbooks.Open(iFilePath) ReDim names(myWorkbook.Sheets.Count - 1) For i = 0 To myWorkbook.Sheets.Count - 1 names(i) = myWorkbook.Sheets(i + 1).name Next i readExcelSheetNames = names Exit_Handler: On Error Resume Next 'Alle Objekte schliessen zerstören Call myWorkbook.Close Set myWorkbook = Nothing Call myExcel.Quit Set myExcel = Nothing Exit Function Err_Handler: MsgBox Err.Description GoSub Exit_Handler End Function
Und hier noch ein kleiner Test damit du siehst wie die Funktion angewendet wird
Code vb:1 2 3 4 5 6 7 8 9 10 11 12
Public Sub testReadExcelSheetNames() Dim names() As String Dim i names = readExcelSheetNames("C:\temp\test.xls") For i = 0 To UBound(names) Debug.Print names(i) Next i End Sub
Geändert von Yaslaw (07.07.10 um 10:18 Uhr)
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Vielen Dank! Aber da wird nichts geschrieben?! Oder mach ich grad was falsch?
-
Wenndu das Testscript mit einem Excelfile von dir laufen lässt, dann sollte nachher im Direktfenster die Namen ausgegeben werden.
Der Befehl Debug.Print() schreibt das dorthin...
Aus was lässt du das laufen? Excel-VBA? Access-VBA? VB6? VB-Script?---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ich hab es erst einmal in Excel-VBA probiert... müsste doch gehen oder?
Sorry wenn ich mich so dumm anstelle...
Ich habs es nicht so mit VB, befasse mich normal mit PHP/MySQL/CSS...
-
1) Also, geh ins VBA von Excel.
2) Kopiere beide Funktionen rein
3) ändere den Dateipfad in der Funktion testReadExcelSheetNames() auf einen Pfad der bei dir exisitert
4) Führe die sub testReadExcelSheetNames() aus
5) Schaue im Direktfenster (immediate-Window) die Ausgabe an. Wenn dieses nicht angezeigt eitd, blende es über den Menüpunkt Ansicht (View) ein---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Des mit dem Direktfenster wars wohl...
. Vielen Dank!
-
Hab diesen Teil damit ersetzt somit schreibt es mir diese Ausgabe schön in eine DateiCode :
1 2 3 4 5 6 7 8 9 10 11 12
Public Sub testReadExcelSheetNames() Dim names() As String Dim i names = readExcelSheetNames("C:\temp\test.xls") For i = 0 To UBound(names) Debug.Print names(i) Next i End Sub
Code :1 2 3 4 5 6 7 8 9 10 11 12
Public Sub testReadExcelSheetNames() Dim names() As String Dim i Dim strPath As String strPath = "C:\Ausgabe.txt" names = readExcelSheetNames("C:\kopie.xls") Open strPath For Output As #1 For i = 0 To UBound(names) Print #1, names(i) Next Close #1
Doch nun noch eine allerletzte Frage... Wie Kann ich mehrere Dateien definieren die ausgelesen werden sollen?
Also meine theoretische Vorstellung zu ist:
Alle Dateinamen in eine "Liste.txt" zuschreiben, welche durch ein Array eingelesen wird und und dann Arbeitsmappe für Arbeitsmappe abgearbeitet wird.
Des mit dem Array würde ich vlt hinbekommen... aber wie öffne ich die "Ausgabe.txt" und ergänze darin die Einträge ohne diese zu überschreiben?
Code :1 2 3 4 5 6 7 8
Dim Arr() For X = 1 To 50 ReDim Preserve Arr(X) Arr(X) = Range("A" & X) Next X For X = 1 To UBound(Arr) Debug.Print Arr(X) Next X
Damit lese ich dir Werte(Pfade) in der dem bereich A1:A50 ein.
Jetzt muss ich des nur noch verarbeiten können woran es bei mir aber scheitert...
Geändert von Soilder (07.07.10 um 15:34 Uhr)
-
So also ich komme nicht wirklich vorwärts...
.
Wie kann ich es realisieren dass mehrere Dateien nacheinander ausgelesen werden?
Also ich schreibe in der Tabelle in die Zellen A1-A10 Pfade diese werden auch ausgelesen und entsprechend verarbeitet.
Ich kireg nur dass auslesen der Pfade mit einem For-Schleife hin... Kann mir jemand helfen?
Bin echt am verzweifeln..
Gruß
-
Kombiniere deine Schleife mit dem Testaufruf testReadExcelSheetNames()
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hier werden die Pfade eingelesen, des passt soweit, doch ich komm nicht drauf wie ich des mit dem schreiben machen soll... wie Schleifen kombinieren? Hat bei mir gar nicht geklappt... Muss ich dabei was besonderes beachten?Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Public Sub testReadExcelSheetNames() Dim names() As String Dim I Dim a Dim myExcel As New Excel.Application Dim myWorkbook As New Workbook Dim arbeitsmappe() As String strPath = "C:\Ausgabe.txt" 'ausgabe Pfad definieren Dim Arr() For X = 1 To 10 ReDim Preserve Arr(X) Arr(X) = Range("A" & X) zaehler = c + 1 Debug.Print Arr(X) names = readExcelSheetNames(Arr(X)) Next X End Sub
Code :1 2 3 4 5
Open strPath For Output As #1 For I = 0 To UBound(names) Print #1, names(I) Next I Close #1
-
Die folgende Reihenfolge sollte gehen
Öffnen der Ausgabedatei
Schleife über alle Einträge
-- auslesen der Namen
-- Schleife über alle namen
-- -- mit Print #1 der Daei hinzufügen
-- Namensschleife schliessen
Eintragsschleife schliessen
Datei schliessen---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ich hab schon einiges ausprobioert, aber ich krieg es einfach nicht hin
, ich stell mich wohl zu blöd an...
Und egal wie ich es mach krieg ich immer 'Laufzeitfehler 9' Index ausserhalb des gültigkeitsbereiches
Geändert von Soilder (08.07.10 um 13:42 Uhr)
-
Habs nicht getestet. Aber das ist das was ich dir oben beschrieben habe
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14
Public Sub testReadExcelSheetNames() Dim i, j strPath = "C:\Ausgabe.txt" 'ausgabe Pfad definieren Open strPath For Output As #1 For i = 1 To 10 names = readExcelSheetNames(Range("A" & i)) For j = 0 To UBound(names) Print #1, names(j) Next j Next i Close #1 End Sub
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Tausend Dank für deine Hilfe! Es klappt
.
Geändert von Soilder (08.07.10 um 15:01 Uhr)
Ähnliche Themen
-
[Excel/VBA] Dynamisch Hyperlinks zu Sheets erstellen
Von timgkeller im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 03.09.08, 09:16 -
ASP.NET, C#: Excel Sheets einlesen und wieder exportieren
Von silmepurpurdrache im Forum .NET Web und KommunikationAntworten: 5Letzter Beitrag: 28.08.07, 19:36 -
Spalten- und Zeilen Anzahl eines Excel Sheets auslesen ?
Von maybebaby im Forum Visual Basic 6.0Antworten: 8Letzter Beitrag: 08.06.07, 10:58 -
VBA Excel - Mehrere Sheets kopieren
Von Doni im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 23.12.04, 17:09 -
Selektierte Excel-Sheets per Email verschicken
Von El Schorero im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 13.05.04, 15:15



6Danke

Zitieren

Login





