Registriert seit: 10.04.2014
Version(en): 2016 + 365
14.02.2016, 14:45
(Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2016, 14:45 von Rabe.)
Hi Stefan, (12.02.2016, 18:04)Steffl schrieb: bei der SaveAs-Methode kann man auch ein Worksheet verwenden oder habe ich da was falsch verstanden? ok, das muß ich mal versuchen, danke. worksheet.saveasDann geht das vielleicht auch ohne kopieren und ich kann das Blatt danach direkt löschen.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
14.02.2016, 15:33
(Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2016, 15:33 von Rabe.)
Jetzt habe ich eine Lösung gefunden und zwar hier: WorkSheet.SaveAsSub Copy_ActiveSheet_1()
'Working in Excel 97-2016
' http://www.rondebruin.nl/win/s5/win001.htm
'
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sourcewb = ActiveWorkbook
'Copy the sheet to a new workbook
ActiveSheet.Copy
Set Destwb = ActiveWorkbook
'Determine the Excel version and file extension/format
With Destwb
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007-2016
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
Case 52:
If .HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
Case 56: FileExtStr = ".xls": FileFormatNum = 56
Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If
End With
'Change all cells in the worksheet to values if you want
With Destwb.Sheets(1).UsedRange
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With
Application.CutCopyMode = False
'Löschen aller Schaltflächen
With ActiveSheet
For i = 1 To .Shapes.Count
.Shapes("Button " & i).Delete
Next i
End With
'Save the new workbook and close it
TempFilePath = "C:\Temp\" 'Application.DefaultFilePath & "\"
TempFileName = ActiveSheet.[K23] ' "Part of " & Sourcewb.Name & " " & Format(Now, "yyyy-mm-dd hh-mm-ss")
ActiveSheet.Name = ActiveSheet.[K23] 'Blattname ändern auf Rechnungsnummer
With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
.Close SaveChanges:=False
End With
MsgBox "You can find the new file in " & TempFilePath
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel Code erstellt und getestet in Office 15
Registriert seit: 29.09.2015
Version(en): 2030,5
14.02.2016, 22:32
(Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2016, 22:32 von snb.)
Warum nicht ? Code: Sub M_snb() With Thisworkbook.Sheets("sheet4") .ExportAsFixedFormat 0, "G:\OF\Beispiel.pdf" .SaveAs "G:\OF\Beispiel.xlsm", 52 End With End Sub
Registriert seit: 10.04.2014
Version(en): 2016 + 365
15.02.2016, 11:50
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 11:51 von Rabe.)
Hi, (14.02.2016, 22:32)snb schrieb: Warum nicht ? weil ich da nicht drauf gekommen bin. Hatte es ebenfalls mit "fixedfileformat, 1"... probiert, da kam aber was anderes raus. Deinen Vorschlag teste ich jetzt auch, das ist ja noch einfacher als das Makro oben. [getestet] Ich möchte es als xlsx abspeichern ohne Makros und ohne Rückfrage und vor allem ohne Buttons. Ich kann aber die Buttons so nicht vorher rauslöschen, denn dann sind sie ja in der Vorlage auch nicht mehr drin. Code: .ExportAsFixedFormat 0, "C:\Temp\" & .[K23] & ".pdf" 'Definition des Datei-/Blattnamens, Pfad anpassen! .SaveAs "C:\Temp\" & .[K23] & ".xlsx", 51
Registriert seit: 29.09.2015
Version(en): 2030,5
15.02.2016, 12:07
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 12:08 von snb.)
Code: Sub M_snb() With Thisworkbook.Sheets("sheet4") .ExportAsFixedFormat 0, "C:\temp\" & cells(23,11) & ".pdf" .Shapes.SelectAll Selection.Cut application.displayalerts=false .SaveAs "C:\temp\" & cells(23,11) & ".xlsx", 51 ActiveSheet.Paste End With End Sub
Registriert seit: 14.04.2014
Version(en): 2003, 2007
15.02.2016, 12:08
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 12:09 von atilla.)
Hallo Ralf, genau darauf wollte Stefan uns aufmerksam machen, dass man gar nich rumkopieren muss, sonder dass die SaveAs Methode es ohne macht: Stefan schrieb bezogen auf die SaveAs Metode: Zitat:Speichert Änderungen am Diagramm oder Arbeitsblatt in einer anderen Datei.
Gruß Atilla
Registriert seit: 29.09.2015
Version(en): 2030,5
muss sein: Code: Sub M_snb() With Thisworkbook.Sheets("sheet4") .ExportAsFixedFormat 0, "C:\temp\" & cells(23,11) & ".pdf" .Shapes.SelectAll Selection.Cut application.displayalerts=false .SaveAs "C:\temp\" & cells(23,11) & ".xlsx", 51 .Paste End With End Sub
Registriert seit: 10.04.2014
Version(en): 2016 + 365
15.02.2016, 21:39
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 21:39 von Rabe.)
Hi, (15.02.2016, 13:28)snb schrieb: muss sein: ich habe es jetzt so gemacht: Sub M_snb_erweitert()
strPfadDatei = ThisWorkbook.Path & "\" & ThisWorkbook.Name
With ThisWorkbook.Sheets("sheet4")
.ExportAsFixedFormat 0, "C:\temp\" & Cells(23, 11) & ".pdf"
.Shapes.SelectAll
Selection.Cut
Application.DisplayAlerts = False
.SaveAs "C:\temp\" & Cells(23, 11) & ".xlsx", 51
.Paste
End With
ThisWorkbook.SaveAs strPfadDatei & ".xlsb", 50
End Sub
VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel Code erstellt und getestet in Office 15
Registriert seit: 29.09.2015
Version(en): 2030,5
15.02.2016, 22:06
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016, 22:07 von snb.)
Code: Sub M_snb() Application.DisplayAlerts = False ThisWorkbook.SaveAs replace(thisworkbook.fullname,".xlsx",".xlsb"), 50
With ThisWorkbook.Sheets("sheet4") .ExportAsFixedFormat 0, "C:\temp\" & .Cells(23, 11) & ".pdf"
.Shapes.SelectAll Selection.Cut .SaveAs "C:\temp\" & .Cells(23, 11) & ".xlsx", 51 .Paste End With End Sub
PS. Problem mit dein formatierte Code: wenn man die kopiiert, werden alle Farben mitkopiiert. Und es ist ziemlich viel Arbeit die zu löschen. Ich habe nichts gegen die vom Forum gegebene Code tags.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, wenn das Tabellenblatt einzeln abgespeichert wird, dann steht die Gesamt-Datei unter dem neuen Namen im Arbeitsspeicher. Ich muß sie also anschließend noch unter dem Originalnamen im Originalpfad abspeichern., sonst sind die Änderungen in der Datei nciht enthalten. Darum das vorherige Sichern von Pfad und Dateiname. (15.02.2016, 22:06)snb schrieb: PS. Problem mit dein formatierte Code: wenn man die kopiiert, werden alle Farben mitkopiiert. Und es ist ziemlich viel Arbeit die zu löschen. Ich habe nichts gegen die vom Forum gegebene Code tags. wenn ich den Code in die Zwischenablage kopiere und in den VBA-Editor einfüge, sind dort keine Farben drin.
|