ich habe in meiner Excel Datei mehrere Tabellenblätter, die ich zur Zeit einzeln mit einem "Speicherbutton" separat aus der großen Datei in eine kleine Excel-Datei speichern lasse. Nun würde ich gern die Funktion verbessern, indem der Benutzer nur einen Speicherbutton besitzt und dieser ihm alle Tabellenblätter auflistet die ich vorher im Programmcode festgelegt habe, so dass er durch Häkchen setzen selbst entscheiden kann, welche Tabellenblätter er gern in die neue Excel-Datei speichen möchte.
z.B. gibt es die Tabellenblätter:
Input
Output
Rp-Vergleich
REA Messwerte
und der Benutzer entscheidet sich nun dafür die ersten 3 in seine von ihm benannte neue Excel-Datei zu speichern. Dazu tut sich ihm (am besten wie bei der AddIn-Einstellung) ein Fenster auf, worin er die Häkchen für diese Tabellen setzt und anschließend der Speicherbutton einsetzt. Welcher derzeit den Benutzer die Excel-Datei, sowie den Speicherort dieser Datei festlegen lässt. Dabei ist bereits berücksichtigt, dass der Programmcode und die Buttons in der neuen Excel-Datei entfernt wird. Was mir hier noch fehlt, dass die Formeln und Bezüge zur alten Datei entfernt werden und somit nur die Werte der Zellen gespeichert werden sollen.
Der "Speicherbutton" sieht derzeit vom CODE so aus:
-------------------------------------------------------------------
Private Sub Speichern_Tabelle_Output_Click()
Dim varSaveAsName As Variant
Dim objButtons As Object, objVBA As Object
If MsgBox("Wollen Sie wirklich das angezeigte Tabellenblatt 'Output' " & vbCr & _
"für künftige Untersuchungen in einer seperaten Excel-Datei speichern?", _
vbYesNo, "Speichern Ja oder Nein?") = vbNo Then
Exit Sub
End If
varSaveAsName = Application.GetSaveAsFilename(, "EXCEL Files (*.xls), *.xls", , " Speichern unter")
If VarType(varSaveAsName) vbBoolean Then
Application.ScreenUpdating = False
ActiveWorkbook.Worksheets("Output").Copy
With ActiveWorkbook
.SaveAs varSaveAsName
For Each objButtons In .Worksheets("Output").OLEObjects
If TypeName(objButtons.Object) = "CommandButton" Then
objButtons.Delete
End If
Next objButtons
On Error GoTo Errorhandler
For Each objVBA In .VBProject.VBComponents
With objVBA.CodeModule
.DeleteLines 1, .CountOfLines
End With
Next objVBA
.Save
.Close
End With
' VBA Speichern sicherstellen trotz Makrokollision
Workbooks.Open varSaveAsName
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.ScreenUpdating = True
End If
Exit Sub
Errorhandler:
Application.ScreenUpdating = True
If Err.Number = 1004 Then
MsgBox "Das Löschen des VBA Codes ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung VBA Makro"
Else
MsgBox "Err.Number = " & Err.Number & ". " & Err.Description, vbCritical
End If
End Sub
Hat wer von euch eine Idee wie ich den Speicherbutton nach den oben besprochenen Vorgaben verbessern kann? Bin für jede Hilfe sehr dankbar ^^
Gruß,
Ronny