Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Makro-VBA (http://www.excel.web.tr/forumdisplay.php?f=48)
-   -   Makro Bulunamadı Hatası (http://www.excel.web.tr/showthread.php?t=169176)

kduman 22-12-2017 17:33

Makro Bulunamadı Hatası
 
Herkese iyi akşamlar,
uzun zamandır uğraştığım bir makroyu tamamlamaya çalışıyorum ama bir yerde tıkandım,
özetlemek gerekirse,
excel sayfam günün belirli bir saatinde otomatik olarak açılacak 5 sn sonra belirlediğim adreslere otomatik olarak mail atacak.
mail atma işlemi manuelde sorunsuz işliyor ama otomatik olarak yapmaya çalıştığımda "bu makro bulanamadı veya devre dışı olabilir" tarzı bir uyarı veriyor, tüm güvenlik ayarlarım en düşükte ne yaptıysam olmadı.
ayrıca onu daha sonra yapacağım o da ayrı bir konu günde sadece 1 defa mail gidecek otomatik olarak, exceli her açtığımda mail gitmesini istemiyorum.
formda gördüm çok eski konularda var ama ne dedilerse yaptım olmadı.
yardımlarınızı bekliyorum.
şimdiden teşekkürler iyi çalışmalar diliyorum.

kduman 22-12-2017 17:37

Sub Auto_Open()
Application.OnTime Now + TimeSerial(0, 0, 5), "Ay"
End Sub

Private Function Ay()
Dim Sayfa As Worksheet
Dim Alan As Range
Dim daralan As Range

If Cells(2, 2) = "" Then GoTo HATA

On Error GoTo HATA

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

saydir = WorksheetFunction.CountIf(Range("d:d"), "<>") + 1
DinamikAlan = "d2:" & "k" & saydir
Set Alan = Worksheets("Sayfa1").Range(DinamikAlan)

Set Sayfa = ActiveSheet

With Alan

.Parent.Select
Set daralan = ActiveCell

.Select
ActiveWorkbook.EnvelopeVisible = True
With .Parent.MailEnvelope

.Introduction = "Otomatik maildir lütfen cevap vermeyiniz!.. ...... tarafından Tasarlanmıştır"
With .Item
.To = Cells(2, 2)
.CC = Cells(3, 2)
.Subject = Cells(1, 2)
.bcc = ""
.Send
End With

End With

daralan.Select
End With

Sayfa.Select

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

End Function

cems 22-12-2017 18:15

www.dosya.tc

kduman 22-12-2017 19:17

Alıntı:

cems tarafından gönderildi (Mesaj 922860)

iyi akşamlar,
dosyayı paylaşım yerine yükledim sayın Cems

cems 22-12-2017 19:41

Alıntı:

kduman tarafından gönderildi (Mesaj 922866)
iyi akşamlar,
dosyayı paylaşım yerine yükledim sayın Cems

Linki de buraya kopyalamalısınız. Ayrıca

Alıntı:

excel sayfam günün belirli bir saatinde otomatik olarak açılacak 5 sn sonra belirlediğim adreslere otomatik olarak mail atacak
Başka bir açık excel dosyası tarafından çağrılmadığı sürece windowsun zamanlanmış görevleri ile dosya açılabilir. Açıldıktan 5 saniye sonrası için de wait kodu gerekli. İkisi ayrı konu ve ilki sizin ile makinanız arasında bir konu, zamanlanmış görevler konusunu irdeleyin .

kduman 22-12-2017 20:17

Sayın Cems haklısınız ilki benim bilgisayar ile ilgili onu bir şekilde çözeceğim ama dediğim gibi açıldıktan sonra makroyu çalıştıramadım,
ayrıca günde sadece 1 defa çalışma noktasında da yardımınızı bekliyorum.
şimdiden teşekkür ederim.
dosyanın linki aşağıdadır,

http://s3.dosya.tc/server13/8bvbl5/Makro_Mail.rar.html

askm 22-12-2017 20:40

Aşağıdaki şekilde deneyin.
Kod:

Private Sub workbook_open()
On Error Resume Next
eskitarih = CDate(Range("W1").Value)
If Date <> eskitarih Then Ay
Range("W1").Value = Date
End Sub

Private Function Ay()
    Dim Rky As Object
    yol$ = ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, From:=1, To:=2, OpenAfterPublish:=False
    Set Rky = CreateObject("Outlook.Application").CreateItem(0)
    With Rky
        .To = "askmadige342@hotmail.com" '"kayaduman@gursoygrup.com.tr"
        .CC = ""
        .BCC = ""
        .Subject = "iş prg"
        .Body = "ek"
        .Attachments.Add yol$
        .Send
    End With
    Set Rky = Nothing: yol = ""
End Function


cems 22-12-2017 20:43

Alıntı:

Private Function Ay()
Dim Rky As Object
yol$ = ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) & ".pdf"
Range("C1:L49").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\KASA\Desktop\s.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set Rky = CreateObject("Outlook.Application").CreateItem(0)
With Rky
.To = "kayaduman@gursoygrup.com.tr"
.CC = ""
.BCC = ""
.Subject = "iş prg"
.Body = "ek"
.Attachments.Add yol$
.Send
End With
Set Rky = Nothing: yol = ""
End Function
sayfa pdf ye çevrildiğinde alan belirtin ve yolu siz düzeltin , şu an bu kodları deneme şansım yok sadece mantık yürütebildim

kduman 23-12-2017 06:48

Sayın Cems günaydın,
kodlar için teşekkürler ilgilenmeniz yeterli,
ben deneyip bilgi vereceğim size.
iyi günler diliyorum.

kduman 23-12-2017 07:32

Sayın Cems günaydın,
Allah razı olsun sizden uzun zamandır uğraştığım işi çözdüm sayenizde,ayrıca dediğiniz gibi makronun beklemeli açılması içinde wait komutunu kullandım, şu anda görünen bir problemim kalmadı.
tekrardan teşekkürler,
iyi çalışmalar dilerim.

cems 23-12-2017 13:34

Alıntı:

kduman tarafından gönderildi (Mesaj 922892)
Sayın Cems günaydın,
Allah razı olsun sizden uzun zamandır uğraştığım işi çözdüm sayenizde,ayrıca dediğiniz gibi makronun beklemeli açılması içinde wait komutunu kullandım, şu anda görünen bir problemim kalmadı.
tekrardan teşekkürler,
iyi çalışmalar dilerim.

Hayırlı işler dilerim :) kolay gelsin...

kduman 03-01-2018 22:18

Alıntı:

cems tarafından gönderildi (Mesaj 922927)
Hayırlı işler dilerim :) kolay gelsin...

Sayın Cems iyi geceler,
uzun bir aradan sonra tekrar geldim, sizinle en son görüşmemize istinaden bir problemim kalmadı demiştim ama tabi rahat durmuyorum aklıma bir msgbox kutusu geldi, normalde bu mail gönderme kodu eğer ki alıcı kısmında kimse yok ise hata koduna gidiyor ve işlemi sonlandırıyor bu işlem sonlandırmasında uyarı çıkmasını istiyorum kodu ona göre yazdım ama daha sonra maili göndermemesine rağmen diğer msgbox kutusuna gidiyor ve mail gönderilmiş gibi uyarı çıkıyor, bunun çözümü nasıl olabilir acaba?
şimdiden teşekkürler iyi çalışmalar dilerim.

Private Function Ay()

Dim Sayfa As Worksheet
Dim Alan As Range
Dim daralan As Range

If Cells(2, 2) = "" Then GoTo HATA

On Error GoTo HATA

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

saydir = WorksheetFunction.CountIf(Range("D:D"), "<>") + 2
DinamikAlan = "D4:" & "J" & saydir
Set Alan = Worksheets("Sayfa1").Range(DinamikAlan)

Set Sayfa = ActiveSheet

With Alan

.Parent.Select
Set daralan = ActiveCell

.Select
ActiveWorkbook.EnvelopeVisible = True
With .Parent.MailEnvelope

.Introduction = "Otomatik maildir lütfen cevap vermeyiniz!.."
With .Item
.To = Cells(2, 2)
.CC = Cells(3, 2)
.Subject = Cells(1, 2)
.bcc = ""
.Send
End With

End With

daralan.Select
End With

Sayfa.Select

HATA:
With Application
.ScreenUpdating = True
.EnableEvents = True
MsgBox "Dikkat !.. Alıcı Kısmı Boş Olduğu İçin Mail Gönderilemedi!.."
End With
Call x
End Function

Sub x()
MsgBox "Dikkat !.. Mailinizi Otomatik Olarak Gönderdiniz"
MsgBox "Çalışmanızı Kaydetmeyi Unutmayınız !..."
End Sub

saban20152015 04-01-2018 03:04

Call x kodunu HATA: satırının üzerine alarak deneyin.


Kod:

Call x
HATA:
With Application
.ScreenUpdating = True
.EnableEvents = True
MsgBox "Dikkat !.. Alıcı Kısmı Boş Olduğu İçin Mail Gönderilemedi!.."
End With
End Function


kduman 04-01-2018 07:26

Alıntı:

saban20152015 tarafından gönderildi (Mesaj 924423)
Call x kodunu HATA: satırının üzerine alarak deneyin.


Kod:

Call x
HATA:
With Application
.ScreenUpdating = True
.EnableEvents = True
MsgBox "Dikkat !.. Alıcı Kısmı Boş Olduğu İçin Mail Gönderilemedi!.."
End With
End Function


Sayın Saban günaydın,
call x i üste alınca düzgün uyarıyı aldım kod kendini sonlandırdı fakat bu seferde alıcı kısmı dolu olunca maili gönderiyor, işlem bittikten sonra tekrar mail gönderilemedi hatası alıyorum yani tüm msgbox kutuları aktif hale geliyor.
yorumlarınız için şimdiden teşekkürler.

cems 04-01-2018 09:01

Alıcı kısmı boş ise kalan işleme gerek yok ki, işlemden çıkması gerek ..

Dim Sayfa As Worksheet
Dim Alan As Range
Dim daralan As Range

If Cells(2, 2) = "" Then
Msgbox " Kime göndereceğimi de söyleseydin... "
end if
exit sub

diğer kodlar aynı olarak deneyin, HATA konusu başka konu.

kduman 04-01-2018 09:39

Alıntı:

cems tarafından gönderildi (Mesaj 924443)
Alıcı kısmı boş ise kalan işleme gerek yok ki, işlemden çıkması gerek ..

Dim Sayfa As Worksheet
Dim Alan As Range
Dim daralan As Range

If Cells(2, 2) = "" Then
Msgbox " Kime göndereceğimi de söyleseydin... "
end if
exit sub

diğer kodlar aynı olarak deneyin, HATA konusu başka konu.

Sayın Cems teşekkürler, her zamanki gibi çözdünüz konuyu elinize sağlık :)
iyi çalışmalar diliyorum üstad...

cems 04-01-2018 09:53

Alıntı:

kduman tarafından gönderildi (Mesaj 924454)
Sayın Cems teşekkürler, her zamanki gibi çözdünüz konuyu elinize sağlık :)
iyi çalışmalar diliyorum üstad...

Estağfurullah, kolay gelsin :)


Saat 02:06

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.