Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speichern ohne Makro

Forumthread: Speichern ohne Makro

Speichern ohne Makro
12.04.2019 12:13:46
Al
Hallo zusammen,
ich habe mir ein Button Ausgabe gebastelt, der aus einer vorhandenen Exceldatei (xmlsm) eine Datei ohne Makros erstellen, bestimmte Blätter und Links entfernen soll. Das klappt auch soweit, allerdings dauert das Erstellen der xlsx sehr lange.
Kann mir jemand helfen den Code so umzumodeln, dass die Ausgabe schneller geht? Ich glaube, dass in dem Makro "Ausgabe" ein "logischer Fehler" liegt, den ein erfahrener Programmiere anpassen kann.
Danke für die Mühe.
Anbei die Datei. Ich war gezwungen aufgrund des max. Uploads einige Arbeitsblätter zu entfernen.
Gruß
Al
https://www.herber.de/bbs/user/129104.xlsm
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern ohne Makro
12.04.2019 12:38:07
Daniel
Hi
man kann dir bestimmt helfen.
allerdings solltest du es den potentiellen Helfern so einfach wie möglich machen und sie nicht zusätzlich mit unnötigen Aufgaben wie dem Knacken von Passwörtern beschäftigen.
Gruß Daniel
AW: Speichern ohne Makro
12.04.2019 13:05:09
Al
Hoppla,
Danke für den Hinweis.
Anbei die Datei ohne Passwort.
Gruß
Al
https://www.herber.de/bbs/user/129108.xlsm
Anzeige
AW: Speichern ohne Makro
12.04.2019 13:51:58
EtoPHG
Hallo Al,
Wieso alles kopieren und dann löschen?
Lieber nur das kopieren was nötig ist!
Also probier mal:
Sub Augabe()
Dim wb As Workbook, ws As Worksheet, sh As Shape
Const dontCopy As String = _
";README;Daten;P-0173381-A-18;P-0204502-A-18;P-0204526-A-18" & _
";3830-15-1117;3830-15-1118;3830-15-1119;3830-16-1131;3830-16-1133" & _
";3830-17-1136;3830-17-1137;3830-17-1139;3830-17-1140;3830-14-1104"
Application.ScreenUpdating = False
Set wb = Workbooks.Add(xlWBATWorksheet)
For Each ws In ThisWorkbook.Worksheets
If InStr(dontCopy, ";" & ws.Name & ";") = 0 Then _
ws.Copy After:=wb.Sheets(wb.Sheets.Count)
Next
For Each Link In wb.LinkSources(xlLinkTypeExcelLinks)
wb.BreakLink Name:=Link, Type:=xlLinkTypeExcelLinks
Next
For Each sh In wb.Sheets("ONSHORE").Shapes
If InStr(1, sh.Name, "CommandButton") = 0 Then sh.Delete
Next
Application.DisplayAlerts = False
wb.Sheets(1).Delete
wb.SaveAs Replace(ThisWorkbook.FullName, ".xlsm", ".xlsx"), xlOpenXMLWorkbook
Application.DisplayAlerts = True
wb.Close False
MsgBox "Gespeichert im selben Verzeichnis, ohne Makros & Verlinkungen"
Application.ScreenUpdating = True
End Sub
Gruess Hansueli
Anzeige
AW: Speichern ohne Makro
12.04.2019 14:10:01
Al
Hallo Hansueli,
genau das war ich gesucht habe. Die Ausgabe dauert jetzt nur noch wenige Sekunden. Besten Dank.
Eine Frage noch: Kannst du mir sagen, wieso die ausgegebene xlsx-Datei immer noch eine Verknüpfung zur xlsm-Datei anzeigt? Ich dachte ich hätte dies mit der Codezeile
For Each Link In wb.LinkSources(xlLinkTypeExcelLinks)
wb.BreakLink Name:=Link, Type:=xlLinkTypeExcelLinks
Next
erschlagen.
Gruß
Al
Anzeige
Verknüpfung kommt von DropDown-Liste
12.04.2019 14:33:15
DropDown-Liste
Hallo Al,
Die Verknüpfung basiert auf der Gültigkeitsliste in Spalte D des Blatts "ONSHORE".
Da die Tabelle "Daten" nicht mitkopiert wird, verliert diese Liste die Referenz.
In Spalte D müsste also die Datengültigkeit gelöscht werden, dann ist auch die Verknüpfung weg.
Gruess Hansueli
Anzeige
@EtoPHG_ Danke dir.
12.04.2019 15:47:52
Al
Nun bin ich restlos glücklich.
Danke dir.
Schönes Wochenende.
Al
No problemo... Schönes Knochenende ;-)
12.04.2019 16:26:51
EtoPHG

;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige