Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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
Speichern und schließen eines Tabellenblattes
Peter
Hallo,
ich habe mir mit Hilfe/Makrorekorder diesen Code zusammengebaut:

Dim wb As Workbook, wbneu As Workbook
Dim intI As Integer
Dim astrLinks As Variant
Set wb = ThisWorkbook
ThisWorkbook.Sheets("Data").Copy
Set wbneu = ActiveWorkbook
Application.DisplayAlerts = False
With wbneu
.SaveAs Filename:="Data from " & Format(Now, "DD.MM.YYYY hhmmss") & ".xls", _
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=True, _
CreateBackup:=False, AddToMRU:=True
astrLinks = wbneu.LinkSources(Type:=xlLinkTypeExcelLinks) 'Link(s) zur Quelldatei  _
entfernen (ersetzt Formeln durch Werte)
For intI = LBound(astrLinks) To UBound(astrLinks)
wbneu.BreakLink _
Name:=astrLinks(intI), _
Type:=xlLinkTypeExcelLinks
Next
.Save
.Close
Application.DisplayAlerts = True
.Close savechanges:=False
MsgBox "Eine Kopie der Datei wurde auf dem Desktop gespeichert!", vbInformation
End With
Ich habe ein Problem, dass der Code mit dem astrLinks... nicht zu meinem Tabellenblatt passt. Dort habe ich lediglich drei CommandButtons, von denen einer diesen Code ausführt. Dieser soll im wbneu unterbunden werden, um nicht noch ein Sheet aus dem neuen Sheet machen zu können.
Zusätzlich würde ich gerne die Datei auf dem Desktop abspeichern können und das neue Sheet unbemerkt schließen. Die Befehle mit .Save und .Close funktionieren nicht?! Am besten sollte der Code nicht in das neue Sheet springen, da ich sonst wieder in mein altes Dokument zurück muss...
Könnt ihr mir beim Tuning aushelfen?
Viele Grüße, Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Speichern und schließen eines Tabellenblattes
09.04.2010 09:53:30
Oberschlumpf
Hi Peter
vielleicht hilft dir eine dieser zwei Ideen:
a) Schreibe direkt unter die DIM-Zeilen diese Zeile:

If ActiveWorkbook.Name  "Original.xls" Then Exit sub
für Original.xls musst du natürlich den Dateinamen von der Datei eintragen, in der der Code ausgeführt werden soll.
Mit der Befehlszeile wird zuerst geprüft, ob sich der Code in der "richtigen" Tabelle befindet. Wenn nicht, wird mit Exit Sub der Code nicht ausgeführt und verlassen.
b) ändere den Code so um, dass nicht mehr das ganze Blatt kopiert wird, sondern nur noch die Werte aus der Original-Datei in ein neues Tabellenblatt übertragen werden.
So hast du dann wirklich nur die Werte. VBA-Code ist dann keiner mehr vorhanden.
Einen Bsp-Code kann ich dir nicht zeigen, da ich deine Tabelle nicht kenne.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Speichern und schließen eines Tabellenblattes
09.04.2010 09:58:45
Andi
Peter, was willst Du den grundsätzlich realisieren? Mach mal bitte eine Aufgabenbeschreibung, damit man den VB Code besser nachvollziehen kann. Danke. Gruß Andi
AW: Speichern und schließen eines Tabellenblattes
09.04.2010 10:23:26
Peter
Hallo Thorsten, hallo Andi,
ich möchte mit dem Code:
1) das Tabellenblatt komplett kopieren, um die Formatierungen beizubehalten
2) das Tabellenblatt in eine neues File pasten (dabei soll der Quellcode für den CommandButton, welcher den Code ausführt, nicht mitkopiert werden!) und benennen "Data from ....", dieses soll im Hintergrund geschehen, also nach Möglichkeit soll die originale Datei nicht verlassen werden. Der Makrorekorder hat mir natürlich Code ausgespuckt, mit dem ich das neue File aktiviere...
3) Es soll schließlich das neue File auf dem Desktop abgespeichert und geschlossen werden, die MsgBox informiert lediglich über den ausgeführten Speichervorgang.
Viele Grüße und dankeschön ;) Peter
Anzeige
AW: Speichern und schließen eines Tabellenblattes
09.04.2010 10:31:58
Oberschlumpf
Hi Peter
Meines Wissens ist es nicht ganz so trivial, ein Tab.blatt komplett aber ohne Code zu kopieren.
Dazu müsstest du nachträglich den Code wieder löschen.
Was zwar möglich wäre, aber dazu ist erforderlich, dass "dem VBA-Projekt vertraut" wird - das is ne Einstellung unter Extras/Makro/Sicherheit (zumindest in Excel älter als 2007)
Diese Einstellung hätte dann aber wieder zur Folge, dass du für jeden Makro-Virus Tür + Tor öffnest.
Deswegen finde ich diese Lösung nicht gut.
So bleiben dir, zumindest soviel wie ich weiß, nur meine 2 Ideen.
Zu Idee 2 (b) noch die Info:
Außer den Werten kann man natürlich auch alle Formate kopieren und übetragen.
Und Idee 1 (a) erfüllt ja auch seinen Zweck. Der Code würde nur in der Originaldatei ausgeführt werden.
Ich habe sonst keine weiteren Ideen.
Ciao
Thorsten
Anzeige
AW: Speichern und schließen eines Tabellenblattes
09.04.2010 12:35:47
fcs
Hallo Peter,
baue dein VBA-Projekt ein wenig um.
Verschiebe die Button-Prozedur, die das Blatt "Data" kopiert in ein allgemeines Modul.
Verwende zum Starten der Prozedur die Schaltfläche aus der Symbolleiste "Formular".
Diese Schaltfläche löscht du dann im kopierten Blatt.
Mit nachfolgenden Anpassungen an deiner Prozedur sollte dann deine Wunschliste weitesgehend erfüllt werden.
Gruß
Franz
Sub Schaltfläche1_BeiKlick()
Dim wb As Workbook, wbneu As Workbook
Dim intI As Integer
Dim astrLinks As Variant
Dim sPfadNeu As String
Set wb = ThisWorkbook
sPfadNeu = VBA.Environ("Userprofile") & "\Desktop\" 'ggf. Anpassen
'   sPfadNeu = "C:\Dokumente und Einstellungen\"& VBA.Environ("Username") & "\Desktop\" 'ggf.  _
Anpassen
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Data").Copy
Set wbneu = ActiveWorkbook
wb.Activate
Application.DisplayAlerts = False
With wbneu
.SaveAs Filename:=sPfadNeu & "Data from " & Format(Now, "YYYY-MM-DD hhmmss") & ".xls", _
FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=True, _
CreateBackup:=False, AddToMRU:=True
astrLinks = wbneu.LinkSources(Type:=xlLinkTypeExcelLinks) 'Link(s) zur Quelldatei _
entfernen (ersetzt Formeln durch Werte)
For intI = LBound(astrLinks) To UBound(astrLinks)
wbneu.BreakLink _
Name:=astrLinks(intI), _
Type:=xlLinkTypeExcelLinks
Next
Application.DisplayAlerts = True
.Worksheets(1).Shapes("Schaltfläche 1").Delete 'Name der Schaltfläche anpassen!!!
.Save
.Close savechanges:=False
MsgBox "Eine Kopie der Datei wurde auf dem Desktop gespeichert!", vbInformation
End With
Application.ScreenUpdating = True
End Sub

Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige