ייבוא נתונים ממקור אינטרנטי לאקסס
-
אני רוצה לקבל נתונים באופן קבוע (מתעדכן כל X זמן) לאקסס,
חיפשתי באינטרנט ולא מצאתי תוצאות[באקסל יש אפשרות פשוטה לעשות שאת, בכרטיסייה נתונים > ייבא מ > רשת]
באקסס אמנם יש בכטיסייה נתונים חיצוניים > מקור נתונים חדש אפשרות לייבא משירותי מקוונים, אבל לא הבנתי מה האפשרויות שמובאות שם
אני צריך לייבא ממקור כמוhttps://www.call2all.co.il/ym/api/?RenderYMGRFile&token=*********&convertType=csv&wath=ivr2:Log/LogApprovalAll/ApprovalAll.ymgr
הפורמט שאני יכול לקבל את הנתונים הוא CSV או JSON (אפשר גם html)
-
@פשוט-אבל-תותח פתרון מהיר ומלוכלך: תיישם כנ"ל באקסל, ותיצור באקסס טבלה מקושרת לאקסל. זהו זה.
-
@פשוט-אבל-תותח אני מעז לטעון שזה פתרון אמיתי ונורמלי.
האלטרנטיבה היא ליצור בקשת http מתוך אקסס ולפרסר את התגובה לתוך טבלה. אם הנתונים הם ב-json אתה יכול להשתמש בספריה VBA-JSON.
אמנם בדרך הזו הכל יהיה ארוז באקסס, אבל זו עבודה קשה ואני מסתפק אם זה ישתלם לך. -
@פשוט-אבל-תותח חשבתי שגם לך זה הרגיש קצת מלוכלך, לא? כי טכנית אפשרי לעשות את זה בצורה סגורה באקסס, כמו שציינתי, בלי להרגיש שאני צריך לנצל את הרכיב שיש באקסל, בגלל שמייקרוסופט העדיפו לפתח אותו על פני אקסס. היה ראוי להוסיף פיצ'ר כזה גם לאקסס, בלי להיעזר בכל מיני תוספים כדי לשלוח בקשת http או לפרסר json.
בנוסף, טעיתי שכבר יש לך את זה עובד באקסל, והצעתי דרך קלה. -
@OdedDvir
זה ודאי מרגיש לי מלוכלך, רק שאם אתה כותב שזה פיתרון אמיתי ונרמלי, מי אני שאתווכח... ולכן ביררתי האם כוונתך היא גם במקרה כזה.
למעשה אתה כתבת לי את השם של הפיתרון לשלוח בקשת http ולפרסר לטבלה
אשמח אם תוכל לפרט קצת יותר על החלק היישומי.
תודה רבה -
@פשוט-אבל-תותח
אם הדוגמא דומה למקור, ואתה רוצה לייבא נתונים מימות המשיח,
יש קובץ אקסס לתקשור עם הAPI שלהם. יש את זה בפורום של ימות. -
@פשוט-אבל-תותח בבקשה:
- תייבא את הספריה VBA-JSON מכאן. תוריד את הקובץ bas ותייבא לפרוייקט שלך.
- תוסיף הפנייה לספרייה "Microsoft Scripting Runtime".
- הקוד הבא שולח בקשת GET ומחזיר מחרוזת של התוכן:
Public Function HttpGet(url As String) As String Dim httpRequest As Object Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") Dim res As String httpRequest.Open "GET", url, False httpRequest.Send HttpGet = httpRequest.responseText End Function
- את התגובה אתה צריך לפרסר עם הספריה VBA-JSON.
הנה דוגמא לשימוש ב-API של טסטים, שמחזיר נתוני דמה של משתמשים, ושליפת ערך השדה "firstname" מהתגובה:
Dim res As String Dim json As Object res = HttpGet("https://jsonplaceholder.typicode.com/users/1") Set json = ParseJson(res) MsgBox json("username")
התוצאה: