Excel'den Mail Atan Makronun Özelleştirilmesi

Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Excel'den Mail Atan Makronun Ã?zelleştirilmesi

Selam bu forumun katkılarıyla hazırladığım bir excel belgemin bugün tarihli bir kopyasını her gün sonunda ilgili kişilere mail atan aşağıdaki makroma
Kod:
Sub Mail_Workbook_2()
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim wbname As String
    Addr = Array("i@com.tr", "m@com.tr", "a@com.tr", "p@gmail.com")
    Application.ScreenUpdating = False
    Sheets(1).Range("A1").Select
    Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Password = ""
    
    Set wb1 = ActiveWorkbook
    wbname = "C:/" & _
    Format(Now, "dd.mm.yyyy") & ".xls"
    wb1.SaveCopyAs wbname
    
    Set wb2 = Workbooks.Open(wbname)
    With wb2
        .SendMail Addr, Format(Now, "dd.mm.yyyy") & " Tarihli Rapor"
        .ChangeFileAccess xlReadOnly
         Kill .FullName
        .Close False
    End With
    Application.ScreenUpdating = True
    Sheets("GENEL").Range("A1").Value = "=today()"
    ActiveWorkbook.Password = "a"
End Sub
belgemin aslındaki değil kopyasındaki tanımlamaları silecek aşağıdaki makroyu
Kod:
    For i = ActiveWorkbook.Names.Count To 1 Step -1
    ActiveWorkbook.Names(i).Delete
Next
ve Mail_Workbook_2 makrosunu sildirecek bir kod eklemek istiyorum.
Ama dediğim gibi asıl belgemin kopyasındaki tanımlamalar ve makroyu silip ilgili e-mail adreslerine mail atmasını istiyorum bunları yukarıdaki makroma ekleyebilirsem tam istediğim gibi kullanışlı bir şey haline gelecek. Yardımlarınız için şimdiden teşekkürler...
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
bu makro silmek ile ilgili ondan önce tanımlamaları sildirme konusunda bir fikriniz var mı. Dış veri al'ın oluşturdğu tanımlama silme ile ilgili kodu yerleştirdiğimde ana belgeden de uçuyor ben sadece c:\ içine oluşturduğu bugün tarihli kopya belgenin içinden tanımlamaları ve makroyu silmesini istiyorum. Ana belgeyi her zaman kullanıyorum çünkü son durumu görmek için.
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Bir bakıma
Kod:
Set wb2 = Workbooks.Open(wbname)
    With wb2
sonra .sendmail demeden önce
Kod:
For i = ActiveWorkbook.Names.Count To 1 Step -1
    ActiveWorkbook.Names(i).Delete
Next
kodunu nasıl koyarım sorum cevabı burada mı acaba?
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Kod:
Sub Mail_Workbook_2()
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim wbname As String
    Addr = Array("i@com.tr", "m@com.tr", "a@com.tr", "p@gmail.com")
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Sheets(1).Range("A1").Select
    Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Password = ""
    
    Set wb1 = ActiveWorkbook
    wbname = "C:/" & _
    Format(Now, "dd.mm.yyyy") & ".xls"
    wb1.SaveCopyAs wbname
    
    Set wb2 = Workbooks.Open(wbname)
    With wb2
        For i = wb2.Names.Count To 1 Step -1
        wb2.Names(i).Delete
        Next
        .SendMail Addr, Format(Now, "dd.mm.yyyy") & " Tarihli Rapor"
        .ChangeFileAccess xlReadOnly
        Kill .FullName
        .Close False
    End With
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Sheets("GENEL").Range("A1").Value = "=today()"
    ActiveWorkbook.Password = "i"
End Sub
olarak tanımlamaları sildirmeyi başardım ancak makroyu sildiremedim oluşturalan kopya içindeki Mail_Workbook_2 makrosunu sildirmemde yardımcı olursanız sevinirim. Bu makroyu sildirip karşı tarafa yollarsak rapor tam halini almış olacak teşekkürler... Yardımlarınızı bekliyorum.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
bezl' Alıntı:
Bu makroyu sildirip karşı tarafa yollarsak rapor tam halini almış olacak teşekkürler... Yardımlarınızı bekliyorum.
Bu konuyla ilgili size daha önce bir cevap yazmıştım. Yukarıda arkadaşım htsumer'in işaret ettiği link ...
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Þimdi orda normal kodlar içerisine aşağıdaki kodu yazınca 10 Tutanak.xls belgesinin içindeki Module1'i siliyordu siliyordu
Kod:
  Set MyMod = Workbooks("10 Tutanak.xls").VBProject.VBComponents("Module1")
    Workbooks("10 Tutanak.xls").VBProject.VBComponents.Remove MyMod
    Set MyMod = Nothing
    Set MyMod = Workbooks("10 Tutanak.xls").VBProject.VBComponents("Module2")
    Workbooks("10 Tutanak.xls").VBProject.VBComponents.Remove MyMod
    Set MyMod = Nothing
Benim sorum:
1- Burada set ile (tam bilmediğim için) açılan bir belge mail atılıp kapatılıp siliniyor. Yukarıdaki kodda da set var nereye yerleştireceğimi bir türlü bulamadım (aynen mi yoksa değişik bir şekilde mi)
2- Orda modul vardı şimdi belge Genel Sheet'in içinde Mail_Workbook_2 adlı bir makro
inşaallah anlatabilmişimdir.
Yardımcı olursanız sevinirim. Elimde yağ, şeker, un var gözüküyor niye helvayı yapamıyor demeyin. Aşçılık başka bir şey...
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
İnşaallah bugün bu kodu yerleştirmeyi başarırız arkadaşların yardımıyla...
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Lütfen yardım, çok basit gibi görünen ama bir türlü yapılamayan işin içinizde oluşturduğu başarısızlık duygusuyla kaplanmış durumdayım.
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Biraz daha bekleyelim bakalım belki de çok zor bir çözümü vardır.
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
Outlook Ekspres için.
[vb:1:e764cb2507]

Sub SendShByEmail()
Dim wb As Workbook
Dim strdate As String
Dim Shname As Variant
Dim Addr As Variant
Dim N As Integer
Dim Sil As VBIDE.VBComponent

strdate = Format(Now, "dd-mm-yy h-mm-ss")
Shname = Array("Sayfa1")
Addr = Array("abs@hotmail.com", "ijr@hotmail.com")

Application.ScreenUpdating = False
For Each Sil In ActiveWorkbook.VBProject.VBComponents
If Sil.Type = vbext_ct_MSForm Then
ActiveWorkbook.VBProject.VBComponents.Remove Sil
End If
Next Sil
For N = LBound(Shname) To UBound(Shname)
Sheets(Shname(N)).Copy
Set wb = ActiveWorkbook
With wb
.SaveAs "Sheet " & Shname(N) _
& " " & strdate & ".xls"
.SendMail Addr(N), _
"Konu Adı yazılacak"
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With
Next N
Application.ScreenUpdating = True
End Sub[/vb:1:e764cb2507]
Extensibility referansı eklenmelidir.
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
htsumer çok teşekkür ederim ama bir çok uğraştan sonra hazırladığım bir makrom var ve makro silme kodunu oraya eklemek istiyorum sizin verdiğinizdeki kodu yerleştirdim birşey elde edemedim. Lütfen
Kod:
Sub Mail_Workbook_2() 
    Dim wb1 As Workbook 
    Dim wb2 As Workbook 
    Dim wbname As String 
    Addr = Array("i@com.tr", "m@com.tr", "a@com.tr", "p@gmail.com") 
    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 
    Sheets(1).Range("A1").Select 
    Selection.Copy 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
    Application.CutCopyMode = False 
    ActiveWorkbook.Password = "" 
    
    Set wb1 = ActiveWorkbook 
    wbname = "C:/" & _ 
    Format(Now, "dd.mm.yyyy") & ".xls" 
    wb1.SaveCopyAs wbname 
    
    Set wb2 = Workbooks.Open(wbname) 
    With wb2 
        For i = wb2.Names.Count To 1 Step -1 
        wb2.Names(i).Delete 
        Next 
        .SendMail Addr, Format(Now, "dd.mm.yyyy") & " Tarihli Rapor" 
        .ChangeFileAccess xlReadOnly 
        Kill .FullName 
        .Close False 
    End With 
    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 
    Sheets("GENEL").Range("A1").Value = "=today()" 
    ActiveWorkbook.Password = "i" 
End Sub
koduna "GENEL" excel sayfasının içindeki "Mail_Workbook_2" adlı makroyu sildirecek kodu eklememde yardımcı olursanız çok sevinirim. Yardımlarınızı hala bekliyorum. Lütfen...
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
Sayfayı Mail ile Gönderirken Kodların Silinmesi

belgemin aslındaki değil kopyasındaki tanımlamaları silecek .....
Ben sizin yapmak istediğinizi yukarıdaki cümlenizden şöyle anladım.
Genel adlı sayfanızın bir kopyasını mail olarak göndermek istiyorsunuz fakat göndereceğiniz bu sayfanın Modül kısmında kodlar silinerek.
Doğrumu anladım..
Aşağıdaki kodları size göre düzenledim.
Bu arada bukadar sayfa kodlarla doldu. :)

[vb:1:bd2e0aea59]Sub Mail_Workbook_2()
Dim wb As Workbook
Dim strdate As String
Dim Shname As Variant
Dim Addr As Variant
Dim N As Integer
Dim Sil As VBIDE.VBComponent

strdate = Format(Now, "dd-mm-yy h-mm-ss")
Shname = Array("GENEL")
Addr = Array("i@com.tr", "m@com.tr", "a@com.tr", "p@gmail.com")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets(1).Range("A1").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Password = ""


For Each Sil In ActiveWorkbook.VBProject.VBComponents
If Sil.Type = vbext_ct_MSForm Then
ActiveWorkbook.VBProject.VBComponents.Remove Sil
End If
Next Sil
For N = LBound(Shname) To UBound(Shname)
Sheets(Shname(N)).Copy
Set wb = ActiveWorkbook
With wb
.SaveAs "Sheet " & Shname(N) _
& " " & strdate & ".xls"
.SendMail Addr, Format(Now, "dd.mm.yyyy") & " Tarihli Rapor"

.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With
Next N
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Sheets("GENEL").Range("A1").Value = "=today()"
ActiveWorkbook.Password = "i"

End Sub[/vb:1:bd2e0aea59]
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
Acaba tam referans adı nedir.
Microsoft Visual Basic For Applications Extensibility
Birde Makro-->Güvenilen Yayımcılar->Visual Basic Project Erişimine Güven kutucuğunu işaretleyin.
Kolay gelsin.
 
Katılım
3 Mayıs 2005
Mesajlar
453
Excel Vers. ve Dili
2010 - Eng
Kod:
 Dim Sil As VBIDE.VBComponent
For Each Sil In ActiveWorkbook.VBProject.VBComponents
    If Sil.Type = vbext_ct_MSForm Then
      ActiveWorkbook.VBProject.VBComponents.Remove Sil
End If
Next Sil
bu kodlar makroyu silmek için kullandığınız kodlar değil mi? Denedim ama makroya bir şey yapmadı. Duruyor yerli yerinde.
 
Üst