Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA für Werte und Formate einzelner Blätter

VBA für Werte und Formate einzelner Blätter
09.02.2017 11:20:22
Mathi
Hallo liebe Excel-Könner!
Ich möchte aus einer Mappe einzelne Blätter an Outlook anhängen.
Und zwar nur Werte und Fromate.
Gestern habe ich von einem netten User diesen Code erhalten, der teilweise funktioniert.
Option Explicit
Sub Kopieren()
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Kopie"
With ActiveSheet.UsedRange.Cells
.Value = .Value
End With
'ActiveSheet.Copy
Application.Dialogs(xlDialogSendMail).Show _
"musstermann@anbieter.de", "Betreff"
Application.DisplayAlerts = False
ActiveSheet.Delete 'Kopie wieder löschen
Application.DisplayAlerts = True
End Sub
Nach "End With" habe ich den Befehl "ActiveSheet.Copy" außer Gefecht gesetzt.
so funktioniert der Code, hängt aber die Ganze Mappe an Outlook.
Wenn ich den Befehl aktiviere, wird zwar ein einzelnes Blatt Kopiert und angehängt, aber die Kopie bleibt in Der Mappe und kann nicht mehr gelöscht werden.
Und ich kriege eine Fehlermeldung.
Die vorletzte Zeile "ActiveSheet.Delete" wird gelb markiert, also der Befehl bleibt hängen.
Hätte jemand einen Tipp, wie ich da vorzugehen habe.
LG
Mathi

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA für Werte und Formate einzelner Blätter
09.02.2017 17:52:03
fcs
Hallo Mathi,
für den E-Mail-Versand muss das zu versendende Blatt in eine neue Arbeitsmappe kopiert werden.
Dabb muss am Ende aber die Mappe ohne Speichern geschlossen werden.Wenn der Name der angehängten Datei relevant ist, dann muss man die neue Mappe auch speichern. Kann die Datei aber auch direkt nach ersteleb der Mail wieder killen.
Gruß
Franz
Sub Kopieren()
Dim strNameTemp As String
Dim WKB As Workbook
'Name der temporären Datei für den E-Mailversand
With ActiveWorkbook
strNameTemp = .Path & Application.PathSeparator _
& "Copy_" & Left(.Name, InStrRev(.Name, ".")) & "xlsx"
End With
'Blatt in neue Arbeitsmappe kopieren
ActiveSheet.Copy
Set WKB = ActiveWorkbook
With WKB.Sheets(1)
.Name = "Kopie"
With .UsedRange.Cells
.Value = .Value
End With
End With
'Datei emporärspeichern
Application.DisplayAlerts = False
WKB.SaveAs strNameTemp, FileFormat:=51
Application.DisplayAlerts = True
Application.Dialogs(xlDialogSendMail).Show _
"musstermann@anbieter.de", "Betreff"
Application.DisplayAlerts = False
WKB.Close savechanges:=False
Application.DisplayAlerts = True
'Kopie wieder löschen
If Dir(strNameTemp) Then Kill strNameTemp
End Sub

Anzeige
AW: VBA für Werte und Formate einzelner Blätter
10.02.2017 13:25:24
Mathi
vielen Dank erstmal!
Das Problem liegt daran, dass ich nur die Werte und Formate in das neue Blatt transportieren möchte.
Blätter, die ich verschicken möchte, beziehen ihre Inhalte aus anderen Blättern. Mit diesem Code habe ich in den Zellen nur " #Bezug! " sobald das Kopie erstellt wird.
Ich möchte, dass eine Kopie der Werte und Formate erstellt und verschickt wird.
lässt sich das Problem lösen ?
LG
Mathi
AW: VBA für Werte und Formate einzelner Blätter
10.02.2017 23:35:09
fcs
Halo Mathi,
deine Tabellenblätter enthalten wohl Formeln mit Funktionen, die nur innerhalb der Datei funktionieren - z.B. INDIREKT.
Da muss man das Makro etwas umbauen.
Das Blatt muss erst innerhalb der Datei kopiert werden, dann umbenannt und Formeln durch Werte ersetzt werden. Danach kann die Kopie dann in eine neue Mappe verschoben und als E-Mail-Anhang verschickt werden.
LG
Franz
Sub Kopieren()
Dim strNameTemp As String
Dim WKB As Workbook, wksCopy As Worksheet
With ActiveWorkbook
'Name der temporären Datei für den E-Mailversand
strNameTemp = .Path & Application.PathSeparator _
& "Copy_" & Left(.Name, InStrRev(.Name, ".")) & "xlsx"
'aktives Blatt kopieren
ActiveSheet.Copy after:=.Sheets(.Sheets.Count)
Set wksCopy = .Sheets(.Sheets.Count)
End With
With wksCopy
'Kopie umbenennen und Formeln durvh Werte ersetzen
.Name = "Kopie"
With .UsedRange.Cells
.Value = .Value
End With
'Blatt in neue Arbeitsmappe verschieben
.Move
End With
Set WKB = ActiveWorkbook
'Datei temporär speichern
Application.DisplayAlerts = False
WKB.SaveAs strNameTemp, FileFormat:=51
Application.DisplayAlerts = True
Application.Dialogs(xlDialogSendMail).Show _
"musstermann@anbieter.de", "Betreff"
Application.DisplayAlerts = False
WKB.Close savechanges:=False
Application.DisplayAlerts = True
'Kopie wieder löschen
If Dir(Pathname:=strNameTemp)  "" Then Kill Pathname:=strNameTemp
End Sub

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige