Anzeige
Archiv - Navigation
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

65536 Zellen - neues Tabellenblatt

65536 Zellen - neues Tabellenblatt
21.05.2007 18:55:00
Thomas
Hallo wiedermal,
folgendes Problem:
Ich lasse per VBA Daten aufbereiten - ganz grob werden dabei Quelldaten aus einer .XLS Datei in .TXT mit bestimmter Formatierung etc. erstellt. Das funktioniert soweit auch einwandfrei.
Allerdings kann es vorkommen, dass die Quelldaten auf zwei Tabellenblätter aufgeteilt werden wenn die 65536 Zellen nicht ausreichen. Diese hätte ich aber gern in einem .TXT zusammengefasst - ist dies möglich ?
Vielen Dank im vorraus
Thomas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 20:16:00
MichaV
Hallo,
ja, das ist möglich.
Gruß- Micha
PS: Rückmeldung wäre nett.

AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 20:27:00
Thomas
Hallo Micha,
das ist schonmal eine gute Nachricht. Weiterführend wäre natürlich nun die Lösung gefragt ;-)
Leider ist die Datei sehr groß, sodass ich sie hier nich hochladen kann...
Gruß
Thomas

AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 21:25:32
MichaV
Hallo,
wie stellst Du Dir auf dieser Grundlage einen Lösungsvorschlag vor?
Zeig doch wenigstens mal den relevanten Code.
Gruß- Micha
PS: Rückmeldung wäre nett.

AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 21:29:55
Thomas
du könntest mich auf meiner privat eMail anschreiben und so könnte ich dir die .xls zusenden, wenn das dir recht ist.
=sirbullfrog[at]gmx.de=
natürlich mit "@" und ohne die Gleichzeichen

Anzeige
AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 21:32:52
MichaV
Hallo,
nö, ist mir nicht recht. Das hier ist ein Forum und keine Email- Kontaktbörse. Bei VBA-gut wirst Du dieses Problem(chen) doch wohl so beschreiben können, daß jede(r) Interessierte hier eine Lösung entwickeln kann?!
Zeig doch mal bitte den bisherigen Code und schreibe dazu, aus welchen Blättern die Daten geholt werden sollen.
Gruß- Micha
PS: Rückmeldung wäre nett.

AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 21:47:00
Thomas
ohha - bei einer 15MB Datei ist es wohl bisschen schwieriger diese per Transfer zu händeln. Specke ich diese Datei von den Quelldaten her ab, so wird es für manche schwer nachvollziehbar. Aber gut, dennoch hier die abgespeckte Datei mit meinem bisherigen Quellcode.
Bisher, und das wird es in dieser Datei nicht da sämtliche Quellen fehlen, wird je nachdem was angewählt wurde, von dem jeweiligen Tabellenblatt die Werte kopiert. Sollten diese Werte die maximale Anzahl an Zellen übersteigen, wird ein zweites Tabellenblatt auch mit dem Wortlaut "SME" erstellt. Darin enthalten sind die restlichen Quelldaten. Es kann auch mal vorkommen, dass selbst zwei SME Tabellenblätter nicht ausreichen.
Wie der Code zeigt, werden die Daten in verschiedenen durchläufen aufbereitet und schlussendlich eine TXT generiert. In dieser TXT soll letztenendes alle ausgwählten Quelldateien vorhanden sein.
https://www.herber.de/bbs/user/42622.xls

Anzeige
AW: 65536 Zellen - neues Tabellenblatt
21.05.2007 22:23:39
MichaV
Hallo,
was für ein Gebiet beackerst Du denn?
Hier eine Möglichkeit, aufbauend auf Deinem bisherigen Code.


Sub Speichern()
'
'als .TXT unter "C:\" mit dem Dateinamen der Prüfung abgespeichert
'
Dim strNamen() As String
Dim i As Integer, intDat As Integer
Dim strInhalt As String
Dim strInhaltAlle As String
ReDim strNamen(0)
For Each objSh In ThisWorkbook.Worksheets
    If objSh.Name Like "SME" & "*" Then
        'jedes Blatt mit SME
        'Namen merken
        ReDim Preserve strNamen(UBound(strNamen) + 1)
        strNamen(UBound(strNamen)) = "C:\" & objSh.Name & ".txt" 'das .txt nicht vergessen!
        'Blatt als txt speichern
        On Error Resume Next
        Application.DisplayAlerts = False 'Abfrage unterdrücken, ob ggf. existierende Datei überschrieben werden soll
        objSh.SaveAs strNamen(UBound(strNamen)), FileFormat:=xlText, CreateBackup:=False
        On Error GoTo 0
        Application.DisplayAlerts = True
    End If
