whatsapp mesaj gönderme

SMSKMHMMT

Altın Üye
Katılım
28 Şubat 2024
Mesajlar
29
Excel Vers. ve Dili
2020
Altın Üyelik Bitiş Tarihi
25-04-2029
Herkese iyi çalışmalar dilerim. Vba kod yazma ve excel formüllerini yeni öğrenmeye çalışan biriyim daha önceki mesajlarım da da bunu belirtmiştim, o yüzden lütfen sorularımın mantıklı yada mantıksız olmasına bakmayın. Yapmaya çalıştığım şeyi açıklayayım; çok sayfalı bir çalışma kitabında ilk yedi sayfa hariç diğer sayfaların B30 hücresinde kişilerin telefon numaraları bulunmakta, yine bu sayfaların AL3:AY44 hücrelerinde sayfaya göre değişebilen bir tablo bulunmaktadır.
Bu tabloyu bu telefon numaralarına göndermek istiyorum, yazdığım kodda da bunda başarılı oldum fakat ActiveWorkbook.FollowHyperlink Address:="https://web.whatsapp.com/" komutu döngünün içerisinde olduğu için her döngüde sayfayı yeniden açıyor döngünün dışına çıkarınca da excel whatapp arası geçişi yapamadım(whatsapp ı aç numarayı al tab ile arama kısmına geç numarayı yapıştır enterla sohbeti aç excele geçiş yap tabloyu kopyala whatsappa geç tabloyu yapıştır enterla gönder). Yada ben kurguyu yanlış yapıyorum.
İkinci sorunum ise bu geçişleri yapabilsem bile tabloyu yapıştır yapınca biliyorsunuz üstte görsel altta yazılar çıkıyor bu yazıların silinmesi ve sadece tablo kalması gerekir.

Konuyu çok uzattığım için üzgünüm ama önceden asıl yapmak istediğim şey bu tabloları bir klasöre pdf olarak sayfa isimlerine göre kaydetmek ve bu pdfleri whatsapp üzerinden göndermekti. Ancak hem bilgim az olduğu için hem de araştırmama rağmen böyle bir içerik bulamadığım için halletme şansım olmadı. Mantığını anlamama yardım ederseniz sevinirim.

Bu arada yardımları için sayın necati beye teşekkür ederim.

Sub mesaj()
Dim kime As String: Dim tablo As String 'tablo ve gönderilecek kişi değişkenleri
Dim i As Integer: Dim j As Integer 'for döngüsü için sayfa değişkenleri
i = Sheets.Count 'sayfayı hesapla
For j = i To 8 Step -1 'sekizinci sayfaya kadar birer eksilerek git
Sheets(j).Select 'hesaplanan son sayfayı seç
kime = ActiveSheet.range("B30").Text 'gönderilecek numaranın olduğu sayfa ve hücreyi belirt
tablo = ActiveSheet.range("AL3:AY44").Copy 'gönderilecek tabloyu kopyala
ActiveWorkbook.FollowHyperlink Address:="https://web.whatsapp.com/" 'whatsappı aç
Application.Wait (Now + TimeValue("00:00:03")) 'üç saniye bekle
Call SendKeys("{TAB}", True) 'tab tuşuna bas
Call SendKeys(kime, True)
Call SendKeys("~", True)
Application.Wait (Now + TimeValue("00:00:03")) 'üç saniye bekle
Call SendKeys(tablo, True)
Call SendKeys("^+V", True) 'tabloyu yapıştır
Call SendKeys("~", True) 'gönder
Sheets("ANASAYFA").range("AY3").Value = "Bordro iletildi." 'ilgili sayfaya not düş
Next 'varsa diğer döngüye geç yoksa döngüden çık
End Sub
 
Katılım
6 Kasım 2004
Mesajlar
225
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
25-07-2023
Merhaba,
Öncelikle sorularının çok mantıklı olduğunu belirtmek isterim. Yapmak istediğin işlem gayet anlaşılır ve VBA kullanarak bunu yapabilmek mümkün. Kodda karşılaştığın sorunlara ve çözüm yollarına birlikte bakalım.

1. WhatsApp Web'i Tekrar Tekrar Açma Sorunu:
Döngü içinde ActiveWorkbook.FollowHyperlink komutu WhatsApp Web'i her seferinde yeniden açıyor. Bunu önlemek için, WhatsApp Web'i bir kere açıp, sonrasında döngüde sadece tab tuşlarını ve gerekli işlemleri gönderebiliriz. WhatsApp'ın açık olup olmadığını kontrol edip, yalnızca ilk seferde açılması için bir kontrol ekleyebiliriz. Örneğin, döngü başında WhatsApp'ı açabiliriz.

2. Tabloyu Yapıştırırken Üstte Görsel ve Yazı Çıkması Sorunu:
Excel tablosunu WhatsApp'a yapıştırırken tablo, resim ve metin olarak gönderiliyor. Bunun yerine tabloyu metin olarak göndermek daha etkili olur. Bu, tabloyu kopyaladıktan sonra metin formatına çevirerek yapılabilir.

3. PDF Olarak Kaydetme ve Gönderme:
Tabloyu PDF formatında bir klasöre kaydedip, sonrasında bu PDF'yi WhatsApp üzerinden göndermek de mümkün. Bunun için önce PDF'yi her sayfa adına göre kaydetmek, ardından PDF dosyasını ilgili kişiye göndermek için bir yol izleyebiliriz.

Şimdi iki yöntemden birini seçebilirsin:

  • Tabloyu WhatsApp'a metin olarak yapıştırma
  • Tabloyu PDF olarak kaydedip WhatsApp'tan gönderme
1. WhatsApp Üzerine Tabloyu Metin Olarak Gönderme:
Aşağıda tabloyu metin olarak WhatsApp'a gönderen güncellenmiş bir kod örneği bulabilirsin:

Kod:
Sub mesaj()
    Dim kime As String: Dim tablo As String
    Dim i As Integer: Dim j As Integer
    Static whatsappOpened As Boolean ' WhatsApp'ın sadece bir kez açılması için statik değişken
    i = Sheets.Count

    For j = i To 8 Step -1
        Sheets(j).Select
        kime = ActiveSheet.Range("B30").Text
        
        ' Tablonun hücrelerini metin formatında al
        tablo = ""
        Dim cell As Range
        For Each cell In ActiveSheet.Range("AL3:AY44")
            tablo = tablo & cell.Text & vbTab ' Tab ile hücreleri ayır
        Next cell
        
        ' WhatsApp'ı sadece bir kez aç
        If Not whatsappOpened Then
            ActiveWorkbook.FollowHyperlink Address:="https://web.whatsapp.com/"
            Application.Wait (Now + TimeValue("00:00:05")) ' WhatsApp'ın tam açılması için 5 saniye bekle
            whatsappOpened = True
        End If

        ' WhatsApp arama kısmına numarayı yapıştır ve mesajı gönder
        Call SendKeys("^t", True) ' Yeni WhatsApp sekmesi aç (ctrl + t)
        Application.Wait (Now + TimeValue("00:00:01"))
        Call SendKeys(kime, True)
        Call SendKeys("~", True)
        Application.Wait (Now + TimeValue("00:00:02"))
        Call SendKeys(tablo, True) ' Tablodaki verileri yapıştır
        Call SendKeys("~", True) ' Gönder tuşuna bas

        ' Gönderildiğine dair ana sayfada not düş
        Sheets("ANASAYFA").Range("AY3").Value = "Bordro iletildi."
    Next j
End Sub
2. Tabloyu PDF Olarak Kaydedip Gönderme:
Tabloları her sayfa için PDF olarak kaydedip, WhatsApp üzerinden göndermek için ise aşağıdaki gibi bir yöntem uygulayabilirsin:

Kod:
Sub mesajPDF()
    Dim kime As String: Dim pdfPath As String
    Dim i As Integer: Dim j As Integer
    Static whatsappOpened As Boolean
    i = Sheets.Count

    For j = i To 8 Step -1
        Sheets(j).Select
        kime = ActiveSheet.Range("B30").Text
        
        ' Sayfayı PDF olarak kaydet
        pdfPath = "C:\DosyaYolu\" & ActiveSheet.Name & ".pdf" ' Kendi dosya yolunu ayarla
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, Quality:=xlQualityStandard

        ' WhatsApp'ı sadece bir kez aç
        If Not whatsappOpened Then
            ActiveWorkbook.FollowHyperlink Address:="https://web.whatsapp.com/"
            Application.Wait (Now + TimeValue("00:00:05"))
            whatsappOpened = True
        End If

        ' WhatsApp arama kısmına numarayı yapıştır ve PDF dosyasını gönder
        Call SendKeys("^t", True)
        Application.Wait (Now + TimeValue("00:00:01"))
        Call SendKeys(kime, True)
        Call SendKeys("~", True)
        Application.Wait (Now + TimeValue("00:00:02"))
        Call SendKeys(pdfPath, True) ' PDF dosya yolunu yapıştır
        Call SendKeys("~", True)

        ' Gönderildiğine dair ana sayfada not düş
        Sheets("ANASAYFA").Range("AY3").Value = "Bordro iletildi."
    Next j
End Sub
Eğer WhatsApp üzerinden doğrudan PDF dosyası gönderme işlevini manuel olarak gerçekleştiriyorsan bu kodlar bu işlemi hızlandıracaktır.

Kodları denemedim. Umarım çalışır ve işini görür.
 

SMSKMHMMT

Altın Üye
Katılım
28 Şubat 2024
Mesajlar
29
Excel Vers. ve Dili
2020
Altın Üyelik Bitiş Tarihi
25-04-2029
Sayın tugkan verdiğiniz güzel izahat ve yardımınız için çok teşekkür ederim. Böyle bir yardımı görünce açıkçası hemen yazmak istedim fakat şuan kodu deneyecek bir yerde değilim yine de cevabınız, izahatınız, anlayışınız için teşekkür etmek istedim. Kodu deneyip bilgilendirme geçeceğim belki başkalarına da yardımcı olabilir.
 

Bintang

Altın Üye
Katılım
31 Ekim 2006
Mesajlar
326
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019,Türkçe
Altın Üyelik Bitiş Tarihi
05-09-2029
Merhaba,
Öncelikle sorularının çok mantıklı olduğunu belirtmek isterim. Yapmak istediğin işlem gayet anlaşılır ve VBA kullanarak bunu yapabilmek mümkün. Kodda karşılaştığın sorunlara ve çözüm yollarına birlikte bakalım.

1. WhatsApp Web'i Tekrar Tekrar Açma Sorunu:
Döngü içinde ActiveWorkbook.FollowHyperlink komutu WhatsApp Web'i her seferinde yeniden açıyor. Bunu önlemek için, WhatsApp Web'i bir kere açıp, sonrasında döngüde sadece tab tuşlarını ve gerekli işlemleri gönderebiliriz. WhatsApp'ın açık olup olmadığını kontrol edip, yalnızca ilk seferde açılması için bir kontrol ekleyebiliriz. Örneğin, döngü başında WhatsApp'ı açabiliriz.

2. Tabloyu Yapıştırırken Üstte Görsel ve Yazı Çıkması Sorunu:
Excel tablosunu WhatsApp'a yapıştırırken tablo, resim ve metin olarak gönderiliyor. Bunun yerine tabloyu metin olarak göndermek daha etkili olur. Bu, tabloyu kopyaladıktan sonra metin formatına çevirerek yapılabilir.

3. PDF Olarak Kaydetme ve Gönderme:
Tabloyu PDF formatında bir klasöre kaydedip, sonrasında bu PDF'yi WhatsApp üzerinden göndermek de mümkün. Bunun için önce PDF'yi her sayfa adına göre kaydetmek, ardından PDF dosyasını ilgili kişiye göndermek için bir yol izleyebiliriz.

Şimdi iki yöntemden birini seçebilirsin:

  • Tabloyu WhatsApp'a metin olarak yapıştırma
  • Tabloyu PDF olarak kaydedip WhatsApp'tan gönderme
1. WhatsApp Üzerine Tabloyu Metin Olarak Gönderme:
Aşağıda tabloyu metin olarak WhatsApp'a gönderen güncellenmiş bir kod örneği bulabilirsin:

Kod:
Sub mesaj()
    Dim kime As String: Dim tablo As String
    Dim i As Integer: Dim j As Integer
    Static whatsappOpened As Boolean ' WhatsApp'ın sadece bir kez açılması için statik değişken
    i = Sheets.Count

    For j = i To 8 Step -1
        Sheets(j).Select
        kime = ActiveSheet.Range("B30").Text
       
        ' Tablonun hücrelerini metin formatında al
        tablo = ""
        Dim cell As Range
        For Each cell In ActiveSheet.Range("AL3:AY44")
            tablo = tablo & cell.Text & vbTab ' Tab ile hücreleri ayır
        Next cell
       
        ' WhatsApp'ı sadece bir kez aç
        If Not whatsappOpened Then
            ActiveWorkbook.FollowHyperlink Address:="https://web.whatsapp.com/"
            Application.Wait (Now + TimeValue("00:00:05")) ' WhatsApp'ın tam açılması için 5 saniye bekle
            whatsappOpened = True
        End If

        ' WhatsApp arama kısmına numarayı yapıştır ve mesajı gönder
        Call SendKeys("^t", True) ' Yeni WhatsApp sekmesi aç (ctrl + t)
        Application.Wait (Now + TimeValue("00:00:01"))
        Call SendKeys(kime, True)
        Call SendKeys("~", True)
        Application.Wait (Now + TimeValue("00:00:02"))
        Call SendKeys(tablo, True) ' Tablodaki verileri yapıştır
        Call SendKeys("~", True) ' Gönder tuşuna bas

        ' Gönderildiğine dair ana sayfada not düş
        Sheets("ANASAYFA").Range("AY3").Value = "Bordro iletildi."
    Next j
End Sub
2. Tabloyu PDF Olarak Kaydedip Gönderme:
Tabloları her sayfa için PDF olarak kaydedip, WhatsApp üzerinden göndermek için ise aşağıdaki gibi bir yöntem uygulayabilirsin:

Kod:
Sub mesajPDF()
    Dim kime As String: Dim pdfPath As String
    Dim i As Integer: Dim j As Integer
    Static whatsappOpened As Boolean
    i = Sheets.Count

    For j = i To 8 Step -1
        Sheets(j).Select
        kime = ActiveSheet.Range("B30").Text
       
        ' Sayfayı PDF olarak kaydet
        pdfPath = "C:\DosyaYolu\" & ActiveSheet.Name & ".pdf" ' Kendi dosya yolunu ayarla
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, Quality:=xlQualityStandard

        ' WhatsApp'ı sadece bir kez aç
        If Not whatsappOpened Then
            ActiveWorkbook.FollowHyperlink Address:="https://web.whatsapp.com/"
            Application.Wait (Now + TimeValue("00:00:05"))
            whatsappOpened = True
        End If

        ' WhatsApp arama kısmına numarayı yapıştır ve PDF dosyasını gönder
        Call SendKeys("^t", True)
        Application.Wait (Now + TimeValue("00:00:01"))
        Call SendKeys(kime, True)
        Call SendKeys("~", True)
        Application.Wait (Now + TimeValue("00:00:02"))
        Call SendKeys(pdfPath, True) ' PDF dosya yolunu yapıştır
        Call SendKeys("~", True)

        ' Gönderildiğine dair ana sayfada not düş
        Sheets("ANASAYFA").Range("AY3").Value = "Bordro iletildi."
    Next j
End Sub
Eğer WhatsApp üzerinden doğrudan PDF dosyası gönderme işlevini manuel olarak gerçekleştiriyorsan bu kodlar bu işlemi hızlandıracaktır.

Kodları denemedim. Umarım çalışır ve işini görür.
Üstadım Merhaba;
Konu oldukça dikkatimi çekti gerçekten elinize emeğinize sağlık. Benimde buna benzer bir konu üzerine sorum ve yardım rica olacak. Ben bir sitenin yöneticisiyim her evin ayrı ayrı borç alacak tablosu var. Kodlarla da PDF çevirebiliyorum ancak gönderme konusunda tek tek gönderiyordum. Bunları Whatsapp dan ilgili kişilere gönderebilirmiyim. Her evin iletişim numarası H2 sütunlarında yazılı. Çalıştığım dosya ektedir.
 

Ekli dosyalar

Katılım
6 Kasım 2004
Mesajlar
225
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
25-07-2023
Üstadım Merhaba;
Konu oldukça dikkatimi çekti gerçekten elinize emeğinize sağlık. Benimde buna benzer bir konu üzerine sorum ve yardım rica olacak. Ben bir sitenin yöneticisiyim her evin ayrı ayrı borç alacak tablosu var. Kodlarla da PDF çevirebiliyorum ancak gönderme konusunda tek tek gönderiyordum. Bunları Whatsapp dan ilgili kişilere gönderebilirmiyim. Her evin iletişim numarası H2 sütunlarında yazılı. Çalıştığım dosya ektedir.
xcel VBA ile WhatsApp üzerinden PDF dosyalarını göndermek için, WhatsApp API'leri veya WhatsApp Web kullanarak bir otomasyon kurmanız gerekiyor. Bunu yapmak için genellikle WhatsApp Web'i kullanarak tarayıcı otomasyonu (Selenium gibi) ya da üçüncü parti bir API kullanabilirsiniz.

İlk adım olarak Selenium WebDriver ile WhatsApp Web'e bağlanarak PDF dosyalarını gönderen bir VBA kodu oluşturabiliriz. Ancak, WhatsApp Web'e erişim için manuel doğrulama gerekebilir.

Gereksinimler:
  1. Selenium WebDriver: VBA ile tarayıcı otomasyonu sağlamak için Selenium ve ChromeDriver gibi bir WebDriver'e ihtiyaç var.
  2. WhatsApp Web: WhatsApp Web ile telefon numaralarına mesaj göndereceğiz.
  3. Klasördeki PDF Dosyaları: Belirttiğiniz klasördeki PDF dosyalarını WhatsApp üzerinden göndermek için ek olarak ayarlamalar yapmamız gerekecek.
Aşağıdaki kod, Selenium ile WhatsApp Web'e bağlanarak PDF dosyalarını telefon numaralarına gönderen temel bir örnektir. Selenium'u VBA ile nasıl entegre edeceğinizi varsayıyorum.

Adım 1: Selenium WebDriver Kurulumu
Öncelikle, Selenium'u ve gerekli bileşenleri indirmeniz gerekecek. İlgili kurulum adımları şu şekildedir:

  1. VBA için Selenium eklentisini indirin.
  2. ChromeDriver'ı indirip uygun bir klasöre yerleştirin.
Adım 2: VBA Kodu
Kod:
Sub WhatsAppPDFGönder()
    Dim driver As Object
    Dim ws As Worksheet
    Dim phoneNumber As String
    Dim pdfPath As String
    Dim folderPath As String
    Dim lastRow As Long
    Dim i As Long

    ' Klasör yolunu ve sayfayı ayarlayın
    folderPath = "C:\Path\To\Your\PDF\Folder\" ' PDF dosyalarının bulunduğu klasör
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Hangi sayfada çalışıyorsanız onu seçin

    ' Son satırı bul
    lastRow = ws.Cells(ws.Rows.Count, "H").End(xlUp).Row

    ' Selenium WebDriver başlat
    Set driver = CreateObject("Selenium.WebDriver")
    driver.Start "chrome", "https://web.whatsapp.com"
    driver.Window.Maximize

    ' WhatsApp Web QR kodu tarandıktan sonra devam edin
    MsgBox "Lütfen QR kodunu taratın ve devam etmek için Tamam'a tıklayın."

    ' Her satırdaki telefon numaralarına mesaj gönder
    For i = 2 To lastRow ' H sütunundaki telefon numaralarına göre başla
        phoneNumber = ws.Cells(i, "H").Value
        
        ' WhatsApp Web URL'sini kullanarak mesaj gönder
        driver.Get "https://web.whatsapp.com/send?phone=" & phoneNumber & "&text=&app_absent=0"
        Application.Wait Now + TimeValue("00:00:05") ' Sayfanın yüklenmesini bekleyin
        
        ' PDF dosyasının yolunu oluşturun
        pdfPath = folderPath & "filename" & i & ".pdf" ' Dosya adını ve formatını düzenleyin
        
        ' Dosya yükleme alanına tıklayın ve PDF dosyasını seçin
        driver.FindElementByCss("span[data-icon='clip']").Click
        Application.Wait Now + TimeValue("00:00:02")
        driver.FindElementByCss("input[type='file']").SendKeys pdfPath
        Application.Wait Now + TimeValue("00:00:02")
        
        ' Gönder düğmesine tıklayın
        driver.FindElementByCss("span[data-icon='send']").Click
        Application.Wait Now + TimeValue("00:00:03")
    Next i

    ' Selenium'u kapat
    driver.Quit
End Sub
Açıklamalar:
  • driver.Get "https://web.whatsapp.com/send?phone=...": Bu satır, WhatsApp Web'deki belirli bir numaraya mesaj göndermek için gerekli URL'yi oluşturur.
  • "span[data-icon='clip']": Bu, WhatsApp Web'de dosya ekleme simgesini seçmek için kullanılır.
  • SendKeys ile dosya yolu: PDF dosyasının yolunu seçer ve gönderir.
Önemli Notlar:
  1. QR Kod Tarama: WhatsApp Web'e giriş yaptıktan sonra, QR kodunu manuel olarak taramanız gerekir.
  2. ChromeDriver: Kullandığınız Chrome sürümü ile uyumlu bir ChromeDriver sürümü indirmeniz gerekiyor.
  3. Selenium ve VBA Entegrasyonu: Selenium'la VBA entegrasyonu manuel müdahale gerektirebilir ve tüm sürecin sorunsuz işlemesi için bazı hatalarla karşılaşabilirsiniz.
Bu kod, temel olarak PDF'leri WhatsApp'tan göndermek için bir başlangıç noktası sunar.
 
Üst