Döngü bitince hücreye değer yazdırma sorunu

Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA
Merhaba,

aşağıdaki kod ile 1 artırma yaparak farklı bir sayfayı PDF olarak kaydediyor.

Burada 2 sorunum var. Döngü işlemi "L36" hücresinde yazan rakam ne ise onda son buluyor. işlem tamamlandıktan sonra Artırdığı P2 Hücresine otomatik olarak 1 rakamını yazmasını istiyorum. Ama yazmıyor.

PDF leri çıkarma işlemini yaptıktan sonra TYPE mistmatch diye bir uyarı veriyor. Acaba bu uyarı mı 1 değerini yazma kodunu engelliyor.

ikinci konu kaydedeceği yol için açılacağı bilgisayarda otomatik olarak masaüstüne belirlenmesini istiyorum. Bunu zaten hiç beceremedim :)

Sub PdfKaydet()

For i = 1 To Sheets("Formuldata").Range("L36")
mycount = Range("p2") + 1
Range("p2") = mycount

With Sheets("Pers_det")
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:= _
"D:\" & Sheets("Pers_det").Range("b3") & "-" & Sheets("Pers_det").Range("b2").Value, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
Next
Range("P2").Select
ActiveCell.FormulaR1C1 = "1"
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Verdiğiniz kodu denediğimde düzgün bir şekilde çalıştı.

Örnek dosyanızı hatalı haliyle paylaşırsanız iyi olur.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Masaüstü için aşağıdaki tanımlamalardan birisini kullanabilirsiniz.

C++:
Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & Application.PathSeperator & "Dosya_Adını_Bu_Bölüme_Yazınız"
Ya da;

C++:
Yol = Environ("UserProfile") & Application.PathSeperator & "Desktop" & Application.PathSeperator & "Dosya_Adını_Bu_Bölüme_Yazınız"
 
Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Makronuzda yapmak istediğinizi doğru anladıysam makronuzu gereksiz uzattığınızı söyleyebilirim. Anladığım kadarıyla formuldata sayfasında P2 hücresini 1'den başlayarak birer arttırıp her seferinde persdet sayfasını pdf olarak kaydetmek istiyorsunuz. Bunun için hem for next döngüsü hem de mycount değişkeni kullanmanıza gerek yok. For next döngüsü zaten bunun için var. Aşağıdaki makroyu deneyin:

PHP:
Sub PdfKaydet()
For i = 1 To Sheets("Formuldata").Range("L34")
    Sheets("Formuldata").[P2] = i
    With Sheets("Pers_det")
        .ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Environ("USERPROFILE") & Application.PathSeparator & "Desktop" & Application.PathSeparator & _
        Sheets("Pers_det").[B3] & "-" & Sheets("Pers_det").Range("b2").Value & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    End With
Next
Sheets("Formuldata").[P2] = 1
Sheets("Formuldata").Activate
End Sub
Type Missmatch hatasının sebebi persdet sayfasındaki ilk bilgilerin hata değeri içermesiydi.

Resim ekleme kısmı beni aşıyor.
 
Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA
Makronuzda yapmak istediğinizi doğru anladıysam makronuzu gereksiz uzattığınızı söyleyebilirim. Anladığım kadarıyla formuldata sayfasında P2 hücresini 1'den başlayarak birer arttırıp her seferinde persdet sayfasını pdf olarak kaydetmek istiyorsunuz. Bunun için hem for next döngüsü hem de mycount değişkeni kullanmanıza gerek yok. For next döngüsü zaten bunun için var. Aşağıdaki makroyu deneyin:

PHP:
Sub PdfKaydet()
For i = 1 To Sheets("Formuldata").Range("L34")
    Sheets("Formuldata").[P2] = i
    With Sheets("Pers_det")
        .ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Environ("USERPROFILE") & Application.PathSeparator & "Desktop" & Application.PathSeparator & _
        Sheets("Pers_det").[B3] & "-" & Sheets("Pers_det").Range("b2").Value & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    End With
Next
Sheets("Formuldata").[P2] = 1
Sheets("Formuldata").Activate
End Sub
Type Missmatch hatasının sebebi persdet sayfasındaki ilk bilgilerin hata değeri içermesiydi.

Resim ekleme kısmı beni aşıyor.
Ellerinize sağlık çok teşekkür ederim söylediğiniz gibi fazladan kod olmuş içerisinde onu hiç düşünemedim. Resim için Halen araştırmaya devam ediyorum.
 
Üst