Clever-Excel-Forum

Normale Version: Anfänger frage: Speichern ohne Makros
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Auch Hallo,

wenn der Button aus der ActiveX-Leiste ist, könnte es so gehen.

Code für den Button

Code:
Private Sub CommandButton1_Click()
  Application.OnTime Now + TimeValue("0:00:01"), "prcLoeschen"
End Sub
Und in einem allgemeinen Modul
Code:
Sub prcLoeschen()
  Application.DisplayAlerts = False
  Worksheets("Tabelle2").Delete
  Worksheets("Name der Tabelle").OLEObjects("Name des Buttons").Delete
  ThisWorkbook.SaveAs Filename:=Mid(ThisWorkbook.Name, 1, InStr(1, ThisWorkbook.Name, ".") - 1), FileFormat:=xlOpenXMLWorkbook
  Application.DisplayAlerts = True
End Sub
(29.05.2015, 11:22)Steffl schrieb: [ -> ]Auch Hallo,

wenn der Button aus der ActiveX-Leiste ist, könnte es so gehen.

Code für den Button



Code:
Private Sub CommandButton1_Click()
  Application.OnTime Now + TimeValue("0:00:01"), "prcLoeschen"
End Sub
Und in einem allgemeinen Modul


Code:
Sub prcLoeschen()
  Application.DisplayAlerts = False
  Worksheets("Tabelle2").Delete
  Worksheets("Name der Tabelle").OLEObjects("Name des Buttons").Delete
  ThisWorkbook.SaveAs Filename:=Mid(ThisWorkbook.Name, 1, InStr(1, ThisWorkbook.Name, ".") - 1), FileFormat:=xlOpenXMLWorkbook
  Application.DisplayAlerts = True
End Sub

ich kenne mich mit Makros recht wenig aus deswegen habe ich die Datei hochgeladen.
Kenne das nur mit allgemeinen Modul aber aber wo muss ich den Code für Private Sub CommandButton1_Click() eintragen ?
Button ist ein ActiveX Steuerelement.
Wird die Orginaldatei in deinem Beispielcode überschrieben ?

gruss

Suphi
Hallo,

ich kann mir deine Datei erst heute abend runterladen. Die Originaldatei wird nicht überschrieben (zumindest bei meinen Tests). Es existiert danach eine xlsm- und xlsx-Datei.
Hallo, 



Du wählst den Button aus und fügst ihn auf dem Tabellenblatt ein
dann einen Doppelklick in den Button ... das bringt Dich in den VBA-Editor und auch gleich in das richtige Arbeitsblatt.
Außerdem wurde mit dem Doppelklick in den Button auch gleich das Makrogerüst erstellt. Du mußt es nur noch mit Leben erfüllen.

Wird die Orginaldatei in deinem Beispielcode überschrieben ?

Achtung !!! rufst Du ein Makro auf und es wird irgendwas überschrieben kann das nicht mehr rückgängig gemacht werden.
Also teste erst alles in einer Testdatei oder in einem Testblatt.
Hallo,

das hat mal ein schlauer Vogel in einem Forum bereitgestellt:


Code:
Sub VBA_Code_entfernen()
Dim Ding As Object
Dim Zeile As Long

 For Each Ding In ActiveWorkbook.VBProject.vbcomponents

  'Type 100 = DieseArbeitsmappe und alle Tabellen
   If Ding.Type = 100 Then

     With ActiveWorkbook.VBProject.vbcomponents(Ding.Name).CodeModule
       For Zeile = 1 To .CountOfLines
         .DeleteLines 1
       Next Zeile
     End With

  'Type 1 = Modul, Type 2 = Klassenmodul, Type 3 = UserForm
   Else
     ActiveWorkbook.VBProject.vbcomponents.Remove Ding
   End If

 Next


End Sub

Hiermit speichere ich eine Datei als xlsx, habe aber anschließend die xlsm noch offen, was bei dem anderen Code nicht der Fall ist (auch aus dem Netz):


Code:
Private Sub CommandButton1_Click()
Dim StrDatei As String

Dim loLastRow As Long
Dim logefneu As Double
loLastRow = Cells(Rows.Count, 1).End(xlUp).Row
logefneu = WorksheetFunction.CountA(Range(Cells(1, 1), Cells(loLastRow, 21)))
If logefneu <> loGef Then
StrDatei = ThisWorkbook.Path & "\AAAAAA.xlsm"
Application.DisplayAlerts = False
Application.ScreenUpdating = False
ThisWorkbook.Save
ThisWorkbook.SaveAs Filename:="M:\AAAAAA.xlsx", FileFormat:=xlOpenXMLWorkbook
ThisWorkbook.SaveAs Filename:="M:\AAAAAA.xlsx", FileFormat:=xlOpenXMLWorkbook, ConflictResolution:=xlLocalSessionChanges
Workbooks.Open StrDatei
ThisWorkbook.Close savechanges = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End If
End Sub
Hallo,

ActiveSheet.Shapes("CommandButton1").Delete
(kann man übrigens auch mit dem Makrorekorder aufzeichnen)
und ... wenn es mehr als ein Button ist, dann eine Schleife drum.
hallo,

es ist kein ActiveX Steuerelement sondern Formularsteuerelement Button sry hab es verwechselt.
Ich hab nur ein Button und weiss net wie ich mit sovielen Codeteile umgehen soll die ihr gepostet habt.
Hab versucht über  ActiveX Steuerelement Button,bekomme es aber auch dort net zum laufen selbe fehlermeldung.
Für mein Anliegen hab ich extra ein Datei hochgeladen um zu verstehen was ich ändern muss dammit es läuft.
Ich würde mich freuen wenn ihr tipps geben könntet in bezug der Hochgeladene Datei.

gruss

Suphi
(29.05.2015, 14:36)Suphi schrieb: [ -> ]es ist kein ActiveX Steuerelement sondern Formularsteuerelement Button sry hab es verwechselt.
.... wäre aber wichtig gewesen

(29.05.2015, 14:36)Suphi schrieb: [ -> ]Ich hab nur ein Button und weiss net wie ich mit sovielen Codeteile umgehen soll die ihr gepostet habt.
.... stimmt nicht, es sind zwei

(29.05.2015, 14:36)Suphi schrieb: [ -> ]Hab versucht über  ActiveX Steuerelement Button,bekomme es aber auch dort net zum laufen selbe fehlermeldung.
.... weil es keine ActiveX-Elemente sind wundert mich das überhaupt nicht.

(29.05.2015, 14:36)Suphi schrieb: [ -> ]Für mein Anliegen hab ich extra ein Datei hochgeladen um zu verstehen was ich ändern muss dammit es läuft.
Ich würde mich freuen wenn ihr tipps geben könntet in bezug der Hochgeladene Datei.
.... also, eine Zeile, bestehend aus zwei oder drei Zellen ... bischen wenig Info, hast Du das Gefühl nicht auch?
Hallo,

mit diesem Code funktioniert es aber jetzt hab ich ein neues Problem...

Code:
Option Explicit
Const strFileName As String = "Dateiname"
Sub Speichern01()
   Dim wksSheet As Worksheet
   Dim varPath As Variant
   On Error GoTo Fin
   Application.DisplayAlerts = False
   varPath = Application.GetSaveAsFilename( _
       InitialFileName:=ThisWorkbook.Path & "\" & strFileName, _
       FileFilter:="Excel(*.xlsx), *.xlsx", _
       Title:="Speichern ohne Makros")
   If Not varPath = False Then
       For Each wksSheet In ThisWorkbook.Worksheets
           If wksSheet.Name <> ActiveSheet.Name Then
               wksSheet.Delete
           End If
       Next wksSheet
       With ActiveSheet
           .Shapes(Application.Caller).Delete
           .UsedRange.Value = .UsedRange.Value
       End With
       With ThisWorkbook
           .SaveAs varPath, 51
           .Close False
       End With
   End If
Fin:
   Application.DisplayAlerts = True
   If Err.Number <> 0 Then MsgBox "Fehler: " & _
       Err.Number & " " & Err.Description
End Sub

Wenn ich abspeicher wird auch das offene Dokument geschlossen und Excel öffnet sich neu ohne Vorlage quasi leer !
Wie kann ich das verhindern ?

gruss

Suphi
Hi,

mir scheint, Du liest die Beiträge der Helfer nicht.
Zumindest gibt es überhaupt keine Reaktion, keine Rückmeldung, keine Erklärung, nichts.

Was glaubst Du wohl, wie lange die Helfer sich das gefallen lassen?
Seiten: 1 2 3 4