Excel Vba Kod İle Hesaplama Ve Pdf

1 2 3 4
11/12/2023, 02:36

feraz

Gün içerisinde bakarım.
Yolladığınız dosyada yazdıklarınız varmıydı.

Ben pdf ekletirken son satır olarak 1lt maliyet satırını buldurmuştum.Yapmanız gereken tek şey onun yerine Toplam lt maliyet satırını buldurmak.Ve bunuda yapmıştım dosyada ve bir bakun uyarlamaya çalışın.Zor değil abey.

Yani 9.Mesajdaki hata satırının üst tarafında olacak yanılmıyorsam.
Sadece orda dediğim değişecek.
11/12/2023, 02:46

feraz

Yada uğraşmayın currentregion ile tümünü kopyalatayım sadece w/ w satırı buldurup.
11/12/2023, 02:48

hnakis

(11/12/2023, 02:36)feraz yazdı: Gün içerisinde bakarım.
Yolladığınız dosyada yazdıklarınız varmıydı.

Ben pdf ekletirken son satır olarak 1lt maliyet satırını buldurmuştum.Yapmanız gereken tek şey onun yerine Toplam lt maliyet satırını buldurmak.Ve bunuda yapmıştım dosyada ve bir bakun uyarlamaya çalışın.Zor değil abey.

Yani 9.Mesajdaki hata satırının üst tarafında olacak yanılmıyorsam.
Sadece orda dediğim değişecek.

kodu inceleyip yapmaya çalışıyorum. umarım başarıcam
11/12/2023, 09:23

hnakis

sayın feraz;

Const ToplaLTMAliyet As String = "Toplam lt maliyet"

Public Const ToplaLTMAliyet As String = "Toplam lt maliyet"

bu iki ifadenin farkını anlayamadım ama PDF yapma kodunda sorun olan şey Const ve Public Const farkı.

ana kodda const ile tanımlı olduğu için Toplam lt maliyet kısmına kadar olan yeri gösteremedim ama Public Const olarak değiştirince pdf olarak kaydedilebildi. yani bu şekilde çözdüm meseleyi

saygılar
11/12/2023, 10:51

feraz

(11/12/2023, 09:23)hnakis yazdı: Const ToplaLTMAliyet As String = "Toplam lt maliyet"

Public Const ToplaLTMAliyet As String = "Toplam lt maliyet"
Modülde public yazmazsa sadece modülden erişilir yazarsa her mıdül ve sayfa ve diğer yerlerden erişir abey.
11/12/2023, 11:45

feraz

Bu dosya daha iyi oldu.
Currenregion ile yaptım ve 1 lt ve toplamlt olayları ortadan kalktı.
Kod altta değişen.

Kod:
Private Sub btn_PDF_Click()
    Dim urunAdikac As Long, i As Long, son As Long, say As Long, bulW_W As Long
    Dim syf As Worksheet, wb As Workbook, wbSyf As Worksheet, syfRecete As Worksheet, bulundu As Byte, yol As String
    
    Set syf = ThisWorkbook.Worksheets("SayfaListeleri")
    
    With Me.ListBox1
        If .ListCount = 0 Then Exit Sub
        ReDim arr(1 To 1)
        say = 0: bulundu = 0
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
            say = say + 1
            ReDim Preserve arr(1 To say)
            arr(say) = .List(i)
            End If
        Next
        
        If say > 0 Then
            Set wb = Workbooks.Add
            Set wbSyf = wb.Worksheets(1)
            wbSyf.Name = "PDF"
            Application.ScreenUpdating = False
            For i = 1 To say
                urunAdikac = AraBul(UrunAdi, ThisWorkbook.Worksheets(arr(i)).Range("B:B"))
                If urunAdikac > 0 Then
                    bulundu = 1
                    Set syfRecete = ThisWorkbook.Worksheets(arr(i))
                    bulW_W = AraBul(w_w, ThisWorkbook.Worksheets(arr(i)).Range("D:D"))
                    If bulW_W > 0 Then
                        With syfRecete.Range(syfRecete.Cells(urunAdikac, "B"), syfRecete.Cells(bulW_W, "D").CurrentRegion) 'ürün adi alani veww alaninin tamami icin
                            If i = 1 Then
                                .Copy wbSyf.Cells(Rows.Count, 1).End(3)(2, 1) '2 tek satir atlama icin
                            ElseIf i > 1 Then
                                .Copy wbSyf.Cells(Rows.Count, 1).End(3)(4, 1) '4 üc satir atlama icin
                            End If
                        End With
                    End If
                End If
            Next
            birlestirIcerikler wbSyf
            PDF2Sayfa wbSyf
            Application.ScreenUpdating = True
            wbSyf.Columns.AutoFit
            Application.CutCopyMode = False
            
            If bulundu > 0 Then
                yol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Format(Now, "dd-mm-yyyy --- hh_mm_ss")
                wbSyf.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True

                Set obj = CreateObject("Shell.Application")
                If Dir(yol & ".pdf") <> "" Then obj.ShellExecute (yol & ".pdf")
                Set obj = Nothing
            End If
        End If
    End With
    
    On Error Resume Next
    Application.CutCopyMode = False
    Erase arr
    wb.Close 0
    Set syf = Nothing: Set wbSyf = Nothing: Set wb = Nothing
End Sub
1 2 3 4