עמודה לחיצה בexcel עם http request
-
@ש-ב-ח אמר בעמודה לחיצה בexcel עם http request:
איך אני יוצר עמודה לחיצה באקסל
שבלחיצה עליה נעשית קריאת http לurl מעמודה אחרת בשורה
(כרגע יש לי רק היפר קישור לפתיחת דפדפן)הדף יוצר שיחה במרכזיה (לא מחזיר ולא מחדש שום דבר...)
זה קוד VBA ששולח בקשת HTTP POST.
תעשה לחצן שמפעיל את הקוד הזה -
@צבי-ש אמר בעמודה לחיצה בexcel עם http request:
תעשה לחצן שמפעיל את הקוד הזה
אבל:
@ש-ב-ח אמר בעמודה לחיצה בexcel עם http request:
איך אני יוצר עמודה לחיצה באקסל
-
@ש-ב-ח יש אירוע בשם Worksheet_FollowHyperlink
אבל א. הוא לא מופעל מפונקציית HYPERLINK אלא רק מקישור רגיל ב. הוא לא מונע פתיחת דפדפן אלא רץ במקביל.
לכן תצטרך להשתמש בSelectionCHange:
לחץ על ALT+F11 לפתיחת הVBA, לחץ בצד שמאל דבל קליק על הגיליון הרצוי המופיע ברשימה, ובחלון הנפתח תדביק את זה שזה בעצם הקוד ש@צבי-ש המליץ:Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") Url = "https://www.google.com?q=" & Target.Text objHTTP.Open "GET", Url, False objHTTP.send "" End If End Sub
אתה צריך לשנות את מס' העמודה (מה שכתוב 2) לעמודה המתאימה, ואת הכתובת והפרמטרים לפי הצרכים שלך.
בהצלחה. -
-
@OdedDvir אני חושב שיותר טוב שבניית הכתובת תהיה בתא ע"י נוסחאות אקסל רגילות, להשאיר את המינימום לפונקציה. ככה יהיה יותר קל לתחזק את הגיליון, ויכולו גם להשתמש בפונקציה בצורה גנרית ברחבי הגיליון בלי ההתניה השרירותית של "עמודה 2" ששמתי לצרכי טסט ומהיעדר דוגמה.
-
@OdedDvir
לא השתנה כלום, עדיין אוחז מהמשפט המוסגרוהנה שאלתי מתחילת השיחה:
@ש-ב-ח אמר בעמודה לחיצה בexcel עם http request:
איך אני יוצר עמודה לחיצה באקסל
שבלחיצה עליה נעשית קריאת http לurl מעמודה אחרת בשורהזה היה מאוד ברור ש
@OdedDvir אמר בעמודה לחיצה בexcel עם http request:
הכתובת נמצאת בשורה:
Url = "https://www.google.com?q=" & Target.Text@OdedDvir אמר בעמודה לחיצה בexcel עם http request:
תחליף בערך של העמודה הנכונה (בדוגמא להלן 7) :
Url = Cells(Target.Row, 7).Value & Target.Textתודה.
@dovid אמר בעמודה לחיצה בexcel עם http request:
@OdedDvir אני חושב שיותר טוב שבניית הכתובת תהיה בתא ע"י נוסחאות אקסל רגילות, להשאיר את המינימום לפונקציה. ככה יהיה יותר קל לתחזק את הגיליון, ויכולו גם להשתמש בפונקציה בצורה גנרית ברחבי הגיליון בלי ההתניה השרירותית של "עמודה 2" ששמתי לצרכי טסט ומהיעדר דוגמה.
נכון, בעצם איך אני משייך באופן גנרי את הפונקציה לעמודה ספציפית (ולא לבצע את הפונקציה בכל שינוי בחירה)?
מה שהייתי רוצה לראות (כמובן במבט של מפגר בexcel) שתהיה אפשרות מתוך הגליון לקבוע שבלחיצה על תא מסוים ישלח ערך של url אל הפונקציה (בעצם בכל תא בעמודה ערך אח מתא בעמודה אחרת מאותה שורה)
לא אכפת לי לעשות את זה עם איזה כפתור (ואולי זה יותר טוב) -
@ש-ב-ח אמר בעמודה לחיצה בexcel עם http request:
מה שהייתי רוצה לראות (כמובן במבט של מפגר בexcel) שתהיה אפשרות מתוך הגליון לקבוע שבלחיצה על תא מסוים ישלח ערך של url אל הפונקציה (בעצם בכל תא בעמודה ערך אח מתא בעמודה אחרת מאותה שורה)
זה בדיוק בדיוק מה שהבאתי לך. אתה צריך לדאוג שבתא הלחיץ יהיה את הטקסט הרלוונטי לכתובת או את הכתובת עצמה, ע"י נוסחאות אקסל של contact וכולי. בקוד תחליף את הUrl כולו או חלקו בTarget.Text.
נכון, בעצם איך אני משייך באופן גנרי את הפונקציה לעמודה ספציפית (ולא לבצע את הפונקציה בכל שינוי בחירה)?
בדיוק כמו בקוד שלי, שעשיתי תנאי if שהעמודה הנוכחית מספר 2.
(הייתי שואף למשו יותר אלגנטי כפי שתוכל לדקדק בדברי, זה כבר תלוי בנסוחאותיך. למשל אם הנוסחה שלך תייצר לינק שמתחיל בcall2yemot.co.il, תוכל להתנות את פעולת הפונקציה בזה שהתא מכיל כזה טקסט). -
@dovid אמר בעמודה לחיצה בexcel עם http request:
הייתי שואף למשו יותר אלגנטי
Const ClickableColumnNumber As Integer = 2 'העמודה הלחיצה Const URLColumnNumber As Integer = 7 'העמודה עם הכתובת לשליחה Const UrlPrefix As String = "http://xn--call2yemot-0hm.co.il/" 'קידומת הכרחית לשליחה Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> ClickableColumnNumber Then Exit Sub Dim Url As String Url = Cells(Target.Row, URLColumnNumber ).Value ' Verify the URL starts with the right prefix If InStr(1, Url, UrlPrefix) <> 1 Then Exit Sub ' All is Ok With CreateObject("MSXML2.ServerXMLHTTP") .Open "GET", Url, False .Send "" End With End Sub
-
-