skaan
Altın Üye
- Katılım
- 11 Mart 2005
- Mesajlar
- 261
- Excel Vers. ve Dili
- Microsoft 365
- Altın Üyelik Bitiş Tarihi
- 12-11-2025
Merhaba;
Aşağıdaki kodlar ile özetle excel çalışma kitabindakı "Proforma" isimli sayfadaki fatura görüntüsünü belirlediğim bir dosyaya pdf uzantılı olarak kayıt edebiliyorum.
Ben bu kodların çalışmasını bozmadan yine aynı makro ile bu kodlara ek olarak excel çalışma kitabında bulunan "Sayfa1" isimli sayfanın "xlsx"uzantılı olarak Microsoft Outlook Programına gönderilmek üzere ek olarak eklenmesini istiyorum. Giden sayfası açılınca to: cc: konu : kısımları boş kalacak
sadece mail açıklamasında " Ekli Dosyayı Sisteme İşleyelim Lütfen" açıklaması yazmalı. Sonuc olarak makro çalışınca hem pdf kayıt tarafı hemde xlsx uzantılı excel dosyası outlook ek olarak eklenmeli.. Kodlar pdf kaydında çalışıyor sorun yok ancak; bu kodlara outlook giden mail ek ıle ılgılı kısmı eklememde yardımcı olmanızı rica ediyorum.Kodları nasıl ekleme ve düzenleme yapılabilinir.. Örnek dosyam ektedir.. Yardımcı olmanızı rica ediyorum..Tşk.
Saygılarımla;
SKaan
Sub KaydetPDF()
Dim YazdirmaAlani As Range
Dim DosyaAdi As String
Dim DosyaYolu As String
Dim TamDosyaAdi As String
Dim DosyaVar As Boolean
Dim KlasorYolu As Variant
Dim FaturaListe As Worksheet
Dim Proforma As Worksheet
' Aktif sayfanın adını kontrol et
If ActiveSheet.Name <> "Proforma" Then
MsgBox "Bu işlem sadece 'Proforma' adlı sayfada kullanılabilir.", vbExclamation
Exit Sub
End If
' Yazdırma alanını belirleyin
Set YazdirmaAlani = ActiveSheet.UsedRange ' Kaydedilecek yazdırma alanını otomatik olarak alın
' Referans sayfalarını tanımla
Set FaturaListe = ThisWorkbook.Sheets("FaturaListe")
Set Proforma = ThisWorkbook.Sheets("Proforma")
' Yazdırma alanlarını belirle
Dim Bilgi1 As String
Bilgi1 = Proforma.Range("AP9").Value
Dim Bilgi2 As String
Bilgi2 = Proforma.Range("F8").Value
Dim Bilgi3 As String
Bilgi3 = Proforma.Range("AN32").Value
Dim Bilgi4 As String
Bilgi4 = Proforma.Range("AF14").Value
' Kaydedilecek dosyanın adını kullanıcıdan alın
DosyaAdi = InputBox("PDF dosyasının adını girin", "Dosya Adı")
' Dosya adının boş olmadığından emin olun
If DosyaAdi <> "" Then
Do
DosyaVar = False ' Dosya adı çakışmasını kontrol etmek için bayrağı sıfırla
' Kaydedilecek dosyanın tam yolunu belirle
If KlasorYolu = "" Then
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Kaydedilecek klasörü seçin"
.Show
If .SelectedItems.Count > 0 Then
KlasorYolu = .SelectedItems(1)
Else
Exit Sub ' Kullanıcı bir klasör seçmezse işlemi sonlandır
End If
End With
End If
DosyaYolu = KlasorYolu & "\"
TamDosyaAdi = DosyaYolu & DosyaAdi & ".pdf"
' Dosyanın daha önce kaydedilip kaydedilmediğini kontrol et
If Dir(TamDosyaAdi) <> "" Then
' Dosya zaten varsa, dosya adını değiştirmek için kullanıcıdan yeni bir dosya adı iste
DosyaAdi = InputBox("Belirtilen dosya adıyla aynı isimde bir dosya zaten mevcut. Yeni dosya adını girin", "Dosya Adı")
DosyaVar = True ' Dosya adı çakışması olduğunu belirtmek için bayrağı ayarla
End If
Loop While DosyaVar = True ' Dosya adı çakışması olduğu sürece döngüyü tekrarla
' Belirli hücrelere değerleri yaz
Dim Satir1 As Long
Satir1 = FaturaListe.Range("B" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("B" & Satir1).Value = Bilgi1
Dim Satir2 As Long
Satir2 = FaturaListe.Range("C" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("C" & Satir2).Value = Bilgi2
Dim Satir3 As Long
Satir3 = FaturaListe.Range("D" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("D" & Satir3).Value = Bilgi3
Dim Satir4 As Long
Satir4 = FaturaListe.Range("E" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("E" & Satir4).Value = Bilgi4
' Yazdırma alanını belirle ve PDF olarak kaydet
With Proforma
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=TamDosyaAdi, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
End With
' Bilgi mesajını görüntüle
MsgBox "Pdf Dosyanız Belirlediğiniz Klasöre Eklenmiştir.", vbInformation
End If
End Sub
Aşağıdaki kodlar ile özetle excel çalışma kitabindakı "Proforma" isimli sayfadaki fatura görüntüsünü belirlediğim bir dosyaya pdf uzantılı olarak kayıt edebiliyorum.
Ben bu kodların çalışmasını bozmadan yine aynı makro ile bu kodlara ek olarak excel çalışma kitabında bulunan "Sayfa1" isimli sayfanın "xlsx"uzantılı olarak Microsoft Outlook Programına gönderilmek üzere ek olarak eklenmesini istiyorum. Giden sayfası açılınca to: cc: konu : kısımları boş kalacak
sadece mail açıklamasında " Ekli Dosyayı Sisteme İşleyelim Lütfen" açıklaması yazmalı. Sonuc olarak makro çalışınca hem pdf kayıt tarafı hemde xlsx uzantılı excel dosyası outlook ek olarak eklenmeli.. Kodlar pdf kaydında çalışıyor sorun yok ancak; bu kodlara outlook giden mail ek ıle ılgılı kısmı eklememde yardımcı olmanızı rica ediyorum.Kodları nasıl ekleme ve düzenleme yapılabilinir.. Örnek dosyam ektedir.. Yardımcı olmanızı rica ediyorum..Tşk.
Saygılarımla;
SKaan
Sub KaydetPDF()
Dim YazdirmaAlani As Range
Dim DosyaAdi As String
Dim DosyaYolu As String
Dim TamDosyaAdi As String
Dim DosyaVar As Boolean
Dim KlasorYolu As Variant
Dim FaturaListe As Worksheet
Dim Proforma As Worksheet
' Aktif sayfanın adını kontrol et
If ActiveSheet.Name <> "Proforma" Then
MsgBox "Bu işlem sadece 'Proforma' adlı sayfada kullanılabilir.", vbExclamation
Exit Sub
End If
' Yazdırma alanını belirleyin
Set YazdirmaAlani = ActiveSheet.UsedRange ' Kaydedilecek yazdırma alanını otomatik olarak alın
' Referans sayfalarını tanımla
Set FaturaListe = ThisWorkbook.Sheets("FaturaListe")
Set Proforma = ThisWorkbook.Sheets("Proforma")
' Yazdırma alanlarını belirle
Dim Bilgi1 As String
Bilgi1 = Proforma.Range("AP9").Value
Dim Bilgi2 As String
Bilgi2 = Proforma.Range("F8").Value
Dim Bilgi3 As String
Bilgi3 = Proforma.Range("AN32").Value
Dim Bilgi4 As String
Bilgi4 = Proforma.Range("AF14").Value
' Kaydedilecek dosyanın adını kullanıcıdan alın
DosyaAdi = InputBox("PDF dosyasının adını girin", "Dosya Adı")
' Dosya adının boş olmadığından emin olun
If DosyaAdi <> "" Then
Do
DosyaVar = False ' Dosya adı çakışmasını kontrol etmek için bayrağı sıfırla
' Kaydedilecek dosyanın tam yolunu belirle
If KlasorYolu = "" Then
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Kaydedilecek klasörü seçin"
.Show
If .SelectedItems.Count > 0 Then
KlasorYolu = .SelectedItems(1)
Else
Exit Sub ' Kullanıcı bir klasör seçmezse işlemi sonlandır
End If
End With
End If
DosyaYolu = KlasorYolu & "\"
TamDosyaAdi = DosyaYolu & DosyaAdi & ".pdf"
' Dosyanın daha önce kaydedilip kaydedilmediğini kontrol et
If Dir(TamDosyaAdi) <> "" Then
' Dosya zaten varsa, dosya adını değiştirmek için kullanıcıdan yeni bir dosya adı iste
DosyaAdi = InputBox("Belirtilen dosya adıyla aynı isimde bir dosya zaten mevcut. Yeni dosya adını girin", "Dosya Adı")
DosyaVar = True ' Dosya adı çakışması olduğunu belirtmek için bayrağı ayarla
End If
Loop While DosyaVar = True ' Dosya adı çakışması olduğu sürece döngüyü tekrarla
' Belirli hücrelere değerleri yaz
Dim Satir1 As Long
Satir1 = FaturaListe.Range("B" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("B" & Satir1).Value = Bilgi1
Dim Satir2 As Long
Satir2 = FaturaListe.Range("C" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("C" & Satir2).Value = Bilgi2
Dim Satir3 As Long
Satir3 = FaturaListe.Range("D" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("D" & Satir3).Value = Bilgi3
Dim Satir4 As Long
Satir4 = FaturaListe.Range("E" & FaturaListe.Rows.Count).End(xlUp).Row + 1
FaturaListe.Range("E" & Satir4).Value = Bilgi4
' Yazdırma alanını belirle ve PDF olarak kaydet
With Proforma
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=TamDosyaAdi, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
End With
' Bilgi mesajını görüntüle
MsgBox "Pdf Dosyanız Belirlediğiniz Klasöre Eklenmiştir.", vbInformation
End If
End Sub
Ekli dosyalar
-
40.8 KB Görüntüleme: 5