Microsoft Excel

Herbers Excel/VBA-Archiv

Versand Tabellenblatt ohne Formel OHNE VBA | Herbers Excel-Forum


Betrifft: Versand Tabellenblatt ohne Formel OHNE VBA von: Stef@n
Geschrieben am: 16.11.2009 14:53:58

Hallo
auf Basis der Antworten des Threads
https://www.herber.de/forum/messages/1117576.html
habe ich folgenden Code, der auch einwandfrei funktioniert ! (Mail wird erst versandt, wenn in
der Zelle O10 der Text "VERKAUF" steht.

Nur eine Nachfrage:
Es wird das Blatt kopiert INKL. der enthaltenen VBA-Codes und einer "Webabfrage" :|
Kann man den Code so ändern, dass wirklich NUR die Zell-Werte
kopiert werden und das Mail verschickt wird ?
Es sollen nicht die VBA-Codes und die Webabfrage mit kopiert werden.
Besonders wichtig wäre es, dass die VBA-Codes NICHT enthalten sind.

Hier mein Code

Sub Blatt_senden()
    Dim Empfaenger As String
    Empfaenger = [L13]
       If Range("O10").Value = "VERKAUF" Then
            Sheets("Abfrage").Copy
            With ActiveSheet
             .Cells.Copy
            .Cells.PasteSpecial Paste:=xlValues
            End With
            ActiveWorkbook.SendMail "xx@yyy.de", "erreicht > VERKAUFEN"
            Application.DisplayAlerts = False
            ActiveWindow.Close
            Application.DisplayAlerts = True
        End If
End Sub

Besten Gruss Stefan

  

Betrifft: AW: Versand Tabellenblatt ohne Formel OHNE VBA von: JogyB
Geschrieben am: 16.11.2009 15:07:38

Hi.

' Entfernt den Code aus der Arbeitsmappe
Sub entFerneCode(ByRef myWbk As Workbook)
    
    Dim codeObject As Object
    
    For Each codeObject In myWbk.VBProject.VBComponents
        With codeObject
        ' Alle Module (Type 1), Forms (Code 2) und Klassenmodule (Code 3) löschen
            If .Type >= 1 And .Type <= 3 Then
                myWbk.VBProject.VBComponents.Remove codeObject
            ElseIf .Type = 100 Then
        ' Etwaigen Code in Tabellenblättern und DieseArbeitsmappe löschen
                On Error Resume Next
                .CodeModule.DeleteLines 1, .CodeModule.CountOfLines
                On Error GoTo 0
            End If
        End With
    Next
    
End Sub
Das entfernt Dir den Code aus der Arbeitsmappe. Aufruf wäre in Deinem Fall
entferneCode(ActiveWorkbook)

Gruss, Jogy


  

Betrifft: @Jogy : Hat einen grossen Nachteil... von: NoNet
Geschrieben am: 16.11.2009 15:10:13

Hallo Jogy,

an diese Variante dachte ich auch zunächst, habe sie aber gleich wieder verworfen, da dazu der programmatische Zugriff auf das VB-Projekt erlaubt sein muss - und das ist in vielen Firmen per Policy untersagt :-(

Gruß, NoNet


  

Betrifft: AW: @Jogy : Hat einen grossen Nachteil... von: JogyB
Geschrieben am: 16.11.2009 15:15:15

Hi.

Stimmt den Haken muss man unter den Makro-Sicherheitseinstellungen noch setzen. Und wenn eine Policy das einschränkt, dann ist es natürlich mit der Variante vorbei.

Gruss, Jogy


  

Betrifft: AW: Versand Tabellenblatt ohne Formel OHNE VBA von: Stef@n
Geschrieben am: 16.11.2009 15:29:22

Hallo
dann löscht er mir doch aber die Codes in der Original-Datei !?
Es sollen aber nur die Codes in der zu versendenden Datei gelöscht werden.
Oder muss ich den Aufruf entferneCode(ActiveWorkbook)
in meinem Code "dazwischen-basteln" ?
Gruss Stefan


  

Betrifft: AW: Versand Tabellenblatt ohne Formel OHNE VBA von: JogyB
Geschrieben am: 16.11.2009 15:44:58

Hi.

Sobald Du das Arbeitsblatt kopiert hast, ist das ActiveWorkbook die neu erstellt Arbeitsmappe. Hätte ich genauer schreiben sollen.

Gruss, Jogy


  

Betrifft: AW: Versand Tabellenblatt ohne Formel OHNE VBA von: Stef@n
Geschrieben am: 16.11.2009 15:50:34

Hallo Jogy
ich hatte es falsch aufgerufen :O
Jetzt funktioniert dein Code einwandfrei ! :) Danke !
Bei uns ist der VBA-Zugriff (noch) erlaubt - insofern kann ich deinen Code nutzen.
Und falls sie ihn mal sperren sollten - wir haben jetzt ja noch eine andere Lösung *g

Schönen Tag noch
Stefan


  

Betrifft: Tabellenblatt ohne Formel+VBA per Mail versenden von: NoNet
Geschrieben am: 16.11.2009 15:08:04

Hallo Stefan,

probiere doch mal folgenden Code :

VBA-Code:
Sub Blatt_senden2()
    Dim Empfaenger As String
    Dim wsQuelle As Worksheet, wsTemp As Worksheet

    Empfaenger = [L13]
    If Range("O10").Value = "VERKAUF" Then
        Set wsQuelle = Sheets("Abfrage")
        Workbooks.Add
        Application.DisplayAlerts = False

        'Überflüssige Blätter der neuen Mappe löschen :
        If Sheets.Count > 1 Then
            For Each wsTemp In Sheets
                If wsTemp.Index > 1 Then wsTemp.Delete
            Next
        End If

        wsQuelle.Cells.Copy
        ActiveSheet.Name = wsQuelle.Name

        With ActiveSheet.Cells
            .PasteSpecial Paste:=xlValues   'Werte einfügen
            .PasteSpecial Paste:=xlFormats  'Formate einfügen
        End With

        ActiveWorkbook.SendMail Empfaenger, "erreicht > VERKAUFEN"
        ActiveWindow.Close
        Application.DisplayAlerts = True
    End If
End Sub

Code eingefügt mit Syntaxhighlighter 4.15


Gruß, NoNet


  

Betrifft: Bingo ! Thx an Nonet und JogyB von: Stef@n
Geschrieben am: 16.11.2009 15:37:00

Das ist es !
Dank Dir sehr Nonet
und auch JogyB
für die superschnelle Hilfe
Besten Gruß
Stefan


Beiträge aus den Excel-Beispielen zum Thema "Versand Tabellenblatt ohne Formel OHNE VBA"