Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1256to1260
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
Inhaltsverzeichnis

Export Excel-Excel

Export Excel-Excel
Steve
Hallo Forum,
Wie kann ich eine Tabelle in ein neues ExcelFile exportieren, und von jedem blatt in der tabelle das exportiert werden soll, den eigenen bereich festlegen? (Wie den Druckbereich :))
Blatt1 müsste ich den Bereich A3:O... inklusive vormatierungen exportieren
Blatt2 nur die daten die einen farbigen hintergrund haben (ohne hintergrundfarbe)
Auch den Import müsste nur die Bereiche importieren.
Momentan habe ich alles in ein Text file exportiert aber das ist nicht die beste lösung.
Besten Dank
Steve

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Nachfrage
06.04.2012 18:30:54
Reinhard
Hallo Steve,
wie wurden in Blatt2 die Zellen gefärbt, manuell oder per bed. Formatierung?
Der Bereich in Blatt1 soll komplett kopiert werden oder deute ich das falsch?
Gruß
Reinhard
AW: Nachfrage
06.04.2012 18:38:40
Steve
Hallo Reinhard,
Die Zellen wurden manuel gefärbt, da es die sind di man modifizieren kann (oder darf).
Der bereich in Blatt1 ist komplett zu kopieren, von A3 bis O.
Grüsse Steve
AW: Nachfrage
06.04.2012 21:42:55
Reinhard
Hallo Steve,
für deine Info warum ich das mit den Farben nachfragte.
Manuell gefärbte Zellen kann man mit Vba sehr leicht separieren.
kommt die Farbe durch bed. Formatierung so geht das auch, ist aber
bedeutend aufwendiger denn man kann da nicht die Farbe der Zelle auslesen
sondern muß alle bed. Formatierungen der Zelle in Vba "nachstellen" um dann
daraus die Erkenntnis ziehen welche farbe denn nun die Zelle durch die bded. Formatierung hat.
Zum Forum hier.
Wenn du mir antwortest wie hier und die Anfrage ist noch nicht gelöst so klicke bei der
Antwort oben rechts auf "Frage noch offen". Ich habe das jetzt hier getan, das erkennt man an dem
roten Ausrufezeichen im Betreff und die Beitragsfolge taucht in der Liste ofener Fragen auf.
Beides vorteilhaft für dich.
Gruß
Reinhard
Anzeige
OT@Rhd: Deine Aussage ...
06.04.2012 22:17:06
Luc:-?
… kommt die Farbe durch bed. Formatierung so geht das auch, ist aber
bedeutend aufwendiger denn man kann da nicht die Farbe der Zelle auslesen
sondern muß alle bed. Formatierungen der Zelle in Vba "nachstellen" …

…ist zwar nicht falsch, Reinhard,
gibt aber eine inzwischen veraltete PC-Welt- oder Computer-Bild-Empfehlung von vor Jahren wieder. Es ist nur eine der Möglichkeiten. ;-)
Gruß Luc :-?
AW: OT@Rhd: Deine Aussage ...
06.04.2012 23:09:12
Reinhard
Hallo Luc,
ich brauch keine Computer Bild um kaum Ahnung von Vba zu haben :-)
Real gelesen habe ich die oberflächlig schon so 20 mal, die flog nämlich bei
dem einen ChinaDings rum wo ich auf mein Reis mit irgendwas zum Mitnehmen wartete.
In Erinnereung blieb mir z.B. eines, wie man in Word beim Ausdruck die Falzmarken
mitdruckt. Das waren dann so ca. Arbeitsschritte in Word um das zu erreichen.
Ich weiß noch in etwa daß ich mir dabei gedacht habe, mannomann entweder ist
die zeitschrift bescheuert oder wenn nicht MS.
Auch in USA wirds wohl Falzmarken geben. Warum ist das nicht in Word, jahrzehnte altes programm integriert?
Was du sagst klingt so als ob ab 2007 man auch die Farben durch bed. Formatierung auslesen
kann. Ist das echt so?
Welche Möglichkeiten meinst du sonst?
Gruß
Reinhard
Anzeige
AW: OT@Rhd: Deine Aussage ...
06.04.2012 23:55:31
Nepumuk
Hallo Reinhard,
bei einfarbigen Füllungen ist das doch ganz einfach. Da brauchst du doch nur ein einzelnes Pixel der Zelle auslesen um die Farbe zu ermitteln. Ich hab mir dafür eine kleine DLL geschrieben.
Gruß
Nepumuk
Nachtrag
07.04.2012 02:42:39
Nepumuk
Hallo,
seit Excel 2007 ist es übrigens ganz einfach die Formatierung auszulesen. Hier mal ein einfaches Beispiel. Fügt in die Zellen A1-A10 bedingte Formate mit verschiedenen Farben ein.
In einem Standardmodul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function GetClass(Optional ByVal povblnTerminate As Boolean = False) As clsFormatConditionsColor
    Static objclsFormatConditionsColorClass As clsFormatConditionsColor
    If Not povblnTerminate Then
        If objclsFormatConditionsColorClass Is Nothing Then _
            Set objclsFormatConditionsColorClass = New clsFormatConditionsColor
        Set GetClass = objclsFormatConditionsColorClass
    Else
        Set objclsFormatConditionsColorClass = Nothing
    End If
End Function

Public Sub Test()
    Dim lngRow As Long
    For lngRow = 1 To 10
        Cells(lngRow, 2).Value = GetClass.GetColor(Cells(lngRow, 1))
    Next
    Call GetClass(True)
End Sub

In einem Klassenmodul mit dem Namen "clsFormatConditionsColor":
' **********************************************************************
' Modul: clsFormatConditionsColor Typ: Klassenmodul
' **********************************************************************

Option Explicit

Private mobjApplication As Application
Private mobjWorkbook As Workbook
Private mobjWorksheet As Worksheet

Private Sub Class_Initialize()
    Set mobjApplication = New Application
    Set mobjWorkbook = mobjApplication.Workbooks.Add(Template:=xlWBATWorksheet)
    Set mobjWorksheet = mobjWorkbook.Worksheets(1)
End Sub

Private Sub Class_Terminate()
    mobjWorkbook.Saved = True
    mobjApplication.Quit
    Set mobjWorksheet = Nothing
    Set mobjWorkbook = Nothing
    Set mobjApplication = Nothing
End Sub

Friend Function GetColor(ByRef probjCell As Range) As Long
    probjCell.Copy
    With mobjWorksheet
        .PasteSpecial Format:="HTML"
        GetColor = .Cells(1, 1).Interior.Color
    End With
    Application.CutCopyMode = False
End Function

Ist nicht die allerschnellste Methode (~7 Sekunde für 100 Zellen), aber funktioniert garantiert ab Excel 2007 und ist reines VBA. Die im vorhergehenen Post erwähnte DLL ist viel schneller (~0,1 Sekunden für 100 Zellen), muss aber auf dem Rechner registriert sein.
Gruß
Nepumuk
Anzeige
AW: Nachtrag
07.04.2012 21:50:36
Reinhard
Hallo Nepumuk,
como siempre vielen Dank.
Wenn du magst:
https://www.herber.de/forum/messages/1258095.html
Habe ich da Chris den richtigen Weg gewiesen oder gibt es dazu noch was anderes zu sagen?
Da du dich sehr anzunehmender Weise bestens mit DLLs auskennst, nachfolgend ein Beitrag einer Userin mit XL2003 auf Win 7 und wohl einen Mikrocomputer o.ä. an der COM-Schnittstelle.
**********************************************************************************************
habe inzwischen etwas weiter geforscht: Es muss mit der COM-Schnittstelle zusammenhängen:
- Alle Mappen, auch mit teils umfangreichen Makros, die nicht auf die COM-Schnittstelle zugreifen, funktionieren einwandfrei.
- Öffne ich eine Mappe mit "Makros aktivieren" - die COM-Schnittstelle wird in Auto_Open sofort geöffnet - stürzt Excel ab. Öffne ich dieselbe Mappe mit "Makros deaktivieren" ist alles gut, kann natürlich keine Makros aufrufen. Wenn ich das COM-Öffnen in Auto_Open unterdrücke, ist's auch gut bei "Makros aktivieren", öffne ich die COM aber, stürzt's sofort ab.
- Und jetzt, ganz seltsam: Öffnen mit "Makros deaktivieren", Mappe speichern und schliessen, wieder öffnen, "Makros aktivieren" ... alles gut. Wenn ich nicht speichere ... Absturz.
Ich benutze die RSCOM.DLL von einem Elektroniker (B. Kainka: http://www.b-kainka.de/), der diese DLL programmiert hat. Sie waren von Anfang an etwas seltsam, haben aber lange gut funktioniert.
Ich suche noch jemand, der die "kernel32.dll" gut kennt, bzw. eine Beschreibung dazu liefern kann. Damit kann man die COM-Schnittstelle auch ansprechen.
Ich fürchte, mir ist nicht zu helfen, da das schon ein sehr spezieller Fall ist, wollte das nur mal zum Besten geben.
**********************************************************************************************
In meiner Verzweiflung habe ich folgendes geantwortet:
**********************************************************************************************
zeige doch mal bitte den Code von Auto_Open.
In welcher Codezeile kommt ein Fehler wenn du mit F8 durchgehst?
Im Sinne des Ausschlußverfahrens bei der Fehlersuche gehe aus dem
Internet, deaktiviere da alles wie Virenscanner, Firewalls usw.
Am besten nur Win und Excel. Teste dann mal.
Kann man B. anmailen?
Wenn B. reagiert weiß er sicher auch zu kernel32 was zu sagen.
Zum Problem selbst kann ich wenig sagen.
Ich weiß nur daß Excel wenn man die Mappe schließt nochmals
die Codes kompiliert.
http://www.uploadagent.de/show-183833-1333809603.html
May be deshalb stürzt dann Excel ab.
Vielleicht müßte man per Vba erst die Verbindung zu der Com "kappen",
dann erst die Mappe speichern.
Aber dies ist nur Rumraterei ohne Wissen wie das ginge.
**********************************************************************************************
Unklar ist bislang noch ob sie 64 Bit oder 32 Bit Win 7 hat. Genauso ob ihre CPU 32 oder 64 bahnig ist.
Ich zeigte ihr deshalb diesen Link:
http://www.teltarif.de/windows-7-32-oder-64-bit-wechsel-versionen/news/36304.html
Da steht ihre Antwort noch aus. Auch welchen Code sie dann da in Auto_Open hat.
Was mich dabei persönlich sehr interessiert. Als ich vor Jahren hier begann mitzulesen um
Vba zu lernen da war Workbook_Open angesagt. Auto_open war irgendwas aus der Zeit vor mir.
Deshalb meine Frage an dich, kann es im Entferntesten möglich sein daß
bei Code im Worlbook_Open Ereignis der Fehler nicht auftreten könnte?
FrOstern
Gruß
Reinhard
Anzeige
Nein, mal abgesehen von den Möglichkeiten, ...
08.04.2012 00:26:46
den
…die Nepumuk hat/meint/sieht, Reinhard,
genau ab 2009… ;-?
In dem Jahr bin ich nämlich darauf gekommen wie man das auch für dein geliebtes Xl9 (2k) machen kann, d.h., die jeweilige Bedingung automatisiert auswerten und dadurch die aktuell gezeigten Zellformate feststellen kann. Das Heureka-Stichwort heißt „doppelte Evaluierung”!
Abgesehen davon sind aber noch andere Methoden vorstellbar/möglich.
Gruß + FrOst, Luc :-?
Na, Sprache verschlagen, Reinhard...
12.04.2012 01:25:58
Luc:-?
Morrn!
Es gibt da so'nen alten Bericht aus dem 16./17.Jhd von einem spanischen Kapitän, der auf dem Pazifik in relativ großer Entfernung zur südamerikanischen Küste ein Inka-Händler-Floß aufgebracht haben will. Ende des 19.Jhds hat das ein britischer Exkapitän und Sachbuchautor mit der Arroganz seines Jhds rundweg abgestritten. Seine Meinung wurde dann von vielen Sachbuchautoren übernommen, weil sie dachten, sich auf seine vermeintl Fachkompetenz verlassen zu müssen. Thor Heyerdahl hat dann in der Mitte des 20.Jhds bewiesen, dass der spanische Bericht stimmen konnte und der Brite und alle, die ihm folgten, falsch lagen. Was die Indios damals zum Steuern benutzten, steckt heute in jedem Segelboot, nur brauchten sie mehr davon.
Ganz ähnl ist es mit bestimmten Meinungen darüber, was in xlVBA geht und was nicht. Ist erst mal dtzdfach eine Meinung/Erfahrung kolportiert worden, hindert das viele daran, selbst nach (anderen) Wegen zur Lösung des jeweiligen Problems zu suchen. Das ist so bei den angeblich in nicht-engl XlVss nicht automatisiert auswertbaren Fmln der Bedingt­Formatierung und auch bei der angebl Nicht-Realisier­barkeit von mehr als 3 echten Bedingt­Formaten in Vss vor Xl12.
Bei Letzterem kommt es natürl darauf an, wie eng das ausgelegt wird, denn mehr als 3 Formatie­rungs­regeln lassen diese Vss tatsächl nicht zu, aber mit per VBA definierten Unter­bedin­gungen lassen sich die einge­stellten Formate auswechseln, was dem Einsatz ebenso­vieler Formatie­rungs­regeln (ab Xl12) in der Wirkung gleichkommt.
Für die Auswertung der Bedingungsfmln gilt der Grundsatz: Xl calculates in English! Daraus folgt im Ggsatz zur Tatsache, dass Bedingungsfmln nur in lokaler Form ausgelesen wdn können, dass sie nicht auch nur in dieser Form existieren! Nein, Eintragungs- und Anzeigeform sind nur ein Service für nicht-englischsprachige Nutzer, dem auch VBA folgt, gespeichert wird englisch. Das ist bei normalen und benannten Fmln anders → da wdn auch die fremdsprachigen Vss gespeichert. Man muss also nur Zugriff auf die Berechnungsebene bekommen, wenn man die Originalform der Bedingungsfmln erhalten will.
Jedem, der schon mal die vbMethode .Calculate eingesetzt hat, könnte aufgefallen sein, dass Zellformate kurzzeitig englisch angezeigt wdn, Boolesche Werte als FALSE oder TRUE erscheinen. Das ist auf die „English Calculation“ zurückzuführen. Was hilft das bei der Problemlösung? Nun, man muss genau diesen Effekt ausnutzen und das Ergebnis fixieren. Im Grunde genommen ist das ganz einfach, man muss nur erst mal darauf kommen! Einfachste Variante:
→Fkt schreiben, die .FormatConditions(n).Formula1/2 ausliest.
→Prozedur schreiben, die die Fkt samt der erforderl Argumente evaluiert.
Das kann man natürl noch bis hin zu selbstevaluierender Fkt ausbauen. Das ist dann zwar immer noch nicht alles, aber der entscheidende Schritt. Natürl müssen ggf noch relative Adressen korrigiert wdn, weil sonst keine sinnvolle Auswertung mit einem erneuten Evaluate des erzielten Ergebnisses mögl ist. Außerdem kann man zuvor auch die Fml-Konstruktionen der Zellwert-Bedingungen in diese Form bringen, damit alles nach gleicher Regie laufen kann.
Viel Spaß beim Nachbau! Gruß, Luc :-?
Anzeige
AW: Nachfrage
06.04.2012 22:37:27
Steve
Besten Dank Reinhard. :)
Habe noch ein wenig probiert, aber auch mit den gefundenen Codes habe ich keinen der richtig funktioniert so wie ich mir das forstelle.
Am ende muss man wissen was für eine farbe die zelle hat, richtig? Oder kan man auch nur sagen wenn die zelle farbig ist dan..., ohne zu wissen welche?
Grüsse Steve
AW: Nachfrage
07.04.2012 00:29:15
fcs
Hallo Steve,
hier mein Lösungsvorschlag für ein entsprechendes Makro erstellt unter Excel 2010
Gruß
Franz
Sub Export_Data_and_Formats()
'Formate und Daten aus Tabellenblättern in neue Datei exportieren
Dim wbZiel As Workbook, wksZiel As Worksheet
Dim wbQuelle As Workbook, wksQuelle As Worksheet
Dim Zelle As Range
Set wbQuelle = ActiveWorkbook
For Each wksQuelle In wbQuelle.Worksheets
If wbZiel Is Nothing Then
'neue Arbeitsmappe mit einem Blatt anlegen
Set wbZiel = Application.Workbooks.Add(Template:=xlWBATWorksheet)
Else
'weiteres Blatt in neuer Arbeitsmappe anfügen
With wbZiel
.Worksheets.Add After:=.Sheets(.Sheets.Count)
End With
End If
Set wksZiel = wbZiel.Sheets(wbZiel.Sheets.Count)
'Zieltabelle umbenennen
wksZiel.Name = wksQuelle.Name
Select Case wksQuelle.Index
Case 1
'Bereich A3:O... kopieren
With wksQuelle
'Spaltenbreiten übertragen
For Each Zelle In .Range("A3:O3")
wksZiel.Columns(Zelle.Column).ColumnWidth = .Columns(Zelle.Column).ColumnWidth
Next
'Letzte Zeile mit Daten ermitteln
With .UsedRange
Set Zelle = .Find(What:="*", After:=.Range("A1"), LookIn:=xlValues, lookat:=xlWhole, _
_
searchdirection:=xlPrevious)
End With
'Zellen A3:O... kopieren
.Range(.Cells(3, 1), .Cells(Zelle.Row, 15)).Copy
End With
'Formate und Werte ab Zelle A3 einfügen
wksZiel.Cells(3, 1).PasteSpecial Paste:=xlPasteFormats
wksZiel.Cells(3, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Case 2
'Aus allen Zelle die farbig sind den Wert in die entspechende Zelle im Zielblatt  _
eintragen
For Each Zelle In wksQuelle.UsedRange
If Zelle.Interior.ColorIndex  xlColorIndexNone Then
wksZiel.Cells(Zelle.Row, Zelle.Column).Value = Zelle.Value
End If
Next
Case Else
'do nothing
End Select
Next
End Sub

Anzeige
Besten Dank an alle
07.04.2012 12:31:55
Steve
:)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige