গ্রাহক দ্বারা প্রদত্ত এক্সেল সরাসরি পুনরায় সংরক্ষণ করবেন না: প্রথমে বাহ্যিক লিঙ্কগুলি পরীক্ষা করুন
keep_vba=True একটি ধারণ নীতি, "ম্যাক্রো সনাক্ত" এর প্রমাণ নয়। নিম্নলিখিত শুধুমাত্র জিপ প্যাকেজ vbaProject.bin এবং বহিরাগত লিঙ্ক উপাদান বিদ্যমান কিনা তা পরীক্ষা করে; উপাদানের উপস্থিতির অর্থ এই নয় যে বিষয়বস্তু নিরাপদ, ম্যাক্রো বৈধ, বা বহিরাগত লক্ষ্যগুলি অ্যাক্সেসযোগ্য। ম্যাক্রো চালানো হবে না বা লিঙ্ক পরিদর্শন করা হবে না।
গ্রাহকের প্রেরিত এক্সেল সাধারণত স্থানীয়ভাবে খোলে, কিন্তু একটি পাইথন স্ক্রিপ্ট দ্বারা প্রক্রিয়াকরণ বা সিস্টেমে আপলোড করার পরে, সূত্রটি #REF!-এ পরিবর্তিত হতে পারে, ড্রপ-ডাউন মেনু অদৃশ্য হয়ে যায়, এমনকি খোলা যাবে না। এটি সাধারণত ফাইলের দুর্নীতি নয়, বরং একটি স্বয়ংক্রিয় সরঞ্জাম যা পুনরায় সংরক্ষণ করার সময় বহিরাগত লিঙ্ক ক্যাশে বা VBA ম্যাক্রোগুলিকে অক্ষত রাখে না।
এই নিবন্ধটি বিকাশকারী এবং অপারেটরদের জন্য লেখা হয়েছে যাদের এক্সেলের ব্যাচ প্রক্রিয়া করতে স্ক্রিপ্ট ব্যবহার করতে হবে। Openpyxl-এর ডিফল্ট লোডিং দ্বারা কোন তথ্য হারিয়ে যাবে তা নিচে ব্যাখ্যা করবে, একটি সিন্থেটিক নমুনা পরিদর্শন ধারণা দেবে এবং স্বীকৃতির সময় ম্যানুয়াল পর্যালোচনার প্রয়োজন এমন সীমানা তালিকাভুক্ত করবে। এটি পড়ার পরে, আপনি একটি নথি সংরক্ষণ করার আগে কি পরীক্ষা করা প্রয়োজন তা নির্ধারণ করতে সক্ষম হবেন৷
এক বাক্যে উপসংহার: এক্সেল রিসেভ করার আগে এক্সটার্নাল লিংক এবং ভিবিএ কম্পোনেন্টের ইনভেন্টরি নিন
ফাইল প্যাকেজে VBA প্রকল্প এবং বাহ্যিক লিঙ্ক উপাদান আছে কিনা তা প্রথমে নিশ্চিত করুন, তারপর লোডিং পরামিতিগুলির বিষয়ে সিদ্ধান্ত নিন এবং গ্রহণের সময় ম্যানুয়াল পর্যালোচনা প্রক্রিয়াটি বজায় রাখুন।
| আপনার অবস্থা | প্রস্তাবিত অভ্যাস | কারণ |
|---|---|---|
| ফাইল প্যাকেজটি vbaProject.bin-এ অবস্থিত | অনুরোধ করুন যে এতে এমন সামগ্রী রয়েছে যা আলাদাভাবে পর্যালোচনা করা দরকার এবং ম্যাক্রোটি কার্যকর করা হবে না। | একটি উপাদানের উপস্থিতির মানে এই নয় যে ম্যাক্রো বৈধ বা বিষয়বস্তু নিরাপদ |
| ফাইল প্যাকেজে বহিরাগত লিঙ্ক উপাদান আছে | প্যাকেজের মধ্যে তার অবস্থান রেকর্ড করে, লক্ষ্য অ্যাক্সেস করে না | স্ক্রিপ্ট শুধুমাত্র ইনভেন্টরি করে এবং লক্ষ্যটি অ্যাক্সেসযোগ্য কিনা তা যাচাই করে না। |
| Keep_vba=True দিয়ে লোড করুন | একটি লোডিং কৌশল হিসাবে এটি চিন্তা করুন | keep_vba=True একটি ধারণ নীতি, ম্যাক্রো সনাক্তকরণের প্রমাণ নয় |
কেন ডিফল্ট লোডিং মূল তথ্য হারাবে
অফিসিয়াল openpyxl ডকুমেন্টেশন বলে যে load_workbook নন-সেল ডেটা প্রক্রিয়াকরণের জন্য স্পষ্ট সীমানা রয়েছে। keep_links ডিফল্ট True, যা XML-এ লিঙ্কের সংজ্ঞা ধরে রাখে, কিন্তু গ্যারান্টি দেয় না যে বাহ্যিক ডেটা ক্যাশে (ক্যাশেড মান) পুনরায় লোড করার পরেও বৈধ হবে। একবার আপনি মূল নেটওয়ার্ক পরিবেশ বা সোর্স ফাইল পাথ ছেড়ে চলে গেলে, এক্সেল এখনও রিফ্রেশ করার সময় একটি ত্রুটি রিপোর্ট করতে পারে।
keep_vba ডিফল্ট False. মূল ফাইলে ম্যাক্রো থাকলে, ডিফল্টরূপে লোড এবং সংরক্ষণ করার পরে VBA প্রকল্পটি সরানো হবে। পড়ার সময় চার্ট এবং আকারের মতো অবজেক্টগুলিও উপেক্ষা করা যেতে পারে।
এগুলি বাগ নয়, লাইব্রেরিরই কার্যকরী সীমানা। প্রোডাকশন-লেভেল ফাইলগুলির সাথে কাজ করার সময়, টুলটি স্বয়ংক্রিয়ভাবে সমস্ত বৈশিষ্ট্য ধরে রাখবে বলে অনুমান করার পরিবর্তে আপনার স্পষ্টভাবে একটি ধারণ নীতি ঘোষণা করা উচিত।
সিন্থেটিক উদাহরণ এবং পরীক্ষার ফাইল প্রস্তুতি
নিরাপদে এই প্রক্রিয়াটি প্রদর্শন করার জন্য, এটি একটি সিন্থেটিক দৃশ্যকল্প তৈরি করার সুপারিশ করা হয় যা প্রকৃত গ্রাহক ডেটার উপর নির্ভর করে না।
পরীক্ষার ফাইল প্রস্তুত করুন
- একটি নতুন এক্সেল ওয়ার্কবুক তৈরি করুন।
- VBA সম্পাদক (Alt+F11) এ একটি ফাঁকা মডিউল ঢোকান।
- কক্ষ A1-এ
='[ExternalBook.xlsx]Sheet1'!$A$1সূত্রটি লিখুন। একটি বাস্তব বহিরাগত ফাইল তৈরি করার কোন প্রয়োজন নেই, শুধু এই রেফারেন্স কাঠামো রাখুন। - ম্যাক্রো-সক্ষম বিন্যাসে সংরক্ষণ করুন
input_check.xlsm৷
সাধারণ ভুল এবং সীমানা ইনপুট
- ডিফল্ট
load_workbook('input_check.xlsm')ব্যবহার করে ম্যাক্রো-সক্ষম ফাইল লোড করার সময় এবং তারপর.xlsxহিসাবে সংরক্ষণ করার সময় VBA কোড নিঃশব্দে বাতিল করা হয়। - যদি
keep_vba=Trueলোড করার সময় নির্দিষ্ট করা না থাকে, কিন্তু জোর করে.xlsmহিসাবে সংরক্ষিত হয়, তাহলে Excel খুলতে অস্বীকার করতে পারে কারণ ফাইল হেডার প্রকৃত বিষয়বস্তুর সাথে মেলে না। - শুধুমাত্র-পঠন মোডে (
read_only=True),keep_linksএবংkeep_vbaপরামিতিগুলি অবৈধ এবং বৈশিষ্ট্যগুলি সংরক্ষণ করার কোনো প্রচেষ্টা ব্যর্থ হবে৷
যাচাইকরণ কোড বহিরাগত লিঙ্ক এবং ম্যাক্রোর জন্য সংরক্ষিত
নিম্নলিখিত উদাহরণটি পরামিতিগুলির ভূমিকা প্রদর্শন করতে মেমরিতে চেকিং লজিক তৈরি করে।
from io import BytesIO
from zipfile import ZipFile
from openpyxl import Workbook
def inventory(raw):
with ZipFile(BytesIO(raw)) as z:
names = set(z.namelist())
return {"has_vba_part": "xl/vbaProject.bin" in names,
"external_link_parts": sorted(n for n in names if n.startswith("xl/externalLinks/externalLink") and n.endswith(".xml"))}
out = BytesIO()
Workbook().save(out)
assert inventory(out.getvalue()) == {"has_vba_part": False, "external_link_parts": []}
synthetic = BytesIO()
with ZipFile(synthetic, "w") as z:
z.writestr("xl/vbaProject.bin", b"not executable VBA; fixture only")
z.writestr("xl/externalLinks/externalLink1.xml", b"<fixture/>")
result = inventory(synthetic.getvalue())
assert result["has_vba_part"]
assert result["external_link_parts"] == ["xl/externalLinks/externalLink1.xml"]
এই কোডটি শুধুমাত্র একটি শিক্ষার উদাহরণ, একটি সম্পূর্ণ ফাইল মেরামতের সরঞ্জাম নয়, এবং প্রকৃত উৎপাদন পরিবেশে কার্যকর করা হয়নি। দৌড়ানোর আগে অনুগ্রহ করে নিশ্চিত করুন যে আপনি উপরের মতো input_check.xlsm প্রস্তুত করেছেন।
📊 মূল তুলনা: ডিফল্ট প্যারামিটার এবং সংরক্ষিত প্যারামিটার
| প্যারামিটার | ডিফল্ট মান | প্রভাব | সীমানা |
|---|---|---|---|
| keep_links | True | XML-এ লিঙ্ক সংজ্ঞা সংরক্ষণ করুন | বাহ্যিক ডেটা ক্যাশে পুনরায় লোড করার পরে বৈধ হওয়ার নিশ্চয়তা নেই |
| keep_vba | False | VBA প্রকল্পগুলি ডিফল্টরূপে ধরে রাখা হয় না | এটিকে সত্যে সেট করার অর্থ এই নয় যে ম্যাক্রো সামগ্রীটি নিরাপদ বা বৈধ৷ |
| read_only | False | শুধুমাত্র-পঠন মোডে লোড করুন | keep_links এবং keep_vba এই মোডে অবৈধ |
গ্রহণযোগ্যতার মানদণ্ড এবং ম্যানুয়াল পর্যালোচনা সীমানা
অটোমেশন এক্সেলের সমস্ত প্রান্তের ক্ষেত্রে কভার করতে পারে না। স্ক্রিপ্ট ইনভেন্টরিতে কোন পরিস্থিতিতে হস্তান্তর করা হয় এবং কোন পরিস্থিতিতে বাধা বা ম্যানুয়াল প্রক্রিয়াকরণের প্রয়োজন হয় তা আলাদা করতে নিম্নলিখিত টেবিলটি ব্যবহার করা হয়।
| পর্যবেক্ষণ | কি করতে হবে | অনুমান করা উচিত নয় |
|---|---|---|
| VBA উপাদান বিদ্যমান | প্রম্পটে এমন সামগ্রী রয়েছে যা অতিরিক্ত পর্যালোচনার প্রয়োজন | ম্যাক্রো চালাবেন না |
| বাহ্যিক লিঙ্ক উইজেট | প্যাকেজের মধ্যে অবস্থান রেকর্ড করুন | লক্ষ্য অ্যাক্সেস করবেন না |
| পরামিতি চালু রাখুন | লোডিং কৌশল হিসাবে বিবেচিত | একটি ম্যাক্রো সনাক্ত করা হয়েছে প্রমাণ হিসাবে নেওয়া হয়নি |
স্ক্রিপ্টটি পরামিতিগুলি বৈধ কিনা তা যাচাই করতে পারে, তবে এটি গ্যারান্টি দিতে পারে না যে আউটপুট ফাইলটি ব্যবসায়িক স্তরে উপলব্ধ। উদাহরণস্বরূপ, keep_links=True সফলভাবে লিঙ্ক সংজ্ঞা ধরে রেখেছে। টার্গেট সার্ভার অফলাইনে থাকলে, এক্সেল রিফ্রেশ করার সময় ব্যবহারকারী এখনও একটি ত্রুটি পাবেন। এই ধরনের সমস্যাগুলি ডকুমেন্ট প্রসেসিং লাইব্রেরির সুযোগের বাইরে এবং গ্রহণযোগ্য প্রক্রিয়ায় ম্যানুয়াল পর্যালোচনার প্রয়োজন৷
তথ্যসূত্র
নথি অনুবাদের জন্য এই চেকলিস্ট ব্যবহার করুন
সূত্র এবং ব্যবসায়িক কোড সম্বলিত সারণী প্রক্রিয়াকরণ করার সময়, প্রথমে কোন বিষয়বস্তু টেক্সট এবং কোনটি সূত্র, শনাক্তকারী এবং ব্যবসায়িক কোড তা পার্থক্য করুন এবং তারপরে তাদের অনুবাদ করুন। অনুবাদ-পরবর্তী চেক শুধুমাত্র চাইনিজ টার্গেট ভাষায় রূপান্তরিত হয়েছে কিনা তা পরীক্ষা করে না, তবে সূত্র, শনাক্তকারী এবং রেফারেন্স সম্পর্ক পরিবর্তন করা হয়নি তাও নিশ্চিত করে।
OmniDoc (পণ্য পোর্টাল) একটি মাল্টি-ফরম্যাট নথি অনুবাদ পোর্টাল প্রদান করে, এবং অফিসিয়াল ওয়েবসাইট OCR, শব্দকোষ এবং দ্বিভাষিক তুলনা ফাংশনগুলি প্রবর্তন করে৷ যে দলগুলি ফাইল থেকে সরাসরি কাজ শুরু করতে চায় তাদের জন্য, এই পথটি বাস্তব জীবনের নমুনা দিয়ে মূল্যায়ন করা যেতে পারে। আপনার কাছে আপলোড করার অনুমতি আছে এমন সংবেদনশীল ফাইলগুলি ব্যবহার করুন এবং ফলাফলগুলি পর্যালোচনা করতে এই নিবন্ধে চেক আইটেমগুলি ব্যবহার করুন৷ OmniDoc এই নিবন্ধে উল্লিখিত ওপেন সোর্স লাইব্রেরি বা অভ্যন্তরীণ অ্যালগরিদমগুলি ব্যবহার করে এমন কোনও দাবি নেই, বা উদাহরণটি পণ্যের কার্যক্ষমতা পরীক্ষাকে প্রতিস্থাপন করে না।
🎯 কোন পদ্ধতি আপনার জন্য উপযুক্ত?
আপনি যদি ম্যাক্রো ধারণকারী ফাইলগুলি ব্যাচ করতে চান
ধারণ নীতি স্পষ্ট করতে প্রথমে keep_vba=True ব্যবহার করুন, এবং তারপর পরীক্ষার পরিবেশে আউটপুট ফলাফল তুলনা করুন। অনুমান করবেন না যে ম্যাক্রোগুলি স্বয়ংক্রিয়ভাবে বজায় থাকবে।
যদি আপনার এক্সেলে এক্সটার্নাল লিংক থাকে
প্রথমে প্যাকেজে লিঙ্ক উপাদানের অবস্থান রেকর্ড করুন, এবং স্ক্রিপ্টে লিঙ্ক লক্ষ্য অ্যাক্সেস করবেন না। পুনরায় সংরক্ষণ করার পরে, রিফ্রেশ স্বাভাবিক কিনা তা ম্যানুয়ালি নিশ্চিত করুন।
যদি আপনার শুধু ডাটা পড়তে হয়
শুধুমাত্র-পঠন মোড বিবেচনা করা যেতে পারে, কিন্তু সচেতন থাকুন যে keep_links এবং keep_vba প্যারামিটারগুলি এই মোডে অবৈধ৷
যদি ফাইলটি গ্রাহকের কাছ থেকে আসে এবং এতে সংবেদনশীল বিষয়বস্তু থাকে
প্রথমে আসলগুলি রাখুন, পরীক্ষার জন্য সংবেদনশীল নমুনাগুলি ব্যবহার করুন এবং তারপরে গ্রহণযোগ্য আইটেম অনুযায়ী ফলাফলগুলি পর্যালোচনা করুন৷
❓ প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
1. keep_links=True মানে কি বাহ্যিক লিঙ্ক পাওয়া উচিত?
না keep_links XML-এ লিঙ্কের সংজ্ঞা ধরে রাখে। এক্সটার্নাল ডাটা ক্যাশে রি-ক্যাশ করার পরেও বৈধ থাকবে এমন কোন গ্যারান্টি নেই। টার্গেট অ্যাক্সেসযোগ্য না হলে রিফ্রেশিং এখনও একটি ত্রুটি রিপোর্ট করতে পারে।
2. ম্যাক্রো লোড হলে এবং ডিফল্টরূপে সংরক্ষিত হলে কী হবে?
keep_vba ডিফল্ট False, এবং মূল ফাইলের VBA প্রকল্পটি সংরক্ষণ করার সময় সরানো হবে। যদি ধরে রাখার প্রয়োজন হয়, keep_vba=True স্পষ্টভাবে সেট করা উচিত।
3. VBA উপাদান সনাক্ত করা হয়েছে, স্ক্রিপ্ট কি ম্যাক্রো নিরাপদ কিনা তা নির্ধারণ করতে পারে?
পারে না উপাদানটির অস্তিত্বের অর্থ এই নয় যে সামগ্রীটি নিরাপদ বা ম্যাক্রো বৈধ। স্ক্রিপ্ট ম্যাক্রো চালানো উচিত নয় এবং অনুরোধ করা উচিত যে এটি আলাদাভাবে পর্যালোচনা করা প্রয়োজন।
4. লিঙ্ক এবং ম্যাক্রো কি শুধুমাত্র-পঠন মোডে সংরক্ষণ করা যেতে পারে?
পারে না read_only=True মোডে, keep_links এবং keep_vba প্যারামিটারের কোন প্রভাব নেই।
📝 সারাংশ
এক্সেল পুনরায় সংরক্ষণ করার আগে, VBA এবং বাহ্যিক লিঙ্ক উপাদানগুলির তালিকা নিন, লোডিং পরামিতিগুলি স্পষ্ট করুন এবং ম্যানুয়াল পর্যালোচনা প্রক্রিয়াটি ধরে রাখুন। পরবর্তী ধাপে, আপনি পরীক্ষার পরিবেশে তিনটি নমুনা ফাইল (বিশুদ্ধ ডেটা .xlsx, ম্যাক্রো .xlsm, এবং বাহ্যিক লিঙ্ক .xlsx) প্রস্তুত করতে পারেন, যথাক্রমে ডিফল্ট প্যারামিটার এবং সংরক্ষিত প্যারামিটারের সাথে লোড এবং সংরক্ষণ করতে পারেন এবং উপরের সারণী অনুযায়ী প্রকৃত ফলাফল রেকর্ড করতে পারেন। শুধুমাত্র যদি আপনি আপনার ফাইলসেটের প্রতিটি প্যারামিটারের ফলাফল জানেন তাহলে উৎপাদন প্রক্রিয়ায় স্ক্রিপ্টটি স্থাপন করা উপযুক্ত।
এটি এখনই চেষ্টা করুন: অনুবাদ শুরু করতে নথিটি আপলোড করুন, মূল বিন্যাস বজায় রেখে৷


