حلّ المشاكل الشائعة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
في ما يلي المشاكل الشائعة التي قد تواجهها عند تحويل رمز VBA إلى "برمجة تطبيقات Google" باستخدام "أداة تحويل وحدات الماكرو".
الطباعة
يتم تلقائيًا تحويل واجهات برمجة التطبيقات VBA التي تطبع الملفات إلى "برمجة تطبيقات Google"، ولكن قد يختلف سلوكها عن سلوك واجهة برمجة التطبيقات VBA الأصلية. في ما يلي مثالان:
VBA API | السلوك في "برمجة التطبيقات" |
---|
PrintOut | يتم التحويل إلى Apps Script، ولكن يطبع Apps Script
API إلى ملف بدلاً من الطابعة. يمكنك طباعة ملف PDF يدويًا. |
PrintToFile | يتم تحويلها إلى "برمجة تطبيقات Google". يتم حفظ ملف PDF في مجلد
"ملفاتي". |
السلع التي لم يتمّ تحويلها
لا يتم تحويل الميزات التالية باستخدام "أداة تحويل وحدات الماكرو"، ويجب تحويلها يدويًا:
العوامل التي تؤدي إلى الظهور
لا يحوّل Macro Converter نوعَين من المشغّلات، وهما اختصارات لوحة المفاتيح وبعض المشغّلات المستندة إلى الأحداث. في كثير من الحالات، يمكنك إنشاء هذه المشغّلات يدويًا.
اختصارات لوحة المفاتيح
لإضافة اختصارات لوحة المفاتيح، اتّبِع الخطوات اللازمة لاستيراد الدوال كوحدات ماكرو.
المشغّلات المستندة إلى الأحداث
لا تتوفّر في "برمجة التطبيقات" مكافئات لبعض الأحداث من رمز VBA، مثل BeforeClose
أو BeforeSave
، ولكن قد تتمكّن من إيجاد حل بديل.
بالنسبة إلى أحداث مثل BeforeClose
، يمكنك إنشاء قائمة أو زر مخصّصَين للنقر عليهما
لتنفيذ الإجراء المطلوب قبل إغلاق جدول البيانات.
بما أنّ "جداول بيانات Google" تحفظ كل تعديل تلقائيًا، لا يمكن إيجاد حلول بديلة لأحداث مثل
BeforeSave
.
في VBA، UserForm هي نافذة أو مربّع حوار في واجهة المستخدم (UI) لأحد التطبيقات. لا يحوّل Macro Converter نماذج UserForm. يمكنك إنشاء هذه الرموز يدويًا في Apps Script.
- على الكمبيوتر، افتح الملف المحوّل في جداول بيانات Google.
- في أعلى الصفحة، انقر على الإضافات >
** Apps Script**.
- على يمين المحرّر بجانب "الملفات"، انقر على "إضافة ملف" add
> HTML. ننصحك بتسمية ملف HTML بالاسم نفسه الذي استخدمته في
UserForm الأصلي في VBA.
- أضِف الحقول والمعلومات التي تريد عرضها في نموذجك. يمكنك الاطّلاع على مزيد من المعلومات حول نماذج HTML على W3school.com.
- على يمين الصفحة، انقر على ملف Apps Script (ملف GS) الذي يتضمّن الرمز البرمجي المحوّل.
- إذا كان لديك مشغّل
onOpen()
في الرمز، عدِّله باستخدام الرمز أدناه. إذا لم يكن لديك مشغّل onOpen()
في الرمز، أضِف الرمز أدناه.
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('User Form')
.addItem('Show Form', 'showForm')
.addToUi();
}
function showForm() {
var html = HtmlService.createHtmlOutputFromFile('userform_module_name')
.setWidth(100)
.setTitle('Sign-up for Email Updates');
SpreadsheetApp.getUi().showSidebar(html);
}
- استبدِل
userform_module_name
باسم ملف HTML الذي أضفته.
- في أعلى الصفحة، انقر على "حفظ المشروع" save.
- انتقِل إلى "جدول بيانات Google" وأعِد تحميل الصفحة.
- في أعلى "جدول بيانات Google"، انقر على نموذج المستخدم > عرض النموذج.
النطاقات المُعنوَنة
في Excel، النطاقات المُعنوَنة هي أسماء تُمنح لخلية واحدة أو نطاق من الخلايا.
عند تحويل ملف Excel إلى "جداول بيانات Google"، لن يتم تحويل بعض أنواع النطاقات المسماة لأنّها غير متوافقة. في ما يلي مثالان:
النطاقات المُعنوَنة غير المتوافقة | الوصف |
---|
الجداول | غير متوافق مع "جداول بيانات Google"، ولكن يتوفّر حلّ بديل.
لإعادة إنشاء هذا النطاق المسمّى في "جداول بيانات Google"، أضِف نطاقًا مسمّى يشير إلى
ترميز A1 لنطاق الجدول. استخدِم الاسم نفسه الذي استخدمته للنطاق المسمّى الأصلي في رمز VBA لكي يتعرّف الرمز المحوّل عليه.
|
قائمة النطاقات | غير متاح في "جداول بيانات Google". ليس هناك حل بديل. |
مقالات ذات صلة
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eWhen converting VBA to Apps Script, printing functions behave differently; \u003ccode\u003ePrintOut\u003c/code\u003e prints to a file instead of directly to a printer, while \u003ccode\u003ePrintToFile\u003c/code\u003e saves the PDF to your MyDrive.\u003c/p\u003e\n"],["\u003cp\u003eThe Macro Converter does not handle certain VBA features, including some triggers, UserForms, and unsupported named ranges, requiring manual conversion.\u003c/p\u003e\n"],["\u003cp\u003eKeyboard shortcuts and some event-based triggers (like \u003ccode\u003eBeforeClose\u003c/code\u003e or \u003ccode\u003eBeforeSave\u003c/code\u003e) from VBA require manual configuration or workarounds in Apps Script due to functional differences.\u003c/p\u003e\n"],["\u003cp\u003eUserForms need to be recreated in Apps Script using HTML, and integrated into the spreadsheet through custom menus or sidebars.\u003c/p\u003e\n"],["\u003cp\u003eWhile most named ranges are converted, tables and lists of ranges require manual adjustments or are unsupported, necessitating alternative approaches in Google Sheets.\u003c/p\u003e\n"]]],[],null,["# Address common issues\n\nCommon issues you might run into when you convert your VBA code to Apps Script\nwith the Macro Converter are listed below.\n\nPrinting\n--------\n\nVBA APIs that print files are automatically converted to Apps Script, but might\nbehave differently than the original VBA API. Below are two examples:\n\n| VBA API | Behavior in Apps Script |\n|---------------|------------------------------------------------------------------------------------------------------------------------------|\n| `PrintOut` | Converts to Apps Script, but the Apps Script API prints to a file instead of a printer. You can manually print the PDF file. |\n| `PrintToFile` | Converts to Apps Script. The PDF file is saved in your MyDrive folder. |\n\nUnconverted items\n-----------------\n\nThe following features aren't converted by the Macro Converter and need to be\nconverted manually:\n\n- Some types of [Triggers](#triggers)\n- [Userforms](#userforms)\n- Unsupported types of [Named ranges](#named_ranges)\n\n### Triggers\n\nTwo types of triggers, keyboard shortcuts and some event-based triggers, aren't\nconverted by the Macro Converter. In many cases, you can create these triggers\nmanually.\n\n#### Keyboard shortcuts\n\nTo add keyboard shortcuts, follow the steps to [import functions as\nmacros](https://developers.google.com/apps-script/guides/sheets/macros#importing_functions_as_macros).\n\n#### Event-based triggers\n\nSome events from VBA code, like `BeforeClose` or `BeforeSave`, don't have\nequivalents in Apps Script, but you might be able to create a workaround.\n\nFor events like `BeforeClose`, you can create a custom menu or button to click\nto perform the action that needs to take place before you close the spreadsheet.\n\nSince Google Sheets auto-saves each edit, workarounds for events like\n`BeforeSave` aren't feasible.\n\n### Userforms\n\nIn VBA, a [*UserForm*](https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/userform-object) is a window or dialog box in an application's user\ninterface (UI). The Macro Converter doesn't convert UserForms. You can manually\ncreate them in Apps Script.\n\n#### Create a user form dialogue\n\n1. On your computer, open the converted file in [Google Sheets](http://sheets.google.com).\n2. At the top, click **Extensions** \\\u003e \\*\\* Apps Script\\*\\*.\n3. At the left of the editor next to \"Files,\" click Add a file add **\\\u003e HTML**. We recommend that you give the HTML file the same name as your original VBA UserForm.\n4. Add the fields and information you want to appear in your form. Learn more about HTML forms at [W3school.com](https://www.w3schools.com/html/html_forms.asp).\n5. At the left, click the Apps Script file (GS file) that has your converted code.\n6. If you already have an `onOpen()` trigger in your code, update it with the code below. If you don't have the `onOpen()` trigger in your code, add the code below. \n\n ```gdscript\n function onOpen() {\n SpreadsheetApp.getUi()\n .createMenu('User Form')\n .addItem('Show Form', 'showForm')\n .addToUi();\n }\n function showForm() {\n var html = HtmlService.createHtmlOutputFromFile('userform_module_name')\n .setWidth(100)\n .setTitle('Sign-up for Email Updates');\n SpreadsheetApp.getUi().showSidebar(html);\n }\n \n ```\n7. Replace `userform_module_name` with the name of the HTML file you added.\n8. At the top, click Save project save.\n9. Switch to the Google Sheet and reload the page.\n10. At the top of the Google Sheet, click **User Form** \\\u003e **Show Form**.\n\n### Named ranges\n\nIn Excel, named ranges are names given to a single cell or range of cells.\n\nWhen you convert your Excel file to Google Sheets, some types of named ranges\nwon't be converted because they're not supported. Below are two examples:\n\n| Unsupported named ranges | Description |\n|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Tables | Not supported in Google Sheets, but has a workaround. \u003cbr /\u003e To recreate this named range in Sheets, add a named range that points to the A1 notation of the table range. Use the same name as the original named range in your VBA code so that the converted code recognizes it. |\n| List of ranges | Not supported in Google Sheets. There isn't a workaround. |\n\nRelated articles\n----------------\n\n- [Macro Converter add-on overview](/apps-script/guides/macro-converter/overview)\n- [Determine if VBA macros are compatible](/apps-script/guides/macro-converter/compatibility-report)\n- [Convert VBA macros to Apps Script](/apps-script/guides/macro-converter/convert-files)\n- [Fix errors in your converted code](/apps-script/guides/macro-converter/fix-conversion-errors)\n- [Watch Macro Converter tutorials](/apps-script/guides/macro-converter/tutorials)\n- [List of compatible VBA APIs](/apps-script/guides/macro-converter/compatible-vba-apis)"]]