(Excel) Speichern verbieten / HTML-Code kopieren

Dieses Thema (Excel) Speichern verbieten / HTML-Code kopieren im Forum "Microsoft Office Suite" wurde erstellt von Jenz, 1. März 2005.

Thema: (Excel) Speichern verbieten / HTML-Code kopieren Hallo zusammen, ich bastele gerade exzessiv mit Excel herum, und bin dabei auf 2 Punkte gestoßen, an denen ich...

  1. Hallo zusammen,

    ich bastele gerade exzessiv mit Excel herum, und bin dabei auf 2 Punkte gestoßen, an denen ich nicht weiter weiß.

    1. Speichern (überschreiben) verbieten
    Ist es möglich eine Arbeitsmappe per Makro dahingehend zu schützen, dass sie nicht gespeichert, und damit überschrieben werden kann, sondern sich nur unter anderem Namen speichern lässt, dessen Vorschlag ich vorgeben kann?

    2. HTML-Code aus Zellen in Zwischenablage kopieren
    Ich habe Zahlenwerte und Quelltext-Strings aus verschiedenen Zellen per VERKETTEN zu einem HTML-Brocken zusammengefügt, welcher jetzt in einer einzigen Zelle ist. Zunächst mal lässt sich diese Zelle schlecht handeln, da sie per Eingabeleiste oben den ganzen Bildschirm füllt, aber das Hauptproblem ist: Sobald ich diese Zelle einfach kopiere, und in ein anderes Programm - und sei es nur notepad - einfüge, dann ist jedes verdoppelt.
    Aus height=10 wird also height=10. Wenn ich den Inhalt dieser Zelle jedoch ein der Eingabeleiste markiere und dann kopiere, bleibt alles normal.
    Ich möchte den Zellinhalt möglichst bequem per CommandButton in die Zwischenablage befördern, nun kenne ich mich aber mit Makros noch nicht soweit aus, dass ich das hinbekomme, und die Makro-Aufzeichnung bricht ab, sobald ich in der Eingabeleiste hantiere... Wie kann ich das am besten lösen?

    Kann mir da jemand helfen? ???
     
  2. 1. Ja, aktiviere den Schreibschutz für die Datei.
    2. Passe, da müssen die Office-Gurus ran ;D

    Cheers,
    Joshua
     
  3. *aarg* da hätt ich auch selber drauf kommen können. :-[ danke PCDjoshua
    lässt sich der name trotzdem noch irgendwie aus bestimmen zellen/variablen der mappe vorgeben?
     
  4. Hi Jenz,

    für das Problem 2 die folgenden 2 Makros. In der Symbolleiste kannst Du die zwei neue Button anlegen und die Makros zuweisen. So kannst du sie jederzeit aufrufen.
    Code:
    Public Sub InhaltEinerZelleAlsTextInsClipboard()
      Dim myDataObj As DataObject, s_tmp As String
     ->eine Zelle selektiert ?
      If Selection.Count = 1 Then
        Set myDataObj = New DataObject
       ->als Text ins DataObj
        s_tmp = Selection.Value
        myDataObj.SetText s_tmp, 1
       ->DatObj ins Clipboard
        myDataObj.PutInClipboard
        Set myDataObj = Nothing
      Else
        MsgBox (Mehr als eine Zelle selektiert.)
      End If
    End Sub
    Public Sub InhaltClipboardAlsTextInEineZelle()
      Dim myDataObj As DataObject, s_tmp As String
     ->eine Zelle selektiert ?
      If Selection.Count = 1 Then
       ->DatObj ins Clipboard
        Set myDataObj = New DataObject
        myDataObj.GetFromClipboard
       ->als Text aus DataObj
        s_tmp = myDataObj.GetText(1)
        Selection.Value = s_tmp
        Set myDataObj = Nothing
      Else
        MsgBox (Mehr als eine Zelle selektiert.)
      End If
    End Sub
    zum Problem 1:
    Abfangen kannst Du das Speichern-Ereignis mit einem Makro in der Code-Seite->DieseArbeitsmappe'.
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
      If Not SaveAsUI Then
        MsgBox ( _
          Bitte benutzen Sie den SpeichernUnter und geben Sie der Datei den Namen xxxx.)
        Cancel = True
      End If
    End Sub
    Um den Datei-Namen zu kontrollieren, müßtest du den Windows-Speichern-Dialog aufrufen (API nicht Excel) und dessen Rückgabe (Pfad/Dateiname) auswerten und bei zulässigem Dateinamen dann selbst speichern. Das ist etwas aufwendiger ...


    Gruß Matjes  :)
     
  5. Hey Super! Das ist genau das, was ich brauchte! Vielen Dank Matjes!

    nochmal zum (gelösten) 2. Problem: Kann ich das Selection.Value auch durch eine ganz bestimmte Zelle einer Tabelle - nicht selektiert - ändern? Und, wie?

    Dass der riesen Zellinhalt mir beim selektieren nicht mehr den ganzen Bildschirm verdeckt hab ich jetzt auch per ausblenden im geschützen Arbeitsblatt hinbekommen.

    und zum 1.: Danke dir auch für dieses Makro. Wenn da erst n API benötigt wird werde ich mich wohl mit dem guten alten Schreibschutz zufriedengeben. Kann ich im Makro ohne API den aktuellen Dateinamen abrufen? Sozusagen: IF Dateiname=Standart THEN SaveAs-Prüfung ELSE Speichern lassen. So dass also, wenn der Dateiname bereits nicht mehr dem Original entspricht gespeichert werden darf?

    jenz.
     
  6. Hallo Jenz,

    Code:
    Selection.Value
    kannst durch
    Code:
    Activesheet.cells(z,sp).value 
    ersetzen. z ist dabei durch die Zeilennummer zu ersetzen, sp durch die Spaltennummer (sp = 3 entspricht z.B. C).

    Zum Speichern Problem:
    Zum Zeitpunkt des Ereignisses Workbook_BeforeSave steht ja der Name noch nicht fest. Er soll ja erst ausgewählt werden. Das Ereignis, welches du suchst, wäre Workbook_NachDateinamenAussuchen - und das gibt es nicht. :'( Wäre nur mit API machbar.

    Noch eine Bemerkung: wenn jemand beim Aufruf der Datei die Makros deaktiviert, kann er sowieso machen was er will. So ein allgemeiner Grundsatz ist: Gegen Sabotage kann man sich nicht vollkommen schützen. Also sollte eigentlich ein Hinweis ausreichen.

    Gruß Matjes  :)
     
  7. Alles klar, habs so gebastelt
    Code:
    s_tmp = ActiveWorkbook.Sheets(Tabelle2).Cells(21, 3).Value
    Wegen dem Speichern: Es handelt sich ja um ein Workbook, welches bereits abgespeichert ist - also schon einen Dateinamen hat. Sprich: ein leeres Formular als Vorlage. Das soll dann nur unter anderem Namen gespeichert werden als die Vorlage. Wenn allerdings schon nicht mehr das Original bearbeitet wird, sondern eine Kopie mit anderem Namen, dann darf gespeichert werden. Ich suche also Workbook_CheckOriginal oder so ;)
     
  8. also als Beispiel für eine Datei namen test.xls:
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      If Not SaveAsUI Then
        If ActiveWorkbook.Name = test.xls Then
          MsgBox ( _
            Bitte benutzen Sie den SpeichernUnter und geben Sie der Datei den Namen xxxx.)
          Cancel = True->hiermit wird Save abgebrochen
        End If
      End If
    End Sub
    Nachteilig ist, daß beim SpeichernUnter der alte Dateiname als Vorgabe dient.  :mad:
    Gruß Matjes  :)
     
  9. ja, genau so passt das! :)
    Mit dem kleinen Nachteil kann ich leben.

    Tausend Dank Matjes!
     
Die Seite wird geladen...

(Excel) Speichern verbieten / HTML-Code kopieren - Ähnliche Themen

Forum Datum
Summenfunktion mit Kriterium (Excel) Windows XP Forum 24. Juli 2012
Geldbetrag in Einzelbeträge aufteilen (Excel) Microsoft Office Suite 31. Okt. 2005
Berechnen einer Zeitspanne (Excel) Microsoft Office Suite 13. Mai 2005
Files als .XML exportieren unter Office (Excel) 2k Windows XP Forum 25. Okt. 2004
Makro um aktuelle Seite zu drucken (Excel) Microsoft Office Suite 3. Okt. 2003