ست کردن محدود پرینت بصورت دینامیک (برای یک عکس)

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • a.dal65

    • 2011/04/29
    • 384
    • 67.00

    [حل شده] ست کردن محدود پرینت بصورت دینامیک (برای یک عکس)

    با سلام خدمت اساتید .

    توی یک شیت در کنار جدولم یه عکس دارم .

    وقتی جدول رو فیلتر میکنم ،رنج پرینت عکسی که در کنار جدول هم هست تغییر میکنه و هر بار مجبورم رنج پرینت برای عکس رو دستی تغییر بدم.

    آیا این امکان هست رنج پرینت یه عکس رو با VBA بصورت دینامیک ست کرد ؟

    یا فارغ از رنج ، با اسم اون object پرینت گرفت؟

    توی اینترنت هر جور سرچی که فکر کنید زدم ولی چیزی پیدا نکردم.
    4 روزه با این درگیرم !!!
    فایل های پیوست شده
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    نوشته اصلی توسط atadaliran
    با سلام خدمت اساتید .

    توی یک شیت در کنار جدولم یه عکس دارم .

    وقتی جدول رو فیلتر میکنم ،رنج پرینت عکسی که در کنار جدول هم هست تغییر میکنه و هر بار مجبورم رنج پرینت برای عکس رو دستی تغییر بدم.

    آیا این امکان هست رنج پرینت یه عکس رو با VBA بصورت دینامیک ست کرد ؟

    یا فارغ از رنج ، با اسم اون object پرینت گرفت؟

    توی اینترنت هر جور سرچی که فکر کنید زدم ولی چیزی پیدا نکردم.
    4 روزه با این درگیرم !!!

    سلام دوست عزيز
    دو تا راه پيشنهاد ميكنم ببينين كدومش براتون عمليه
    يكي اينكه عكس رو تو شيت ديگه بذاريد
    دوم اينكه عكس رو خارج از محدوده فيلتر بذاريد. مثلا اگه محدوده فيلتر در رديف 1000 تموم ميشه عكس رو در رديف 1001 به بعد بذاريد

    اگر هيچ كدوم از اينها براتون عملي نيست ميتونين همين كار رو با vba انجام بدين و بعد پاك كنيد

    کامنت

    • Amir Ghasemiyan

      • 2013/09/20
      • 4598
      • 100.00

      #3
      يك كد كوچيك نوشتم براتون. كه اتومات تعداد رديف رو بر اساس ارتفاع عكس محاسبه كنه. از اين هم ميتونين كمك بگيريد
      کد:
      h = 0: i = 11
      ph = ActiveSheet.Shapes.Range(Array("MapHamkaf")).Height
      Do While h < ph
      h = Range("j" & i).Height + h
      i = i + 1
      Loop
      
      
      PrintArea = "J11:AG&i+1"

      کامنت

      • a.dal65

        • 2011/04/29
        • 384
        • 67.00

        #4
        به فکر خودم راه اول رسید ولی چون چند تا شیت دیگه وجود داشت توی فایل و چند تا جدول دیگه هم وجود داره اگه بخوام اینکارو کنم کمی شلوغ میشه.

        ولی راه دوم بهتره و به فکرم نرسید !
        میبرم خارج از رنج فیلتر و با VBA سطر های خالی را مخفی میکنم .
        ممنون



        امیر جان کدی که زحمت کشیدی برای شما کار میکنه ؟
        Last edited by a.dal65; 2018/01/01, 13:47. دلیل: """

        کامنت

        • Amir Ghasemiyan

          • 2013/09/20
          • 4598
          • 100.00

          #5
          نوشته اصلی توسط atadaliran
          به فکر خودم راه اول رسید ولی چون چند تا شیت دیگه وجود داشت توی فایل و چند تا جدول دیگه هم وجود داره اگه بخوام اینکارو کنم کمی شلوغ میشه.

          ولی راه دوم بهتره و به فکرم نرسید !
          میبرم خارج از رنج فیلتر و با VBA سطر های خالی را مخفی میکنم .
          ممنون

          خواهش ميكنم. راه سوم به نظرم راحت تر باشه براتون. ولي بازم هر طور راحتيد

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4598
            • 100.00

            #6
            كد كاملش رو نوشتم. چك هم كردم درست كار ميكنه.


            کد:
            Sub Macro1()
            h = 0: i = 11
            ph = ActiveSheet.Shapes.Range(Array("MapHamkaf")).Height
            Do While h < ph
            h = Range("j" & i).Height + h
            i = i + 1
            Loop
            PrintArea = "J11:AG" & i + 1
            print_picture PrintArea
            End Sub
            Sub print_picture(PrintArea)
                ActiveSheet.PageSetup.PrintArea = PrintArea
                Application.PrintCommunication = False
                With ActiveSheet.PageSetup
                    .LeftMargin = Application.InchesToPoints(0)
                    .RightMargin = Application.InchesToPoints(0)
                    .TopMargin = Application.InchesToPoints(0)
                    .BottomMargin = Application.InchesToPoints(0)
                    .HeaderMargin = Application.InchesToPoints(0)
                    .FooterMargin = Application.InchesToPoints(0)
                    .PrintHeadings = False
                    .PrintGridlines = False
                    .PrintComments = xlPrintNoComments
                    .PrintQuality = 600
                    .CenterHorizontally = True
                    .CenterVertically = True
                    .Orientation = xlPortrait
                    .PaperSize = xlPaperA4
                    .FitToPagesWide = 1
                    .FitToPagesTall = 1
                    .PrintErrors = xlPrintErrorsDisplayed
                    .ScaleWithDocHeaderFooter = True
                    .AlignMarginsHeaderFooter = True
            
                End With
                Application.PrintCommunication = True
                Range(PrintArea).PrintOut Copies:=1, Collate:=True
            End Sub

            کامنت

            چند لحظه..