Outlook ile mail gönderme

Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
merhabalar,

bu kod ile excel dosyasında "D:\Oğuz\S.A.P\TESLİM EDİLENLER" dizinine klasör açıp sayfayı farklı kaydediyorum.

Kod:
Private Sub CommandButton1_Click()
If MsgBox("S.A.P. Kaydedilecek Emin Misiniz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub
Sheets("Sap").[D23] = TextBox1.Value
Sheets("Sap").[B41] = TextBox1.Value + " " + "S.A.P. TESLİMAT"
Sheets("Sap").[F23] = TextBox2.Value
Sheets("Sap").[D24] = TextBox3.Value
Sheets("Sap").[D27] = TextBox4.Value
Sheets("Sap").[G25] = TextBox13.Value
Sheets("Sap").[G31] = ComboBox2.Value
Sheets("Sap").[D38] = ComboBox1.Value
Sheets("Sap").[D39] = TextBox12.Value
Unload SAPTESLIM
Dim Dosya_Yolu, Dosya_Adı, ds
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Dosya_Adı = Range("B41")
Dosya_Yolu = "D:\Oğuz\S.A.P\TESLİM EDİLENLER"
Set ds = CreateObject("Scripting.FileSystemObject")
x = Dosya_Yolu & "\" & Dosya_Adı
a = ds.FolderExists(x)
If a <> True Then
ds.CreateFolder x
End If

If Len(Dosya_Yolu) <= 3 Then Dosya_Yolu = Replace(Dosya_Yolu, "\", "")
Sheets(Array("Sap")).Copy
ActiveWorkbook.SaveAs Filename:="" & x & "\" & Dosya_Adı & " .xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
ActiveWorkbook.Close
MsgBox Dosya_Yolu & "\" & Dosya_Adı & ".xls" & " Dosya kayıt edildi"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
If MsgBox("S.A.P. Dosyasını Yazdırmak İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub
Sheets("Sap").Range("a1:g40").PrintOut Copies:=1
ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub
bu kod ile de outlookdan mail gönderebiliyorum.

Kod:
Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Set rng = Nothing
    On Error Resume Next
    'Only the visible cells in the selection
    Set rng = Selection.SpecialCells(xlCellTypeVisible)
    'You can also use a range if you want
    Set rng = Sheets("MAİL OLUŞTUR").Range("A3:D28").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If rng Is Nothing Then
        MsgBox "The selection is not a range or the sheet is protected" & _
               vbNewLine & "please correct and try again.", vbOKOnly
        Exit Sub
    End If

    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .To = [F1]
        .CC = ""
        .BCC = ""
        .Subject = [A1] + " " + [B1]
        .HTMLBody = RangetoHTML(rng)
        .Display
    End With
    On Error GoTo 0

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2010
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
 
    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
 
    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With
 
    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
 
    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")
 
    'Close TempWB
    TempWB.Close savechanges:=False
 
    'Delete the htm file we used in this function
    Kill TempFile
 
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
Unload Me
End Function
şimdi benim sorum şu, ilk kodla klasör açıp kaydettiğim excel dosyamı otomatik olarak outlookda dosya eki olarak nasıl eklerim ?
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
With Outmail ... End With bloku içine


dosya adı yolu ile birlikte hücrede
Kod:
.Attachments.Add Range("A1").Value

dosya adı yolu ile birlikte koda:
Kod:
.Attachments.Add "C:\Users\Ben\Dosyalar\dosya.xls"
 
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
With Outmail ... End With bloku içine


dosya adı yolu ile birlikte hücrede
Kod:
.Attachments.Add Range("A1").Value

dosya adı yolu ile birlikte koda:
Kod:
.Attachments.Add "C:\Users\Ben\Dosyalar\dosya.xls"
sn. mancubus,

ben dosyası otomatik kaydettirip kaydedilen dosyayıda otomatik outlokdan mail göndermek istiyorum. ek olarak otomatik eklenecek yani.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
sn. djoguzz

1. kod ile dosya oluşturduğunu, 2. kod ile mail gönderdiğini söylüyor, 1. kod ile oluşturdupun dosyayı 2. kod ile oluşturduğu maile eklemek istiyorsun.

bunun yöntemi Attachments.Add "Tam yolu ile dosya Adı"dır.

yanlış mı anlıyorum?
 
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
sn. djoguzz

1. kod ile dosya oluşturduğunu, 2. kod ile mail gönderdiğini söylüyor, 1. kod ile oluşturdupun dosyayı 2. kod ile oluşturduğu maile eklemek istiyorsun.

bunun yöntemi Attachments.Add "Tam yolu ile dosya Adı"dır.

yanlış mı anlıyorum?
sn mancubus,
aynen öyle ancak kayıt ederken kaydedilen dosyanın isminide bir hücreden alıyor tam yolu ile dosya adı kısmını nasıl ekleyeceğim. yani örneğin bir dosyayı kaydettim dosya c://oğuz/deneme.xls olarak kaydedildi ama başka bir dosyayı kaydettiğimde c://oğuz/ikincideneme.xls olarak kaydetti. Attachments.Add "buraya ne yazarsam sürekli kayıt ettiğim dosyayı otomatik ekleyecek ?" dosya adı sürekli değiştiği için dosya yoluda değişecek otomatikmen.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
eğer dosyayı oluşturan kod ile mail gönderen kod aynı makronun içinde ise

Kod:
ActiveWorkbook.SaveAs Filename:=[COLOR="Red"]x & "\" & Dosya_Adı & ".xls[/COLOR]
kırmızı bölümü kullanmak mümkün

Kod:
Attachments.Add (x & "\" & Dosya_Adı & ".xls")

2 ayrı makro kullanılıyor ise şöyle bir şey olabilir.

Kod:
Global Dosya_Adı As String
Global x As String

Private Sub CommandButton1_Click()
'...
'...
x = .......
Dosya_Adı = Range("B41")
'...
'...

End Sub

Private Sub CommandButton5_Click()
'veya Sub MailGönder()
'...
'...

With OutMail
    .To = [F1]
    .CC = ""
    .BCC = ""
    .Subject = [A1] + " " + [B1]
    .HTMLBody = RangetoHTML(Rng)
    .Attachments.Add (x & "\" & Dosya_Adı & ".xls")
    .Display
End With

'...
'...

End Sub
 
Son düzenleme:
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
eğer dosyayı oluşturan kod ile mail gönderen kod aynı makronun içinde ise

Kod:
ActiveWorkbook.SaveAs Filename:=[COLOR="Red"]x & "\" & Dosya_Adı & ".xls[/COLOR]
kırmızı bölümü kullanmak mümkün

Kod:
Attachments.Add (x & "\" & Dosya_Adı & ".xls")

2 ayrı makro kullanılıyor ise şöyle bir şey olabilir.

Kod:
Global Dosya_Adı As String
Global x As String

Private Sub CommandButton1_Click()
'...
'...
x = .......
Dosya_Adı = Range("B41")
'...
'...

End Sub

Private Sub CommandButton5_Click()
'veya Sub MailGönder()
'...
'...

With OutMail
    .To = [F1]
    .CC = ""
    .BCC = ""
    .Subject = [A1] + " " + [B1]
    .HTMLBody = RangetoHTML(Rng)
    .Attachments.Add (x & "\" & Dosya_Adı & ".xls")
    .Display
End With

'...
'...

End Sub

hocam en son şu şekilde derledim kodu ama .Attachments.Add (x & "\" & Dosya_Adı & ".xls") kısmında hata alıyorum kod aşağıda neresi yanlış acaba ?


Kod:
Private Sub CommandButton1_Click()
If MsgBox("S.A.P. Kaydedilecek Emin Misiniz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
Sheets("Sap").[D23] = TextBox1.Value
Sheets("Sap").[B41] = TextBox1.Value + " " + "S.A.P. TESLİMAT"
Sheets("Sap").[F23] = TextBox2.Value
Sheets("Sap").[D24] = TextBox3.Value
Sheets("Sap").[D27] = TextBox4.Value
Sheets("Sap").[G25] = TextBox13.Value
Sheets("Sap").[G31] = ComboBox2.Value
Sheets("Sap").[D38] = ComboBox1.Value
Sheets("Sap").[D39] = TextBox12.Value
Unload SAPTESLIM
Dim Dosya_Yolu, Dosya_Adı, ds
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Dosya_Adı = Range("B41")
Dosya_Yolu = "D:\Oğuz\S.A.P\TESLİM EDİLENLER"
Set ds = CreateObject("Scripting.FileSystemObject")
x = Dosya_Yolu & "\" & Dosya_Adı
a = ds.FolderExists(x)
If a <> True Then
ds.CreateFolder x
End If
If Len(Dosya_Yolu) <= 3 Then Dosya_Yolu = Replace(Dosya_Yolu, "\", "")
Sheets(Array("Sap")).Copy
ActiveWorkbook.SaveAs Filename:="" & x & "\" & Dosya_Adı & " .xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
ActiveWorkbook.Close
MsgBox Dosya_Yolu & "\" & Dosya_Adı & ".xls" & " Dosya kayıt edildi"
Application.ScreenUpdating = True
Application.DisplayAlerts = True

Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = CreateItem(olMailItem)


If MsgBox("S.A.P. Dosyasını Yazdırmak İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
Sheets("Sap").Range("a1:g40").PrintOut Copies:=1
ActiveWorkbook.Save
If MsgBox("S.A.P. Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub
With NewMail
.To = "falan@filan.com"
.Subject = "Deneme"
.Body = "Bu e-mail deneme amacıyla gönderilmiştir."
.Attachments.Add = x & "\" & Dosya_Adı & ".xls"
End With
Set NewMail = Nothing
Set OutApp = Nothing
Else
If MsgBox("S.A.P. Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub
With NewMail
.To = "falan@filan.com"
.Subject = "Deneme"
.Body = "Bu e-mail deneme amacıyla gönderilmiştir."
.Attachments.Add = x & "\" & Dosya_Adı & ".xls"

.Display
End With
Set NewMail = Nothing
Set OutApp = Nothing
End If
Else
Exit Sub
End If
End Sub
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
Kod:
    .Attachments.Add [COLOR="Red"]=[/COLOR] x & "\" & Dosya_Adı & ".xls" 'YANLIŞ
    .Attachments.Add x & "\" & Dosya_Adı & ".xls" 'DOĞRU

kodlarda da biraz sadeleştirmeye ihtiyaç var bence. kod IF ile başlayıp END IF ile bitiyor. bunun için bir zorunluluk varsa tamam.

Kod:
="" & x & "\" & Dosya_Adı & " .xls" 'dosya adına bir boşluk ekliyor. başına da gerek yok
=x & "\" & Dosya_Adı & ".xls" 'YETERLİ bir ifade
şöyle bir yapı benim için çalıştı.

Kod:
Private Sub CommandButton1_Click()

Dim Dosya_Yolu, Dosya_Adı, ds, x
Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = CreateItem(olMailItem)

Application.ScreenUpdating = False
Application.DisplayAlerts = False

If MsgBox("S.A.P. Kaydedilecek Emin Misiniz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
    Sheets("Sap").[D23] = TextBox1.Value
    Sheets("Sap").[B41] = TextBox1.Value + " " + "S.A.P. TESLİMAT"
    Sheets("Sap").[F23] = TextBox2.Value
    Sheets("Sap").[D24] = TextBox3.Value
    Sheets("Sap").[D27] = TextBox4.Value
    Sheets("Sap").[G25] = TextBox13.Value
    Sheets("Sap").[G31] = ComboBox2.Value
    Sheets("Sap").[D38] = ComboBox1.Value
    Sheets("Sap").[D39] = TextBox12.Value
    Unload SAPTESLIM
Else
    MsgBox "S.A.P. Kaydedilmedi. Programdan çıkılıyor!", vbInformation + vbOKOnly
    Exit Sub
End If

Dosya_Adı = Range("B41")
Dosya_Yolu = "D:\Oğuz\S.A.P\TESLİM EDİLENLER"

Set ds = CreateObject("Scripting.FileSystemObject")
x = Dosya_Yolu & "\" & Dosya_Adı
a = ds.FolderExists(x)

If a <> True Then
    ds.CreateFolder x
End If

If Len(Dosya_Yolu) <= 3 Then Dosya_Yolu = Replace(Dosya_Yolu, "\", "")

Sheets("Sap").Copy
ActiveWorkbook.SaveAs Filename:=x & "\" & Dosya_Adı & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
ActiveWorkbook.Close
MsgBox Dosya_Yolu & "\" & Dosya_Adı & ".xls" & " Dosya kayıt edildi"

If MsgBox("S.A.P. Dosyasını Yazdırmak İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
    Sheets("Sap").Range("a1:g40").PrintOut Copies:=1
    ActiveWorkbook.Save
End If

If MsgBox("S.A.P. Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub

With NewMail
    .To = "falan@filan.com"
    .Subject = "Deneme"
    .Body = "Bu e-mail deneme amacıyla gönderilmiştir."
    .Attachments.Add x & "\" & Dosya_Adı & ".xls"
    .Display
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
şöyle de olabilir.

Kod:
Private Sub CommandButton1_Click()

Dim x As String, [COLOR="Red"]kaydetDosya As String[/COLOR]
Dim Dosya_Yolu As String, Dosya_Adı As String
Dim ds
Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = CreateItem(olMailItem)

Application.ScreenUpdating = False
Application.DisplayAlerts = False

If MsgBox("S.A.P. Kaydedilecek Emin Misiniz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
    Sheets("Sap").[D23] = TextBox1.Value
    Sheets("Sap").[B41] = TextBox1.Value + " " + "S.A.P. TESLİMAT"
    Sheets("Sap").[F23] = TextBox2.Value
    Sheets("Sap").[D24] = TextBox3.Value
    Sheets("Sap").[D27] = TextBox4.Value
    Sheets("Sap").[G25] = TextBox13.Value
    Sheets("Sap").[G31] = ComboBox2.Value
    Sheets("Sap").[D38] = ComboBox1.Value
    Sheets("Sap").[D39] = TextBox12.Value
    Unload SAPTESLIM
Else
    MsgBox "S.A.P. Kaydedilmedi. Programdan çıkılıyor!", vbInformation + vbOKOnly
    Exit Sub
End If

Dosya_Adı = Range("B4")
Dosya_Yolu = "D:\Oğuz\S.A.P\TESLİM EDİLENLER"
If Len(Dosya_Yolu) <= 3 Then Dosya_Yolu = Replace(Dosya_Yolu, "\", "")

Set ds = CreateObject("Scripting.FileSystemObject")

x = Dosya_Yolu & "\" & Dosya_Adı
a = ds.FolderExists(x)
If a <> True Then
    ds.CreateFolder x
End If

[COLOR="red"]kaydetDosya = x & "\" & Dosya_Adı & ".xls"[/COLOR]

Sheets("Sap").Copy
ActiveWorkbook.SaveAs Filename:=[COLOR="red"]kaydetDosya[/COLOR], FileFormat:=56
ActiveWorkbook.Close
MsgBox [COLOR="Red"]kaydetDosya[/COLOR] & " Dosya kayıt edildi"

If MsgBox("S.A.P. Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub

With NewMail
    .To = "falan@filan.com"
    .Subject = "Deneme"
    .Body = "Bu e-mail deneme amacıyla gönderilmiştir."
    .Attachments.Add [COLOR="red"]kaydetDosya[/COLOR]
    .Display
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
 
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
Kod:
    .Attachments.Add [COLOR="Red"]=[/COLOR] x & "\" & Dosya_Adı & ".xls" 'YANLIŞ
    .Attachments.Add x & "\" & Dosya_Adı & ".xls" 'DOĞRU

kodlarda da biraz sadeleştirmeye ihtiyaç var bence. kod IF ile başlayıp END IF ile bitiyor. bunun için bir zorunluluk varsa tamam.

Kod:
="" & x & "\" & Dosya_Adı & " .xls" 'dosya adına bir boşluk ekliyor. başına da gerek yok
=x & "\" & Dosya_Adı & ".xls" 'YETERLİ bir ifade
şöyle bir yapı benim için çalıştı.

Kod:
Private Sub CommandButton1_Click()

Dim Dosya_Yolu, Dosya_Adı, ds, x
Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = CreateItem(olMailItem)

Application.ScreenUpdating = False
Application.DisplayAlerts = False

If MsgBox("S.A.P. Kaydedilecek Emin Misiniz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
    Sheets("Sap").[D23] = TextBox1.Value
    Sheets("Sap").[B41] = TextBox1.Value + " " + "S.A.P. TESLİMAT"
    Sheets("Sap").[F23] = TextBox2.Value
    Sheets("Sap").[D24] = TextBox3.Value
    Sheets("Sap").[D27] = TextBox4.Value
    Sheets("Sap").[G25] = TextBox13.Value
    Sheets("Sap").[G31] = ComboBox2.Value
    Sheets("Sap").[D38] = ComboBox1.Value
    Sheets("Sap").[D39] = TextBox12.Value
    Unload SAPTESLIM
Else
    MsgBox "S.A.P. Kaydedilmedi. Programdan çıkılıyor!", vbInformation + vbOKOnly
    Exit Sub
End If

Dosya_Adı = Range("B41")
Dosya_Yolu = "D:\Oğuz\S.A.P\TESLİM EDİLENLER"

Set ds = CreateObject("Scripting.FileSystemObject")
x = Dosya_Yolu & "\" & Dosya_Adı
a = ds.FolderExists(x)

If a <> True Then
    ds.CreateFolder x
End If

If Len(Dosya_Yolu) <= 3 Then Dosya_Yolu = Replace(Dosya_Yolu, "\", "")

Sheets("Sap").Copy
ActiveWorkbook.SaveAs Filename:=x & "\" & Dosya_Adı & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False
ActiveWorkbook.Close
MsgBox Dosya_Yolu & "\" & Dosya_Adı & ".xls" & " Dosya kayıt edildi"

If MsgBox("S.A.P. Dosyasını Yazdırmak İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbYes Then
    Sheets("Sap").Range("a1:g40").PrintOut Copies:=1
    ActiveWorkbook.Save
End If

If MsgBox("S.A.P. Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub

With NewMail
    .To = "falan@filan.com"
    .Subject = "Deneme"
    .Body = "Bu e-mail deneme amacıyla gönderilmiştir."
    .Attachments.Add x & "\" & Dosya_Adı & ".xls"
    .Display
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
hocam kod çok güzel çalışıyor teşekkürler yardımlarınız için vaktinizi aldım hakkınızı helal ediniz. Tekrar çok teşekkürler..
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
rica ederim.
kolay gelsin.
 
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
hocam tekrar rahatsız ediyorum ama aynı kodları başka bir makroya eklemek istediğimde yine hata alıyorum. kodlar aşağıda hata nerede acaba ?

Kod:
Sub AVUKAT()
Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = CreateItem(olMailItem)

Klasor = "D:\Oğuz\AVUKAT TAHSİLAT\"
Dosya_Adi = Worksheets("AVUKAT").Range("F4").Value
Sayfa_Adı = "AVUKAT"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
For i = 1 To Len(ActiveWorkbook.Name)
If Mid(ActiveWorkbook.Name, i, 1) = "." Then
uzanti = Mid(ActiveWorkbook.Name, i, Len(ActiveWorkbook.Name))
End If
Next
If uzanti = ".xlsx" Then
FileFormatNum = 51
ElseIf uzanti = ".xlsm" Then
FileFormatNum = 52
ElseIf uzanti = ".xls" Then
FileFormatNum = -4143
ElseIf uzanti = ".xlsb" Then
FileFormatNum = 50
End If

Dim sayfa As Worksheet
For Each sayfa In Worksheets
If sayfa.Name = Sayfa_Adı Then
sayfa.Copy
ActiveWorkbook.SaveAs Klasor & Dosya_Adi & uzanti, FileFormat:=FileFormatNum
ActiveWorkbook.Close savechanges:=False
MsgBox Klasor & Dosya_Adi & uzanti & " Dosya kayıt edildi"

If MsgBox([F4] + " Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub

With NewMail
    .To = "SERAP ÇOBAN"
    .Subject = [F4] + " DOSYASI"
    .Body = [F4] + " DOSYASI EKTEDİR."
    .Attachments.Add Klasor & Dosya_Adı & "\" & ".xls"
    
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End If
Next
End Sub
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
hata nerede?

Kod:
ElseIf uzanti = ".xls" Then
    FileFormatNum = [COLOR="Red"]56[/COLOR]
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
en sonda başlangıcı olmayan next, end if vb kalmış.
peşinen söyleyeyim: ÇALIŞAN KODDUR.

Kod:
Sub AVUKAT()

Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = OutApp.CreateItem(olMailItem)

Klasor = "D:\Oğuz\AVUKAT TAHSİLAT\"
Dosya_Adi = Worksheets("AVUKAT").Range("F4").Value

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

For i = 1 To Len(ActiveWorkbook.Name)
    If Mid(ActiveWorkbook.Name, i, 1) = "." Then
        uzanti = Mid(ActiveWorkbook.Name, i, Len(ActiveWorkbook.Name))
        Exit For
    End If
Next

If uzanti = ".xlsx" Then
    FileFormatNum = 51
ElseIf uzanti = ".xlsm" Then
    FileFormatNum = 52
ElseIf uzanti = ".xls" Then
    FileFormatNum = 56
ElseIf uzanti = ".xlsb" Then
    FileFormatNum = 50
End If

Worksheets("AVUKAT").Copy
ActiveWorkbook.SaveAs Klasor & Dosya_Adi, FileFormat:=FileFormatNum
ActiveWorkbook.Close savechanges:=False
MsgBox Klasor & Dosya_Adi & uzanti & " Dosya kayıt edildi"

If MsgBox([F4] + " Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub

With NewMail
    .To = "SERAP ÇOBAN"
    .Subject = [F4] + " DOSYASI"
    .Body = [F4] + " DOSYASI EKTEDİR."
    .Attachments.Add Klasor & Dosya_Adi & uzanti
    .Display
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True

End Sub
 
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
en sonda başlangıcı olmayan next, end if vb kalmış.
peşinen söyleyeyim: ÇALIŞAN KODDUR.

Kod:
Sub AVUKAT()

Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Set OutApp = New Outlook.Application
Set NewMail = OutApp.CreateItem(olMailItem)

Klasor = "D:\Oğuz\AVUKAT TAHSİLAT\"
Dosya_Adi = Worksheets("AVUKAT").Range("F4").Value

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

For i = 1 To Len(ActiveWorkbook.Name)
    If Mid(ActiveWorkbook.Name, i, 1) = "." Then
        uzanti = Mid(ActiveWorkbook.Name, i, Len(ActiveWorkbook.Name))
        Exit For
    End If
Next

If uzanti = ".xlsx" Then
    FileFormatNum = 51
ElseIf uzanti = ".xlsm" Then
    FileFormatNum = 52
ElseIf uzanti = ".xls" Then
    FileFormatNum = 56
ElseIf uzanti = ".xlsb" Then
    FileFormatNum = 50
End If

Worksheets("AVUKAT").Copy
ActiveWorkbook.SaveAs Klasor & Dosya_Adi, FileFormat:=FileFormatNum
ActiveWorkbook.Close savechanges:=False
MsgBox Klasor & Dosya_Adi & uzanti & " Dosya kayıt edildi"

If MsgBox([F4] + " Dosyasını Mail Göndermek İstiyor musunuz? ?", vbQuestion + vbYesNo, "Dikkat") = vbNo Then Exit Sub

With NewMail
    .To = "SERAP ÇOBAN"
    .Subject = [F4] + " DOSYASI"
    .Body = [F4] + " DOSYASI EKTEDİR."
    .Attachments.Add Klasor & Dosya_Adi & uzanti
    .Display
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True

End Sub


Hocam gerçekten Allah razı olsun sizden, mantığını öğrenmeye çalışıyorum başka şekillerdede kullanacağım inşallah bu kaydedip mail gönderme kodunu takıldığım yerde yardımcı olabilir misiniz acaba? önce kendim çabalarım çözemezsem sorarım ama :)
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
illa benim yardımcı olmam önemli değil. forumda bir çok uzman arkadaşımız var, denk gelen, çözen yardım edebilir.

ancak soruyu sormadan önce forumda ve gerekirse internette araştırma yapalım. hem öğrenme sürecini hızlandırır, hem de bilgi yelpazesini genişletir.
 
Katılım
2 Mart 2011
Mesajlar
120
Excel Vers. ve Dili
İşyerinnde Excel 2003
Evde Excel 2010
illa benim yardımcı olmam önemli değil. forumda bir çok uzman arkadaşımız var, denk gelen, çözen yardım edebilir.

ancak soruyu sormadan önce forumda ve gerekirse internette araştırma yapalım. hem öğrenme sürecini hızlandırır, hem de bilgi yelpazesini genişletir.
teşekkürler hocam araştırmadan pek sormam zaten çözemediğim zaman yardım istiyorum tekrar teşekkürler. :)
 
Üst