Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
304to308
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
304to308
304to308
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Workbook & Variable

Workbook & Variable
04.09.2003 09:35:18
Martin
Hallo,

Eine Exceldatei führt folgendes Makros auf Wunsch aus
1. Eine bestimmte Tabelle (Sheet) aus der Arbeitsmappe wird in ein neues Workbook kopiert
2. Dieses neue Workbook soll per Outlook verschickt werden (ohne vorher abgzuspeichern!). Die Rezipienten sind in einem Sheet des Ausgangsworkbook aufgelistet und werden per zweitem Makro ausgelesen.

Das Problem, das ich habe, ist, dass ich das neu erstellte Workbook nicht ansprechen kann, da es ja nicht abgespeichert werden soll. Die Versuche, es mittels Variablen anzusprechen sind bisher gescheitert. Hier meine beiden Makros.

Wo liegt der Fehler? Das Makro unten lädt das Ausgangsworkbook, nicht aber das frisch erstellte in Outlook.


Dim NewWB As Workbook


Sub CopySheet()
On Error Resume Next
ActiveSheet.Cells.Select
Selection.Copy
Range("B10").Select
Workbooks.Add
Set NewWB = ThisWorkbook
Selection.PasteSpecial Paste:=xlValues
Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
Range("B10").Select
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
End With
Workbooks("Ausgangsworkbook").Activate
SendSheet
End Sub




Sub SendSheet()
Dim objOutlook As Object
Dim objMail As Object
Dim i As Integer
Dim strTO As String
Dim strCC As String
Dim MailSubj As String
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
On Error Resume Next
' // "MAIL TO"
For i = 1 To Range("MailTO").Rows.Count
strTO = strTO & Range("MailTO").Rows(i).Value & ";"
Next i
'// "MAIL CC"
For i = 1 To Range("MailCC").Rows.Count
strCC = strCC & Range("MailCC").Rows(i).Value & ";"
Next i
'// SUBJECT
MailSubj = ThisWorkbook.Sheets("Mail").Range("MailSubj")
With objMail
.To = strTO
.cc = strCC
.Subject = MailSubj
'.Body = ""
.Attachments.Add NewWB.FullName 'ActiveWorkbook.FullName
.Display
.ReadReceiptRequested = False
End With
Set objOutlook = Nothing
Set objMail = Nothing
End Sub


Gruss,
Martin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook & Variable
04.09.2003 10:25:54
Martin Beck
Hallo Martin,

nur ein Versuch (ungetestet). Ersetze mal

ThisWorkbook

durch

ActiveWorkbook

Gruß
Martin Beck
AW: Workbook & Variable
04.09.2003 11:06:33
Martin
nein, geht nicht
AW: Workbook & Variable
04.09.2003 11:23:27
Martin Beck
Hallo Martin,

eine genauere Fehler-/Problembeschreibung wäre hilfreich. Mal ein paar generelle Anmerkungen:

1. ThisWorkbook ist die Mappe, in der der Makrocode steht, die neu geöffnete Mappe ist das ActiveWorkbook. Daher mein erster Vorschlag, den Du in jedem Fall aufrecht erhalten mußt.

2. Beim Aufruf des SendSheet-Makros mußt Du die Variable NewWB mit übergeben, sonst entschwindet sie im Nirwana und das Makro SendSheet spuckt Dir einen Fehler aus. Im Prinzip geht die Übergabe so:


Sub CopySheet()
Dim NewWB As Workbook
Workbooks.Add
Set NewWB = ActiveWorkbook
Call SendSheet(NewWB)
End Sub



Sub SendSheet(NWB)
MsgBox NWB.Name
End Sub


3. Das Kopieren der Tabelle ist elend umständlich, versuche mal die ganzen selects rauszunehmen, dann ist auch die Fehlersuche einfacher.

Gruß
Martin Beck
Anzeige
AW: Workbook & Variable
04.09.2003 12:11:12
Martin
Martin,

habe den Code etwas vereinfachen können und deine Vorschläge eingebaut. Ergebnis: Es wird zwar kopiert und es gibt auch keine Fehlermeldung, leider wird aber auch nichts ins Mail geladen (keine Datei).
Damit es klar ist, ich will nicht die Mappe in Outlook laden, die den Code hat, sondern die neu erschaffene. Diese korrekt anzusprechen scheint aber nicht zu funktionieren. Vielleicht liegt das Problem auch woanders, zB in dem Teil "Attachments.Add NewWB.FullName" im Makro "SendSheet"?
Hier der Code (unnützes Zeug zB Formatierung wurde weggelassen)


Sub CopySheet()
Dim NewWB As Workbook
ActiveSheet.Cells.Copy
Workbooks.Add
Set NewWB = ActiveWorkbook
Selection.PasteSpecial Paste:=xlValues
Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
Workbooks("Ausgangsmappe.xls").Activate
Call SendSheet(NewWB)
End Sub




Sub SendSheet(NewWB)
Dim objOutlook As Object
Dim objMail As Object
Dim i As Integer
Dim strTO As String
Dim strCC As String
Dim MailSubj As String
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
On Error Resume Next
' // "MAIL TO"  - Range
For i = 1 To Workbooks("Ausgangsmappe.xls").Sheets("Mail").Range("MailTO").Rows.Count
strTO = strTO & Workbooks("Ausgangsmappe.xls").Sheets("Mail").Range("MailTO").Rows(i).Value & ";"
Next i
'// "MAIL CC" - Range
For i = 1 To Workbooks("Ausgangsmappe.xls").Sheets("Mail").Range("MailCC").Rows.Count
strCC = strCC & Workbooks("Ausgangsmappe.xls").Sheets("Mail").Range("MailCC").Rows(i).Value & ";"
Next i
'// SUBJECT
MailSubj = Workbooks("Ausgangsmappe.xls").Sheets("Mail").Range("MailSubj")
With objMail
.To = strTO
.cc = strCC
.Subject = MailSubj
'.Body = ""
.Attachments.Add NewWB.FullName
.Display
.ReadReceiptRequested = False
End With
Set objOutlook = Nothing
Set objMail = Nothing
End Sub


Gruss,
Martin
Anzeige
AW: Workbook & Variable
04.09.2003 12:44:55
Martin Beck
Hallo Martin,

ich kann nur raten, da ich kein Outlook habe und Dein Makro nicht testen kann.

Möglicher Ansatz: Laß mal das Fullname weg und ergänze einen Send-Befehl (den vermisse ich in Deinem Code), also

With objMail
.To = strTO
.cc = strCC
.Subject = MailSubj
'.Body = ""
.Attachments.Add NewWB
.Display
.ReadReceiptRequested = False
.send
End With

Ansonsten schau Dir mal die Beipiele hier an:

http://xlfaq.herber.de/gruppen/ex_email.html

Du könntest auch noch einmal mit einer offenen Datei testen, die Du gespeichert hast und deren Namen Du kennst.

Gruß
Martin Beck
Anzeige
AW: Workbook & Variable
05.09.2003 09:00:33
Martin
Hallo Martin,

Der Befehl .Send ist dann nicht erforderlich, wenn du .Display angibst. Der User soll die Mail vorher checken, bevor sie rausgeht.

Ich habe noch weitere Methoden ausprobiert, alle erfolglos. Das Ergebnis ist nunmehr so, dass ich die neu geschaffene Datei abspeichere und sie dann in Outlook lade, das geht.

Danke für deine Hilfe
Gruss,
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige