تبدیل اکسل به PDF توسط امکانات خود اکسل+ویدئو
سلام به سافت پلاس و دنیای برنامه نویسی جامع اکسل 2021 خوش آمدید . امروز می خواهیم با هم در مورد راههای تبدیل اکسل به پی دی اف با هم صحبت کنیم .
توی این آموزش با استفاده از برنامه نویسی و کدهای VBA در اکسل یاد خواهیم گرفت که چطور می توانیم هر قسمت از اکسل را که مورد نظرمان است را به فرمت PDF ذخیره کنیم .
فرقی نمی کند که یک شیت را بخواهیم به پی دی اف تبدیل کنیم یا یک قسمت از شیت مورد نظرمان را یا که نه ؛ کل فایل اکسل خودمان را تبدیل به PDF کنیم در هر صورت برنامه نویسی VBA همه این کارها را برای ما انجام می دهد . آن هم خیلی سریع و خیلی ساده .
من علیرضا شهرآئینی هستم و از شما دعوت می کنم که در مسیر این آموزش من را تا انتها همراهی کنید .
برای تبدیل اکسل به پی دی اف چه کار باید بکنیم ؟
توی برنامه نویسی وی بی ای در اکسل ما یک دستوری داریم به اسم ExportAsFixedFormat . با استفاده از این دستور می توانیم فایل اکسل خود را به فرمت های مختلفی تبدیل کنیم .
اتفاقا یکی از این فرمت ها فرمت پی دی اف است که قرار است راجع به آن با هم صحبت کنیم .
اما قبل از هر چیز لازم است با این دستور و آرگومانهای مختلف آن بصورت دقیق آشنا شویم . پس اول برویم به سراغ خود این دستور و با ورودی های آن با هم آشنا شویم .
آشنایی با دستور ExportAsFixedFormat
ساختار کلی این دستور به قرار زیر است .
expression.ExportAsFixedFormat (Type, Filename, Quality,& _
IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish)
این دستور توی سایت مایکروسافت آموزش کامل و مفصلی وجود دارد که اگر دوست دارید می توانید به آدرس مربوط به این مطلب در سایت مایکروسافت مراجعه کنید .
اما اینجا هم با بخش های مختلف این دستور آشنا می شویم .
قسمت اول : Expression
این قسمت جزو آرگومانهای این تابع نیست اما وجودش برای ما لازم است .
در این قسمت شی ای را که می خواهیم تبدیل به پی دی اف کنیم قرار می دهیم . منظور از شی چیست ؟
مثلا یک ورک بوک یا یک شیت کاری یا یک بخش از یک شیت کاری همه اینها می شوند شی . در ادامه راجع به آن با هم صحبت می کنیم .
آرگومان اول: Type
در این ورودی برای اکسل تعریف می کنیم که خروجی اکسل ما به چه فرمتی باشد . اینجا دو تا گزینه داریم .
گزینه اول فرمت PDF است و گزینه دوم هم XPS .
وجود این آرگومان برای کارکرد صحیح دستور ما لازم و اجباری است .
آرگومان دوم: Filename
این آرگومان اسم فایل حروجی را از ما می گیرد . البته وجودش الزامی نیست .
آرگومان سوم : Quality
این آرگومان هم دو تا حالت می تواند داشته باشد . اما کارش چیست ؟ با استفاده از این گزینه می توانیم کیفیت فایل خروجی را تعیین کنیم اما چطوری ؟ با انتخاب یکی از این دو تا حالت .
1- گزینه xlqualityminimum این گزینه کیفیت فایل خروجی را به حداقل می رساند و حجم فایل را کم می کند . 2- گزینه xlqualitystandard این گزینه کیفیت فایل خروجی را به حالت استاندارد خودش ذخیره می کند
آرگومان چهارم: includproperties
می خواهید ویژگی های مربوط به فایل اکسل به فرمت جدید هم اعمال شوند پس این قابلیت را روی yes بگذارید در غیر اینصورت آن را روی NO قرا دهید .
آرگومان پنجم: ignoreprintarea
می خواهید ویژگی های مربوط به تعیین نواحی پرینت فایل اکسل به فرمت جدید هم اعمال شوند پس این قابلیت را روی yes بگذارید در غیر اینصورت آن را روی NO قرا دهید .
آرگومان ششم و هفتم : From , To
این دو تا آرگومان را باید با هم تنظیم کنید .اینجا به اکسل می گویید که از بین صفحات موجود از چه شماره ای شروع به خروجی گرفتن کند و تا چه شماره ای این کار را انجام بدهد .
آرگومان هشتم : openafterthepublish
این آرگومان هم دو تا انتخاب در اختیار ما قرار می دهد .
اگر برای این آرگومان ورودی TRUE را در نظر بگیریم بلافاصله بعد از تبدیل اکسل به پی دی اف فایل مورد نظر بصورت خودکار باز خواهد شد .
اما اگر برای این آرگومان ورودی False را در نظر بگیریم بعد از تبدیل اکسل به پی دی اف فایل مورد نظر اجرا نخواهد شد .
خوب حالا با همه آرگومانهای این دستور آشنا شدیم . برویم و با هم چند تا مثال عملی از نحوه استفاده از این دستور را با هم یاد بگیریم .
مثال شماره -1 : تبدیل اکسل به PDF در ساده ترین حالت ممکن .
فرض کنید یک فایل اکسل داریم و می خواهیم آن را به فرمت پی دی اف تبدیل کنیم .
برای این کار از کدهای زیر استفاده می کنیم .
sub test()
activesheet.exportasfixcedformat type:=xltypepdf
end sub
اینجا ما فقط از اولین آرگومان این دستور استفاده کردیم . با استفاده از این کدها از اکسل خواسته ایم که شیت جاری یا همان Activesheet را برای ما به فرمت پی دی اف تبدیل کند .
اکسل این کار را برای ما انجام می دهد . اما یک سوال فایل پی دی اف مورد نظر به چه اسمی و اصلا کجا ذخیره می شود ؟
اکسل برای اسم فایل پی دی اف مورد نظر از اسم همان شیتی که برای تبدیل شدن به پی دی اف معرفی کردیم استفاده می کند . و برای محل ذخیره کردن هم از آدرسی که فایل اکسل ما در آن قرار دارد استفاده می کند .
اما اگر می خواهید این آیتم ها را خودتان تعیین کنید پس در ادامه با من همراه باشید .
مثال شماره 2 : تبدیل اکسل به PDF با تعیین نام مورد نظر
برای اینکه بتوانید یک فایل اکسل را به همان نامی که مد نظر خودتان است ذخیره کنید باید به سراغ آرگومان مخصوص همین کار بروید .
به کدهای زیر دقت کنید .
Sub test()
Worksheets("sheet2").ExportAsFixedFormat Name:="mysoftpluse", Type:=xlTypePDF
End Sub
توی این کد من از اکسل خواسته ام که از بین شیت های موجود شیتی با عنوان sheet2 را برای من به فرمت پی دی اف تبدیل کند با این حساب که اسم فایل مورد نظر را به صورت “mysoftpluse” در نظر بگیرد .
با این کار یک فایل پی دی اف به اسم مورد نظر برای من ایجاد می شود .
اما یک سوال ؟ این فایل پی دی اف کجا قرار می گیرد یا در چه درایو یا فولدری برای من ذخیره می شود ؟
پاسخ این سوال این است که درست مثل حالت قبل فایل پی دی اف درست در کنار فایل اکسل ما ایجاد می شود .
اما اگر بخواهیم یک مسیر جدید برای ذخیره سازی تعیین کنیم چکار باید کرد ؟
برای پاسخ به این سوال کافی است که این ویدئوی کوتاه مربوط به این بخش را ببینید تا در عمل نسبت به این موارد آشنا شوید .
مثال شماره 3: تبدیل یک محدوده از سلول ها به PDF
بعضی از مواقع هست که ما نمی خواهیم کل اطلاعات یک شیت را به پی دی اف تبدیل کنیم بلکه فقط بخشی از این اطلاعات مد نظرمان است تا به پی دی اف تبدیل شوند .
برای این کار دو تا روش پیش رو داریم . در روش اول می توانیم محدوده مورد نظرمان را انتخاب کنیم و از اکسل بخواهیم که این محدوده را برای ما به پی دی اف تبدیل کند .
برای مثال به کدهای زیر نگاه کنید .
Sub save_as_PDF()
selection.ExportAsFixedFormat Filename:="C:\Users\shahr-pc\Desktop\softpluse", _
Type:=xlTypePDF
End Sub
قبل از اینکه این کدها را اجرا کنید کافی است آن محدوده ای که مد نظرتان است را انتخاب کنید تا با اجرای این کدها همان محدوده برایتان به فرمت پی دی اف تبدیل شود .
در روش دوم می توانیم آدرس سلول های مورد نظرمان را به برنامه بدهیم تا برنامه همان سلول ها را برای ما به فرمت پی دی اف دربیاورد .
برای این کار می توانید از کدهای زیر کمک بگیرید .
Sub save_as_PDF()
Range("A2:D10").ExportAsFixedFormat Filename:="C:\Users\shahr-pc\Desktop\softpluse", _
Type:=xlTypePDF
End Sub
کدهای بالا را که اجرا کنید برنامه محدوده سلول های A1 تا D10 را برای شما به فرمت پی دی اف تبدیل خواهد کرد .
یک سری نکته کاربردی هم این بین وجود دارد که در ویدئوی زیر به آن اشاره می کنم .
مثال شماره 4: تبدیل کل فایل اکسل به PDF
در چند مثال قبلی ما فقط یک شیت از مجموع شیتهای اکسل را به پی دی اف تبدیل کردیم . اما اگر بخواهیم کل فایل اکسل را به پی دی اف تبدیل کنیم چکار باید کرد ؟
بیایید این مورد را در قالب کدهای زیر بررسی کنیم .
Sub save_as_PDF()
ThisWorkbook.ExportAsFixedFormat Filename:="C:\Users\shahr-pc\Desktop\softpluse", _
Type:=xlTypePDF
End Sub
اگر کدهای بالا را در فایل اکسل خودتان ذخیره و بعد آنها را اجرا کنید فایل اکسل فعال شما را تبدیل به یک فایل پی دی اف می کند .
البته باید حواستان به آرگومان Filename باشد و آدرس مورد نظر خودتان را به آن معرفی کنید .
مطالب زیر را حتما مطالعه کنید
حلقه For در برنامه نویسی VBAدر اکسل +مثال های ساده
چطور زبان ورود اطلاعات در اکسس را کنترل کنیم ؟
با رعایت این نکات تبدیل به یک برنامه نویس حرفه ای در اکسل شوید .
۷ نکته مهم در برنامه نویسی VBA که باید آنها را بدانید
ماکرو نویسی در اکسل |ببینید که ماکروها چقدر کاربردی اند.
زبان وی بی ای مرده است
11 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
عالی مثل همیشه فقط یک سوال اگه بخواهیم فقط یک محدوده خاص از یک شیت ذخیره کنیم چکار باید کرد
توی آپدیت های بعدی بهش می پردازیم
عالی بود خیلی مفید بود
بصورت فرمول قابل اجرا هست؟
سلام ممنون از شما
این کار فقط از طریق کد نویسی امکان پذیر هستش
سلام ممنون از شما
چطور میشه فایل اکسل را از طریق ماکرو به اسلاید های پاورپوینت تبدیل کرد
سلام به زودی یک آموزش براش میذارم
سلام ممنونم بابت اطلاعات خوبتون
اگر ما بخواهیم نام لیستی از داخل اکسل برای خروجی pdf در نظر بگیریم چونه آدرس دهی کنیم؟
سلام
ممنون از آموزش خوبتون
یک سوال من میخوام رنجم در تعداد صفحه یا سطر داینامیک باشه و اسم فایل را از یک اسم داخل یک سلول خاص بذاره
ممنون میشم اگر امکانش هست بفرمایید
سلام. لطفا در این خصوص توضیح دهید
این کد رو من اجرا میکنم خطای Run-tim Error 438 میده
Sub test()
ActiveSheet.exportasfixcedformat Type:=xlTypePDF
End Sub
سلام یک ویدئو برای این مطلب در دست آماده شدن هست که می تونید از اون برای حل مشکل استفاده کنید .