Next
If UBound(strNamen) > 1 Then
'falls mehrere Blätter gespeichert wurden
    intDat = FreeFile
    For i = 1 To UBound(strNamen)
        'jede txt öffnen und Inhalt in EINE Variable schreiben
        Open strNamen(i) For Binary As #intDat
            strInhalt = Space(LOF(intDat))
            Get #intDat, , strInhalt
        Close #intDat
        strInhaltAlle = strInhaltAlle & strInhalt
    Next i
    'jetzt diese Datei speichern
    Open "c:\tmp.tmp" For Output As #intDat
    Print #1, strInhaltAlle
    Close #intDat
    'alle anderen Dateien löschen
    For i = 1 To UBound(strNamen)
        On Error Resume Next
        Kill strNamen(i)
        On Error GoTo 0
    Next i
    'und die temporäre Datei zurückbenennen
    FileCopy "c:\tmp.tmp", strNamen(1)
    On Error Resume Next
    Kill "c:\tmp.tmp"
    On Error GoTo 0
    'das wars
End If
ActiveWindow.Close
ActiveWindow.Close
Application.Quit
End Sub


Gruß- Micha
PS: Rückmeldung wäre nett.

Anzeige
AW: 65536 Zellen - neues Tabellenblatt
22.05.2007 16:11:54
Thomas
danke soweit mal. So 1:1 funktioniert es natürlich nicht - bin gerade noch dabei das ein wenig auf mein bisheriges Makro abzugleichen und funktionstüchtig zu machen. Melde mich dann nochmal, sobald es läuft oder ich noch Fragen habe.

AW: 65536 Zellen - neues Tabellenblatt
22.05.2007 16:40:35
Thomas
Problem an dem ich gerade arbeite ist ja, dass ich eben wie in meinem bisherigen Makro zu sehen, nur bestimmte Spalten kopiert haben möchte und dass die zusammengefasste TXT in der richtigen Reihenfolge zusammengefasst werden muss. Die Reihenfolge kann man anhand der Tabellenblattnamen herausfinden:= SME -- SM0 -- SM1 -- SM2 -- SM3 ...

Anzeige
AW: 65536 Zellen - neues Tabellenblatt
22.05.2007 20:57:00
MichaV
Hallo,

Die Reihenfolge kann man anhand der Tabellenblattnamen herausfinden:= SME -- SM0 -- SM1 -- SM2 -- SM3

das kann ich in Deinem Code nicht finden. Wo steht das, wo werden die Blätter angelegt? Wo wird die Datei gespeichert? Die einzige Datei, die bei dir gespeichert wird, entsteht aus einem aktiven Blatt, und das wird komplett gespeichert, ohne Rücksicht auf irgendwelche bestimmte kopierte Spalten.
Würde diese Formulierung auf Dein Problem zutreffen:
- midestens ein Blatt, dessen Name SME* ist
- evtl. andere Blätter, mit Namen SME1*, SME2*, SME99* usw., durchgehend nummeriert, aber in unterschiedlicher Reihenfolge
- diese Blätter sollen in aufsteigender Reihenfolge in eine txt- Datei gespeichert werden?
Gruß- Micha
PS: Rückmeldung wäre nett.

Anzeige
AW: 65536 Zellen - neues Tabellenblatt
23.05.2007 18:11:00
Thomas
kann man herausfinden, sofern vorhanden. Nicht immer werden mehrere SME Tabellenblätter vorhanden sein. Was du in meinem Makro finden kannst, ist eben das definierte Spaltenkopieren.
- midestens ein Blatt, dessen Name SME* ist
- evtl. andere Blätter, mit Namen SM1*, SM2*[...] SM99* usw., durchgehend nummeriert, aber in unterschiedlicher Reihenfolge (mehr wie 10 werden es aber voraussichtlich niemals werden)
- diese Blätter sollen in aufsteigender Reihenfolge in EINE txt- Datei gespeichert werden? - mithilfe meiner UserForm werden bestimmte Werte gesetzt, die ausschlaggebend dafür sind, welche Spalten in (jeder) SM(E)* kopiert werden.
Sofern es mehrere SMEs sind, werden es dementsprechend auch mehrere Tabellenblätter sein mit den kopierten Spalten. Alle Tabellenblätter mit deren inhalte will ich aber in einem TXT haben (Tabulatortrennung)
Ich bin schon dabei, habs auch zur hälfte schon möchte ich mal sagen - aber wenn du was eleganteres und schneller zum Ziel kommst, ists natürlich super !
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige