هناك طرق عديدة للحصول على البيانات من مصادر خارجية في ورقة العمل
يمكنك أيضًا الحصول على البيانات من الإنترنت أو الملفات النصية أو غيرها من ملفات Excel أو
لذلك نحن بحاجة إلى اتصال بقاعدة البيانات (متغير varConn في الماكرو أدناه) و استعلام SQL (عامل varSQL ) لأتمتة عملية استرجاع البيانات من قاعدة البيانات الخاصة بالتقرير. في المثال أدناه هناك استعلام SQL الذي يتلقى البيانات من قاعدة بيانات صغيرة في MS Access.
انقر تحميل قاعدة البيانات
سيبدو ملف MS Access كما يلي:
دعونا نكتب الماكرو الذي سيتم تنفيذه استعلام SQL .
افتح القائمة الخدمة - ماكرو - المحرر Visual Basic , أدخل الوحدة الجديدة (قائمة طعام Inser - Module ) وانسخ نص الماكرو هناك:
Sub SQLQuery_1() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
انقر فوق حفظ والعودة إلى Excel. اختر من القائمة عرض - وحدات الماكرو (Alt+F8) اسم الماكرو الخاص بنا " SQLQuery_1 ". سيظهر مربع حوار، اضغط عليه قاعدة البيانات... ، ابحث عن ملف Access الخاص بنا وانقر فوق
الآن يمكننا أن نرى أن استعلام الماكرو الخاص بنا قد قام بسحب الأعمدة
وبالمثل، يمكننا الحصول على البيانات من ملف Excel عادي كما لو كان من قاعدة بيانات. لهذا، يجب إعادة كتابة كود الماكرو الخاص بنا قليلاً وتغيير برنامج تشغيل الاتصال من Access إلى Excel.
نقوم بتصدير الجدول
Sub SQLQuery_2() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
ستظهر نافذة حيث يمكننا تحديد ملف Excel الخاص بنا (يجب تسميته