Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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

Tabellenblätter exportieren wenn....

Tabellenblätter exportieren wenn....
31.10.2023 13:59:39
Gruibe
Hallo an Alle
Ich bin wieder an einem Punkt angekommen, wo ist nicht weiter weiß.
Mit nachfolgendem Makro werden alle Tabellenblätter als Excel Datei exportiert. So weit so gut.
Nun möchte ich aber nur das gleichlautende Tabellenblatt wie in Spalte D exportieren, wenn in Spalte B eine "2" steht. Wie lautet denn dazu die Abfrage?

Userbild


Private Sub CommandButton10_Click()
'Tbl_in_einzelne_xls_Dateien_exportieren()
'Button Tabellenblätter exportieren

Dim kd_path As String
Dim prg_path As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim xWs As Worksheet
Dim xWb As Workbook
Dim xNWb As Workbook
Dim FolderName As String

kd_path = Environ("userprofile") & "\nextcloud\betriebe\"
prg_path = Environ("userprofile") & "\nextcloud\Arbeitsschutz\Vorlagen GBU\GBU Excel\"


Dim wb As Workbook: Set wb = ThisWorkbook
'MsgBox wb

Dim wsDeckblatt As Worksheet: Set wsDeckblatt = wb.Worksheets("0_deckblatt")
Dim ws As Worksheet, i As Long, kd As String

kd = wsDeckblatt.Range("D4").Value
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set xWb = Application.ThisWorkbook

DateString = Format(Now, "yyyy-mm-dd hh-mm-ss")

'FolderName = Environ("userprofile") & "\nextcloud\betriebe\" & kd & "\sicherung\" & kd & "_" & DateString
FolderName = Environ("userprofile") & "\nextcloud\betriebe\" & kd & "\sicherung\" & kd & "_" & DateString

'Prüfen ob Sicherungsverzeichnis beim Kunden vorhanden ist
Dim sicherungspfad As String
Dim sicherungspfadExistiert As String

sicherungspfad = kd_path & kd & "\Sicherung\"
sicherungspfadExistiert = Dir(sicherungspfad, vbDirectory)

If sicherungspfadExistiert = "" Then
'MsgBox "Der ausgewählte Ordner existiert nicht"
MkDir sicherungspfad
Else
MsgBox "Der ausgewählte Ordner existiert"
End If


'Tabellenblätter im Sicherungsverzeichnis sichern
If Val(Application.Version) 12 Then
FileExtStr = ".xls": FileFormatNum = -4143
Else
Select Case xWb.FileFormat
Case 51:
FileExtStr = ".xlsm": FileFormatNum = 51
Case 52:
If Application.ActiveWorkbook.HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsm": FileFormatNum = 51
End If
Case 56:
FileExtStr = ".xls": FileFormatNum = 56
Case Else:
FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If

MkDir FolderName

For Each xWs In xWb.Worksheets
On Error GoTo NErro

If xWs.Visible = xlSheetVisible Then
xWs.Select
xWs.Copy
xFile = FolderName & "\" & xWs.Name & FileExtStr
Set xNWb = Application.Workbooks.Item(Application.Workbooks.Count)
xNWb.SaveAs xFile, FileFormat:=FileFormatNum
xNWb.Close False, xFile
End If

NErro:
xWb.Activate

Next

MsgBox "Du findest die GBU Sicherungen im Verzeichnis " & Chr(10) & Chr(10) & FolderName
Application.ScreenUpdating = True

Application.DisplayAlerts = True

'Sheets("Link Übersicht Gef.Beurteilung").Range("a3").Select

End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter exportieren wenn....
31.10.2023 14:19:08
Oberschlumpf
Hi,

und wieso zeigst du per Upload nich ne Excel-Datei mit Excel-Daten mit Code, sondern nur n Bild und nur Code?!
Versteh ich nich.

Ciao
Thorsten
AW: Tabellenblätter exportieren wenn....
31.10.2023 14:33:58
Gruibe
Hallo Thorsten,
natürlich kann ich die ganze Excel Datei anhängen. Die ist aber riesig. Da kommt keiner mehr klar. Aber wenn so niemand eine Lösung weiß, dann müsste ich die Datei halt reinhängen.
Ich hoffe es geht so.
Sorry

Gruibe
AW: Tabellenblätter exportieren wenn....
31.10.2023 14:48:42
Oberschlumpf
Hi,

es muss doch nich - die ganze Datei - sein. Es würde doch auch eine Bsp-Datei mit - nur - so vielen Bsp-Daten reichen, damit man a) dein Problem besser verstehen, und b) mit eben der Bsp-Datei eine Lösung vielleicht erTESTEN kann.

Ciao
Thorsten
Anzeige
AW: Tabellenblätter exportieren wenn....
31.10.2023 15:33:52
Gruibe
Hallo Thorsten,
so, habe jetzt alles unnötige gelöscht. Die Datei ist immer noch 2MB groß. Ich kann aber nur 660KB hochladen
Mehr kann ich aber nicht löschen. Kann ich die Datei anderweitig zur Verfügung stellen?

Grüße
Gruibe
AW: Tabellenblätter exportieren wenn....
31.10.2023 15:44:29
Oberschlumpf
Moin,

hast du schon versucht, die ca 2MB-Datei mit 7ZIP zu komprimieren? Auch der Upload von ZIP-Dateien ist hier möglich.

Ciao
Thorsten
AW: Tabellenblätter exportieren wenn....
31.10.2023 15:59:17
Gruibe
ja. Wird nur 100k kleiner. So ein Mist
AW: Tabellenblätter exportieren wenn....
31.10.2023 16:00:05
Gruibe
Hallo Thorsten,
ich schau morgen wieder hier vorbei...muss jetzt weg.

Gruibe
AW: Tabellenblätter exportieren wenn....
31.10.2023 16:14:01
Oberschlumpf
Hi,

alles klar, ich bin auch noch verabredet, und "muss" bald noch mal los.
Ok, 7Zip klappt auch nich immer.
1 Idee hab ich noch.

Hast du in Verbindung mit einer deiner Mailadressen auch die Möglichkeit, "Cloud"-Speicher des Mailanbieters nutzen zu können?
(ich bin bei GMX und nutz die dortige Cloud sehr oft)

So hab ich hier auch hin und wieder schon mal Dateien über GMX-Cloud für den Download angeboten, die eben größer waren als die hier erlaubten ca 600kb.
(die erlaubte Größe bezieht sich ja auch nur auf die bei herber.de gespeicherten Dateien)

Na ja, hin und wieder wurde ich von diversen Antwortern darauf hingewiesen, dass ich doch bitte - nur - den Upload-Dienst von herber.de nutzen solle, weil sie (die Antworter) ja nicht wissen, von wo sie die Dateien runterladen würden, die ich per GMX-Cloud anbot.
Ok, ist verständlich.
Aber wenn ich keine andere Möglichkeit finde, hier Dateien für den Download anzubieten, tu ich es halt über GMX.

Vielleicht ist das für dich ja auch eine Alternative.

Ciao
Thorsten
Anzeige
AW: Tabellenblätter exportieren wenn....
01.11.2023 12:49:48
Gruibe
Hallo Thorsten,
da ich es einfach nicht klein bekomme, hier der Link zur GMX Cloud. Würde mich freuen, wenn Du mir hierfür eine Lösung hättest.
Danke vorab schon mal.

https://c.gmx.net/%40327718345132481409/ewZid1XYTaayI-9m5qicBQ

Grüße
Gruibe
AW: Tabellenblätter exportieren wenn....
02.11.2023 08:05:39
Gruibe
Guten Morgen
ich hoffe es haben alle den Feiertag gut überstanden.

Leider benötige ich noch immer Hilfe. Thorsten ich habe zwischenzeitlich den Link eingehängt. Hast Du oder Jemand anderer noch eine Idee?

Danke

Gruibe
Anzeige
AW: Tabellenblätter exportieren wenn....
02.11.2023 12:57:52
Oberschlumpf
Hi,

nun hab ich wieder mehr Zeit, und kann versuchen, auch dir weiterzuhelfen.

Aber deine Bsp-Datei (der Code) ist nicht lauffähig.
Klar, Download + Öffnen der Datei = kein Problem!

Aber nach Klick auf den Button "Tabellenblätter exportieren" im Blatt "Link Übersicht Gef.Beurteilung" kommt es schon nach nur wenigen Codezeilen zum Fehler!

...und zwar in dieser Zeile...
kd = wsDeckblatt.Range("D4").Value

...hier soll die Variable kd aus dem Blatt wsDeckblatt (im 1. Durchlauf = "0_Deckblatt") aus Zelle D4 den Wert erhalten.

Tja, ganz ganz doof ist nur, dass es im Blatt "0_Deckblatt" ganz viele Zellwerte - nicht mehr - gibt!

siehe hier...
Userbild

...das ist nur ein Ausschnitt! Weiter nach unten scrollen im Blatt zeigt noch viele, weitere "#BEZUG!"-Einträge.

Wie gesagt - schon dein Code allein - ist in der Bsp-Datei nicht lauffähig, aber ich versuch trotzdem, dir zu helfen - aber eben ungetestet...

Du musst jetzt in deiner Datei + im Code für den Button einige Änderungen vornehmen.

1. Füg im VBE in deiner Datei ein allgemeines Modul hinzu (nicht Klassenmodul, nicht Userform, sondern allgemeines Modul!)
Wenn du das geschafft hast, musst du im VBE im rechten Fenster, wo die ganzen Blatt- Modulnamen, Userfornnamen stehen, einen neuen Eintrag, Name "Modul1", sehen.

2. In dieses Modul1 fügst du bitte diesen Code ein:


Option Explicit

Function fcStatusIs2(ByVal blattname As String) As Boolean

Dim lshThis As Worksheet, lloRowStatus As Long ', lboOK As Boolean

Set lshThis = Sheets("Link Übersicht Gef.Beurteilung") 'wenn im Original anderer Blattname, dann hier anpassen

With lshThis
For lloRowStatus = 16 To .Cells(.Rows.Count, 1).End(xlUp).Row
If blattname = .Range("D" & lloRowStatus).Value Then
If .Range("B" & lloRowStatus).Value = 2 Then
fcStatusIs2 = True
Exit Function
End If
End If
Next
End With

Set lshThis = Nothing

End Function


3. So, wenn das erledigt ist, musst du einen Teil deines Codes für den Button ändern.
Bitte änder diesen Code...


For Each xWs In xWb.Worksheets
On Error GoTo NErro

If xWs.Visible = xlSheetVisible Then
xWs.Select
xWs.Copy
xFile = FolderName & "\" & xWs.Name & FileExtStr
Set xNWb = Application.Workbooks.Item(Application.Workbooks.Count)
xNWb.SaveAs xFile, FileFormat:=FileFormatNum
xNWb.Close False, xFile
End If

NErro:
xWb.Activate

Next

...um in...


For Each xWs In xWb.Worksheets
If fcStatusIs2(xWs.Name) = True Then
On Error GoTo NErro

If xWs.Visible = xlSheetVisible Then
xWs.Select
xWs.Copy
xFile = FolderName & "\" & xWs.Name & FileExtStr
Set xNWb = Application.Workbooks.Item(Application.Workbooks.Count)
xNWb.SaveAs xFile, FileFormat:=FileFormatNum
xNWb.Close False, xFile
End If
NErro:
xWb.Activate
End If
Next


DAS war's eigentlich schon - wenn ich a) nix falsch gemacht und b) nix vergessen habe.

Mein Versuch, meinen Code zu erklären:

1. Dein Wunsch ist ja, in deinem Button-Code nur die Blätter weiter zu verarbeiten, wenn in der selben Zeile in Spalte B (Status) eine 2 steht.

2. Mein Code, genauer meine Funktion "fcStatusIs2" überprüft im Blatt "Link Übersicht Gef.Beurteilung" eben, ob für das gerade geprüfte Blatt in Spalte B eine 2 steht.
Und nur dann, wenn in Spalte B eine 2 steht, wird dein weiterer Code, beginnend mit On Error GoTo NErro durchgeführt.
Wenn in Spalte B - nicht - eine 2 steht, wird das gerade geprüfte Blatt übersprungen, und es wird das nächste Blatt geprüft.

Konnte ich helfen?

Ciao
Thorsten

...noch ein Tipp...
Egal, ob du eine vollständige, oder wie hier, eine verkleinerte Bsp-Datei für uns zum Download anbietest - bitte, bitte teste genau die Bsp-Datei, ob sie denn auch noch immer funktioniert, bevor du sie uploadest.
Anzeige
AW: Tabellenblätter exportieren wenn....
04.11.2023 16:17:08
Gruibe
Hallo Thorsten,
Super. Besten Dank schon mal. Auch ich habe wieder etwas mehr Zeit. Alle Pflichtveranstaltungen erledigt.
Ich teste und melde mich wieder.

Grüße
Gruibe
AW: Tabellenblätter exportieren wenn....
04.11.2023 17:59:26
Gruibe
Hallo Thorsten,
das funktioniert ja Prima. Besten Dank.

Eine Bitte hätte ich noch. Kam soeben noch auf.
Wie ist es möglich das gesuchte Worksheet, also das mit Status 2, gleichzeig noch in ein anderen Verzeichnis \aktuell im gleichen Pfad zu kopieren und falls bereits eine vorhanden ist, diese überschreiben.

Danke Dir

Grüße
Gruibe
AW: Tabellenblätter exportieren wenn....
04.11.2023 18:17:51
Oberschlumpf
Hi (hast du eigtl auch einen Vornamen?),

änder diesen Code...


xNWb.SaveAs xFile, FileFormat:=FileFormatNum
xNWb.Close False, xFile

...um in...


xNWb.SaveAs xFile, FileFormat:=FileFormatNum
xFile = "dein anderer Pfad" & "\" & xWs.Name & FileExtStr
xNWb.SaveAs xFile, FileFormat:=FileFormatNum
xNWb.Close False, xFile


Anstelle von "dein anderer Pfad" musst du natürlich dein anderes, vorhandenes Wunschverzeichnis eintragen.

Hilfts?

Ciao
Thorsten
Anzeige
AW: Tabellenblätter exportieren wenn....
06.11.2023 06:06:39
Gruibe
Guten Morgen Thorsten,
ich Danke Dir für die Hilfe.
Es funktioniert wunderbar. In diesem Bereich bin ich einfach noch nicht so fit.

Ja ich habe einen Vornamen.

Vielleicht bis zum nächsten Mal.

Grüße
Günther
bitte, gerne Günther...vllt bis zum nächsten Mal - owT
06.11.2023 06:57:31
Oberschlumpf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige