[Yardım]  Excel sayfasının bir bölümünü butonla mail attırmak

Excel ile MS Outlook, Outlook Express, Gmail vb. programlar ile mail işlemleri hakkındaki bölüm.

Excel sayfasının bir bölümünü butonla mail attırmak

İleti#1)  Ceryanci33 » 08 May 2023 23:02

Arkadaşlar merhaba, aranızda çok yeniyim. Farklı bir sektörde çalıştığım için programlama bilgim maalesef yok. Bir excel dosyam var. Bu excel dosyasının belli hücrelerini ayrı kitap olarak oluşturup mail olarak göndermek için buton ekledim. Forumdan bulduğum kodu kullanarak mail attırabiliyorum. Fakat üç adet ekleme yapmam lazım.
Birincisi mailin kime gönderileceği sabit olduğu için kod içine eklemem lazım.
İkincisi excel sayfasında değişiklik yapılmaması için bazı hücreleri kilitleyip parola koydum. Sayfa kilitli olduğu zaman mail butonu çalışmıyor. Sayfa kilitli uyarısı veriyor. Bunu düzeltmem lazım.
Üçüncüsü mail olarak atmak istediğim hücre alanında başka makro butonları var. Maile onlar dahil olmuyor. Onları da dahil etmek istiyorum.
Çok fazla oldu biliyorum ama yardımcı olabilirseniz çok sevinirim.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Yıllık Maaş Bordrosu Hesaplama 2022

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#2)  Ceryanci33 » 08 May 2023 23:05

Soruda bahsettiğim kod aşağıdadır.

Sub mail_gonder()
Range("AV1:BI12").Select
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim I As Long
Set Source = Nothing
On Error Resume Next
Set Source = Selection.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
Exit Sub
End If
If ActiveWindow.SelectedSheets.Count > 1 Or _
Selection.Cells.Count = 1 Or _
Selection.Areas.Count > 1 Then
MsgBox " Bir hata oluştu:" & vbNewLine & vbNewLine & _
"Seçim yapmadınız, hücre aralığını seçin.", vbOKOnly, "Www.ExcelVBA.Net"
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & "\"
TempFileName = wb.Name & " " & Format(Now, "dd-mm-yyyy h-mm-ss")
If Val(Application.Version) < 12 Then
'Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'Excel 2007-2010
FileExtStr = ".xlsx": FileFormatNum = 51
End If
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
On Error Resume Next
For I = 1 To 3
.SendMail "", _
"Günlük Faaliyet Raporu"
If Err.Number = 0 Then Exit For
Next I
On Error GoTo 0
.Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#3)  Yken » 11 May 2023 20:01

1. Sayfa kilitli uyarısı
2. butonlar dahil olmuyor
3. mailin kime gönderileceği
Açıklamalar kod içinde büyükharflerle yapıldı.

Kod: Tümünü seç
Sub mail_gonder()
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim I As Long

Range("A1:B12").Select
Set Source = Nothing
On Error Resume Next
'1. BURASI SAYFA KORUMAYI KALDIR VE TEKRAR KOY
ActiveSheet.Unprotect Password:="" 'ŞİFRE VARSA AYARLA
Set Source = Selection.SpecialCells(xlCellTypeVisible)
ActiveSheet.Protect
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
Exit Sub
End If
If ActiveWindow.SelectedSheets.Count > 1 Or _
Selection.Cells.Count = 1 Or _
Selection.Areas.Count > 1 Then
MsgBox " Bir hata oluştu:" & vbNewLine & vbNewLine & _
"Seçim yapmadınız, hücre aralığını seçin.", vbOKOnly, "Www.ExcelVBA.Net"
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Paste '2. BURASI SEÇİLİ ALANDAKİ BUTONLARI DA KOPYALAR/YAPIŞTIRIR
.Cells(1).PasteSpecial Paste:=xlPasteAll
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
     
TempFilePath = Environ$("temp") & "\"
TempFileName = wb.Name & " " & Format(Now, "dd-mm-yyyy h-mm-ss")
If Val(Application.Version) < 12 Then
'Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'Excel 2007-2010
FileExtStr = ".xlsx": FileFormatNum = 51
End If
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
On Error Resume Next
For I = 1 To 3
'3. BURASI GÖNDERİLECEK MAİL ADRESİDİR
.SendMail "Ceryanci33@Gmail.com", _
"Günlük Faaliyet Raporu"
If Err.Number = 0 Then Exit For
Next I
On Error GoTo 0
.Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#4)  Ceryanci33 » 11 May 2023 20:50

Hocam ilginiz için öncelikle çok teşekkür ederim. Kodu çalıştırınca bir kaç hata alıyorum.
1. Excel de belirlediğim alan ayrı bir excel kitabı olarak oluşuyor fakat yeni kitaptaki hücrelerin içine veriler gelmiyor.
2. Yeni oluşan kitap outlook a otomatik yüklenmiyor.
3. Butonlar kopyalanıyor. Butonların işlevi belli excel satırlarını kopyalamaktı. Yeni kitapta satır isimleri değiştirği iöin butonlar çalışmıyor.. Birde aynı anda birden fazla kişiye mail atmak için ikinci mail adresini nasıl ekleyebiliriz koda acaba.
Excel dosyamı ekliyorum.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#5)  Yken » 11 May 2023 22:35

Kod: Tümünü seç
Sub mail_gonder()
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim I As Long

Range("AS1:BI12").Select
Set Source = Nothing
On Error Resume Next
'1. BURASI SAYFA KORUMAYI KALDIR VE TEKRAR KOY
ActiveSheet.Unprotect Password:="2023" 'ŞİFRE VARSA AYARLA
Set Source = Selection.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
Exit Sub
End If
If ActiveWindow.SelectedSheets.Count > 1 Or _
Selection.Cells.Count = 1 Or _
Selection.Areas.Count > 1 Then
MsgBox " Bir hata oluştu:" & vbNewLine & vbNewLine & _
"Seçim yapmadınız, hücre aralığını seçin.", vbOKOnly, "Www.ExcelVBA.Net"
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Paste '2. BURASI SEÇİLİ ALANDAKİ BUTONLARI DA KOPYALAR/YAPIŞTIRIR
.Cells(1).PasteSpecial xlPasteValuesAndNumberFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
ActiveSheet.Protect
     
TempFilePath = Environ$("temp") & "\"
TempFileName = wb.Name & " " & Format(Now, "dd-mm-yyyy h-mm-ss")
If Val(Application.Version) < 12 Then
'Excel 2000-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'Excel 2007-2010
FileExtStr = ".xlsx": FileFormatNum = 51
End If
With Dest
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
On Error Resume Next
If IsNull(Application.MailSession) Then
    Application.MailLogon
End If

For I = 1 To 3
'3. BURASI GÖNDERİLECEK MAİL ADRESİDİR
.SendMail Array("Ceryanci33@Gmail.com", "Ceryanci34@Gmail.com", "Ceryanci35@Gmail.com"), _
"Günlük Faaliyet Raporu"
If Err.Number = 0 Then Exit For
Next I
On Error GoTo 0
.Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#6)  Yken » 11 May 2023 23:12

Şu satırlar buraya ait değil, bunları siliniz.
Kod: Tümünü seç
If IsNull(Application.MailSession) Then
    Application.MailLogon
End If
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#7)  Ceryanci33 » 12 May 2023 00:08

Hocam çok sağolun, bir tek sonunum kalmış. Aktarılan butonlar başka bir yeri kopyalıyor. Hangi satırı kopyalaması gerektiğini boyadım. Birde yeni kitaptaki hücre boyutları orijinalinden farklı bunu ayarlayabilir miyiz?
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#8)  Yken » 12 May 2023 15:36

Dostum butonların bağlı olduğu makrolara müdahale etmedik ki yanlış yeri kopyalıyor olsunlar.
Ama sütun genişlikleri için ilave yapıldı. Bir de sayfa koruma ve açmada bir hata vardı giderildi.

Kod: Tümünü seç
Sub mail_gonder()
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook, ws As Worksheet
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim I As Long

Set wb = ActiveWorkbook
Set ws = wb.ActiveSheet
Range("AS1:BI12").Select
Set Source = Nothing
On Error Resume Next
'1. BURASI SAYFA KORUMAYI KALDIR VE TEKRAR KOY
ws.Unprotect Password:="2023" 'ŞİFRE VARSA AYARLA
Set Source = Selection.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
    MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
    Exit Sub
End If
If ActiveWindow.SelectedSheets.Count > 1 Or _
    Selection.Cells.Count = 1 Or _
    Selection.Areas.Count > 1 Then
    MsgBox " Bir hata oluştu:" & vbNewLine & vbNewLine & _
    "Seçim yapmadınız, hücre aralığını seçin.", vbOKOnly, "Www.ExcelVBA.Net"
    Exit Sub
End If
With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
    .Paste '2. BURASI SEÇİLİ ALANDAKİ BUTONLARI DA KOPYALAR/YAPIŞTIRIR
    .Cells(1).PasteSpecial xlPasteValuesAndNumberFormats
    .Cells(1).PasteSpecial xlPasteColumnWidths   '4. BURASI SÜTUN GENİŞLİKLERİNİ ORJİNALİ GİBİ KOPYALAR
    .Cells(1).Select
Application.CutCopyMode = False
End With
ws.Protect
     
TempFilePath = Environ$("temp") & "\"
TempFileName = wb.Name & " " & Format(Now, "dd-mm-yyyy h-mm-ss")
If Val(Application.Version) < 12 Then
    'Excel 2000-2003
    FileExtStr = ".xls": FileFormatNum = -4143
Else
    'Excel 2007-2010
    FileExtStr = ".xlsx": FileFormatNum = 51
End If
With Dest
    .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
    On Error Resume Next
    For I = 1 To 3
        '3. BURASI GÖNDERİLECEK MAİL ADRESİDİR
        .SendMail Array("Ceryanci33@Gmail.com", "Ceryanci34@Gmail.com", "Ceryanci35@Gmail.com"), _
        "Günlük Faaliyet Raporu"
        If Err.Number = 0 Then Exit For
    Next I
    On Error GoTo 0
    .Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#9)  Ceryanci33 » 12 May 2023 21:23

Hocam doğru diyorsunuz ama mesela birinci kopyalama butonu orijinal dosyada AX4:BH4 arasını kopyalıyor ki öyle olmasını istiyorum. Fakat mail gönderilince sayfa farklı hücrelere yerleştiği için kopyalamak istediğim hücreler F4:P4 olması gerekiyor. Bunu çözemedim.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#10)  Yken » 13 May 2023 16:46

Şimdi bu dosyayı ek olarak karşı tarafa göndereceksiniz ve düğmelere tıklayıp makroları çalıştıracak olan kişi karşı taraf olacak. Doğru mu anlamışım?
Eğer doğru ise dosyayı makro etkin çalışma kitabına dönüştürerek kaydetmeliyiz.
Ayrıca ilgili makroları da içine eklemeliyiz.
Kopyalama koordinatları değişmesin diye kaynak kitaptaki aynı koordinatı baz alarak yeni kitabı oluşturalım.
Kod: Tümünü seç
Sub mail_gonder_Modulile()
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook, ws As Worksheet
Dim TempFilePath As String
Dim TempFileName As String
Dim strTempFile As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim I As Long

Set wb = ActiveWorkbook
Set ws = wb.ActiveSheet

strTempFile = Environ$("temp") & "\" & "~tmpexport.bas"
wb.VBProject.VBComponents("Module2").Export strTempFile 'modülü dışarı al

Range("AS1:BI12").Select
Set Source = Nothing
On Error Resume Next
'1. BURASI SAYFA KORUMAYI KALDIR VE TEKRAR KOY
ws.Unprotect Password:="2023" 'ŞİFRE VARSA AYARLA
Set Source = Selection.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
    MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
    Exit Sub
End If
If ActiveWindow.SelectedSheets.Count > 1 Or _
    Selection.Cells.Count = 1 Or _
    Selection.Areas.Count > 1 Then
    MsgBox " Bir hata oluştu:" & vbNewLine & vbNewLine & _
    "Seçim yapmadınız, hücre aralığını seçin.", vbOKOnly, "Www.ExcelVBA.Net"
    Exit Sub
End If
With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
    .Range("AS1").Select
     ActiveWindow.Zoom = 55
     ActiveWindow.ScrollColumn = Selection.Column
    .Paste '2. BURASI SEÇİLİ ALANDAKİ BUTONLARI DA KOPYALAR/YAPIŞTIRIR
    .PasteSpecial xlPasteValuesAndNumberFormats
    .PasteSpecial xlPasteColumnWidths
    .Range("AS1").Select
Application.CutCopyMode = False

End With
ws.Protect
     
TempFilePath = Environ$("temp") & "\"
TempFileName = wb.Name & " " & Format(Now, "dd-mm-yyyy h-mm-ss")
If Val(Application.Version) < 12 Then
    'Excel 2000-2003
    FileExtStr = ".xls": FileFormatNum = -4143
Else
    'Excel 2007-2010
    FileExtStr = ".xlsm": FileFormatNum = 52
End If
With Dest
    .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum

Workbooks(TempFileName & FileExtStr).VBProject.VBComponents.Import strTempFile 'modülü içeri al

    On Error Resume Next
    For I = 1 To 3
        '3. BURASI GÖNDERİLECEK MAİL ADRESİDİR
        .SendMail Array("Ceryanci33@Gmail.com", "Ceryanci34@Gmail.com", "Ceryanci35@Gmail.com"), _
        "Günlük Faaliyet Raporu"
        If Err.Number = 0 Then Exit For
    Next I
    On Error GoTo 0
    .Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
Kill strTempFile

With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#11)  Ceryanci33 » 13 May 2023 19:01

hocam aynen dediğiniz şekilde olacak. Son yazdığınız kod çalışıyor fakat butona basınca asıl çalışma kitabı da açılıyor yenisiyle birlikte. Eski doyanın yerini değiştirdiğim zaman ise kopyalama butonuna basınca ekteki gibi hata alıyorum. Büyük ihtimalle mail atılan kişide aynı hatayı alacak.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#12)  Ceryanci33 » 13 May 2023 19:10

Ekteki uyarıyı alıyorum hocam.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Cevap: Excel sayfasının bir bölümünü butonla mail att

İleti#13)  Yken » 13 May 2023 23:43

Ceryanci33 yazdı:hocam aynen dediğiniz şekilde olacak. Son yazdığınız kod çalışıyor fakat butona basınca asıl çalışma kitabı da açılıyor yenisiyle birlikte. Eski doyanın yerini değiştirdiğim zaman ise kopyalama butonuna basınca ekteki gibi hata alıyorum. Büyük ihtimalle mail atılan kişide aynı hatayı alacak.

Eski kitabı açmaya çalışması buton içinde eski bağlantıyı gördüğünden dolayıdır. Şimdi eski bağlantılar da temizlendi.
Virüs uyarısı için ise yeni dosyayı sağ tıklayıp "engellemeyi kaldır" butonunu tıklayın.

Kod: Tümünü seç
Sub mail_gonder_Modulile()
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook, ws As Worksheet
Dim TempFilePath As String
Dim TempFileName As String
Dim strTempFile As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim I As Long
Dim shp As Shape
Dim MacroLink As String
Dim SplitLink As Variant
Dim NewLink As String

Set wb = ActiveWorkbook
Set ws = wb.ActiveSheet

strTempFile = Environ$("temp") & "\" & "~tmpexport.bas"
wb.VBProject.VBComponents("Module2").Export strTempFile 'modülü dışarı al

Range("AS1:BI12").Select
Set Source = Nothing
On Error Resume Next
'1. BURASI SAYFA KORUMAYI KALDIR VE TEKRAR KOY
ws.Unprotect Password:="2023" 'ŞİFRE VARSA AYARLA
Set Source = Selection.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
    MsgBox "The source is not a range or the sheet is protected, please correct and try again.", vbOKOnly
    Exit Sub
End If
If ActiveWindow.SelectedSheets.Count > 1 Or _
    Selection.Cells.Count = 1 Or _
    Selection.Areas.Count > 1 Then
    MsgBox " Bir hata oluştu:" & vbNewLine & vbNewLine & _
    "Seçim yapmadınız, hücre aralığını seçin.", vbOKOnly, "Www.ExcelVBA.Net"
    Exit Sub
End If
With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
    .Range("AS1").Select
     ActiveWindow.Zoom = 55
     ActiveWindow.ScrollColumn = Selection.Column
    .Paste '2. BURASI SEÇİLİ ALANDAKİ BUTONLARI DA KOPYALAR/YAPIŞTIRIR
    .PasteSpecial xlPasteValuesAndNumberFormats
    .PasteSpecial xlPasteColumnWidths
    .Range("AS1").Select
Application.CutCopyMode = False

End With
ws.Protect
     
TempFilePath = Environ$("temp") & "\"
TempFileName = wb.Name & " " & Format(Now, "dd-mm-yyyy h-mm-ss")
If Val(Application.Version) < 12 Then
    'Excel 2000-2003
    FileExtStr = ".xls": FileFormatNum = -4143
Else
    'Excel 2007-2010
    FileExtStr = ".xlsm": FileFormatNum = 52
End If

Dest.VBProject.VBComponents.Import strTempFile 'modülü içeri al

With Dest
    .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum

  For Each shp In ActiveWorkbook.Sheets(1).Shapes
  shp.Select
      MacroLink = shp.OnAction
      If MacroLink <> "" And InStr(MacroLink, "!") <> 0 Then
          SplitLink = Split(MacroLink, "!")
          NewLink = SplitLink(1)
            If Right(NewLink, 1) = "'" Then
              NewLink = Left(NewLink, Len(NewLink) - 1)
            End If
          shp.OnAction = "'" & TempFileName & FileExtStr & "'!" & NewLink
      End If
  Next shp
   
    .Save
    On Error Resume Next
    For I = 1 To 3
        '3. BURASI GÖNDERİLECEK MAİL ADRESİDİR
        .SendMail Array("Ceryanci33@Gmail.com", "Ceryanci34@Gmail.com", "Ceryanci35@Gmail.com"), _
        "Günlük Faaliyet Raporu"
        If Err.Number = 0 Then Exit For
    Next I
    On Error GoTo 0
    .Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
Kill strTempFile

With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With
MsgBox "Mail gönderildi", vbInformation
End Sub
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#14)  Ceryanci33 » 14 May 2023 00:13

Hocam gerçekten çok [TESEKKÜR] tam olarak istediğim gibi olmuş, elinize sağlık.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#15)  Ceryanci33 » 15 May 2023 11:05

Hocam merhaba, iş yerinden kurumsal posta adresi ile outlook kurulumu yapıp mail atınca Konu kımsına makrodaki "Günlük Faaliyet Raporu" yerine çince garip harfler yazıyor. Bunu nasıl düzeltebiliriz. Yazıyı değiştirince çince harflerde değişiyor. Hocam birde Dosya ismini mailin gönderildiği tarihten bir öncesinin tarihi + Günlük Faaliyet raporu şeklinde yapabilir miyiz. Mesala Bugün makroyu çalıştırdım mail attım diyelim, gönderilen dosyanın ismi 14.04.2023 Günlük Faaliyet Raporu şeklinde. Mail Konusu da yine Günlük Faaliyet Raporu olacak.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#16)  Yken » 15 May 2023 13:48

Dünkü tarihi elde etmek için "Now -1" yazmak yeterli:
TempFileName = wb.Name & " " & Format(Now -1, "dd-mm-yyyy h-mm-ss")

Çince karakterler için ilgili cihazın ve Outlook programının dil ayarlarına bakılabilir. Tam bilgim yok.
Kullanıcı avatarı
Yken
Siteye Alışmış
 
Kayıt: 07 Kas 2014 11:06
Meslek: Muhasebe
Yaş: 57
İleti: 212
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Excel sayfasının bir bölümünü butonla mail attırmak

İleti#17)  Ceryanci33 » 21 May 2023 22:43

Hocam çok şey denedim ama bir türlü düzelmiyor. Programı outlook u açacak, kime kısmına mail adreslerini yazacak konuyu ben elimde düzeltip gönder dicem, bu şekilde yapabilir miyiz.
Kullanıcı avatarı
Ceryanci33
Yeni Başlamış
 
Kayıt: 07 May 2023 16:43
Meslek: Elektronikçi
Yaş: 25
İleti: 10
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: mersin


Forum Excel ile Mail İşlemleri

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe