Makro ile linksiz excel gönderme

Katılım
24 Mart 2009
Mesajlar
6
Excel Vers. ve Dili
2013 Türkçe
Merhaba,

Excel üzerinden mail göndermek için hazır olarak kullandığım bir kod var.Problemim linkli bir dosyası linksiz yaparak göndermek. Bu işlemi kodda nereye yazacağım bulamadım tam olarak. Yardımcı olabilirmisiniz?
Kod:
Sub Gider()
Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object
    Dim sh As Worksheet
    Dim TheActiveWindow As Window
    Dim TempWindow As Window

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

    Set Sourcewb = ActiveWorkbook

    'Copy the sheets to a new workbook
    'We add a temporary Window to avoid the Copy problem
    'if there is a List or Table in one of the sheets and
    'if the sheets are grouped
    With Sourcewb
        Set TheActiveWindow = ActiveWindow
        Set TempWindow = .NewWindow
        .Sheets(Array("Pers Sayısı")).Copy
         End With

    'Close temporary Window
    TempWindow.Close

    Set Destwb = ActiveWorkbook

    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007-2013
            Select Case Sourcewb.FileFormat
            Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If .HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56: FileExtStr = ".xls": FileFormatNum = 56
            Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With
    'Change all cells in the worksheets to values if you want
    '    For Each sh In Destwb.Worksheets
    '        sh.Select
    '        With sh.UsedRange
    '            .Cells.Copy
    '            .Cells.PasteSpecial xlPasteValues
    '            .Cells(1).Select
    '        End With
    '        Application.CutCopyMode = False
    '        Destwb.Worksheets(1).Select
    '    Next sh


    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "1_Deterjan Fabrika_Gider Realz" & "_" & MonthName(Month(Now - 45)) & " " & Year(Now - 30)

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

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = ""
            .CC = ""
            .BCC = ""
            .Subject = MonthName(Month(Now - 45)) & " " & Year(Now - 30) & " " & " >> " & "Giderler"
            .Body = "Merhaba," & Chr(13) & "Biriminize ait Nisan 2017 Genel Gider Bütçe-Fiili Realizasyonu aylık ve kümülatif olarak ekte bilgilerinize sunulmuştur." & _
            Chr(13) & "Saygılarımla,"
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send   'or use .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

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

End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Yanlış anlamıyorsam;
kullandığınız kod blokunda sol başında TEK TIRNAK işareti olan aşağıdaki satırların (VBA ekranında YEŞİL yazı rengi olarak görünen satırlardır)
sol başındaki TEK TIRNAK işaretlerini silmeniz yeterli olur.

İstediğiniz gerçekleşmezse; TEK TIRNAK işaretlerini tekrar ekleyin ve bu satırların yerine aşağıdaki ikinci kod satırlarını yapıştırarak deneyin.
.
Kod:
[COLOR="Green"]    '    For Each sh In Destwb.Worksheets
    '        sh.Select
    '        With sh.UsedRange
    '            .Cells.Copy
    '            .Cells.PasteSpecial xlPasteValues
    '            .Cells(1).Select
    '        End With
    '        Application.CutCopyMode = False
    '        Destwb.Worksheets(1).Select
    '    Next sh[/COLOR]
Kod:
        For Each sh In Destwb.Worksheets
            With sh.UsedRange
               .Cells.Hyperlinks.Delete
            End With
        Next sh
 
Katılım
24 Mart 2009
Mesajlar
6
Excel Vers. ve Dili
2013 Türkçe
Ömer Bey merhaba,

Dediğiniz gibi düzeltme yaptım fakat yine mail'de gelen dosyada linkler durmakta. Örnek dosyada ekleyemiyorum malesef. kod aşağıdaki şekilde şu an:
Kod:
Sub Gider()
Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object
    Dim sh As Worksheet
    Dim TheActiveWindow As Window
    Dim TempWindow As Window

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

    Set Sourcewb = ActiveWorkbook

    'Copy the sheets to a new workbook
    'We add a temporary Window to avoid the Copy problem
    'if there is a List or Table in one of the sheets and
    'if the sheets are grouped
    With Sourcewb
        Set TheActiveWindow = ActiveWindow
        Set TempWindow = .NewWindow
        .Sheets(Array("Pers Sayısı")).Copy
         End With

    'Close temporary Window
    TempWindow.Close

    Set Destwb = ActiveWorkbook

    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007-2013
            Select Case Sourcewb.FileFormat
            Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If .HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56: FileExtStr = ".xls": FileFormatNum = 56
            Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With
    'Change all cells in the worksheets to values if you want
        For Each sh In Destwb.Worksheets
            sh.Select
            With sh.UsedRange
                .Cells.Hyperlinks.Delete
            End With
            Application.CutCopyMode = False
            Destwb.Worksheets(1).Select
        Next sh
 

    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "1_Deterjan Fabrika_Gider Realz" & "_" & MonthName(Month(Now - 45)) & " " & Year(Now - 30)

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

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = "tgrclk@gmail.com"
            .CC = ""
            .BCC = ""
            .Subject = MonthName(Month(Now - 45)) & " " & Year(Now - 30) & " " & " >> " & "Giderler"
            .Body = "Merhaba," & Chr(13) & "Biriminize ait Nisan 2017 Genel Gider Bütçe-Fiili Realizasyonu aylık ve kümülatif olarak ekte bilgilerinize sunulmuştur." & _
            Chr(13) & "Saygılarımla,"
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send   'or use .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

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

End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Örnek belgenizin, gerçek belgenin özel bilgi içermeyen küçük boyutlu bir kopyası şeklinde olmasını sağlayınız.

Örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.
.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Örnek belgenizde herhangi bir hücrede KÖPRÜ göremiyorum.

Hücrelere rastgele KÖPRÜler ekleyerek (gerek internet sayfasına ve gerekse de dosyadaki başka hüücrelere/yer işaretlerine)
denediğimde ise kod'da herhangi bir sorun göremedim.

E-posta kısmını deneme şansım yok, çünkü Ms.Outlook kullanmıyorum.

Örnek belgenizde, bahsettiğiniz KÖPRÜleme örneği olmasını sağlarsanız tekrar bakarım.
.
 
Üst