דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת

פקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 5 כותבים 752 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • OdedDvirO מנותק
    OdedDvirO מנותק
    OdedDvir
    כתב ב נערך לאחרונה על ידי
    #5

    כמו שציין @dovid, ניתן להשתמש בפונקציה SendKeys.
    בהנחה שהתוכנה פתוחה, אפשר לעבור אליה על ידי ציון שמה על ידי פונקציה נוספת: AppActivate.
    הנה דוגמא בסיסית להעתקה של הבחירה בוורד לתוך VSCode:

    Sub PasteInVisualStudioCode()
        SendKeys "^C", True
        AppActivate "Visual Studio Code", True
        SendKeys "^V", True
    End Sub
    

    הערות:

    1. הפרמטר השני True (בשתי הפונקציות) גורם לקוד להמתין עד לסיום הפעולה, אחרת עלול להווצר מצב דומה לזה שציין @מטעמים.
    2. בקוד הנ"ל אין בדיקה האם VSCode פתוח כבר. במקרה שלא - תקפוץ שגיאה.
    האדם החושבה תגובה 1 תגובה אחרונה
    6
    • האדם החושבה מנותק
      האדם החושבה מנותק
      האדם החושב
      השיב לOdedDvir ב נערך לאחרונה על ידי
      #6

      @OdedDvir מסתבר שזה לא יעבוד באוצר החכמה בלי להוסיף אותו למשתני הסביבה ,לא?

      OdedDvirO תגובה 1 תגובה אחרונה
      0
      • OdedDvirO מנותק
        OdedDvirO מנותק
        OdedDvir
        השיב להאדם החושב ב נערך לאחרונה על ידי
        #7

        @האדם-החושב הפקודה AppActivate אינה תלויה במשתני הסביבה, רק בשם האפליקציה.
        הפקודה הנ"ל פשוט מחפשת את החלון עם השם המתאים והופכת אותו ליישום הפעיל (ציינתי שכתנאי מקדים האפליקציה חייבת להיות פתוחה ברקע)

        תגובה 1 תגובה אחרונה
        3
        • האדם החושבה מנותק
          האדם החושבה מנותק
          האדם החושב
          כתב ב נערך לאחרונה על ידי האדם החושב
          #8

          לגבי החיפוש באוצר החכמה ובר אילן:
          ניסיתי היום על בר אילן בכמה אופנים ותכלס' לא עובד:
          א:

          Option Explicit
          
          Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
          (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
          ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
          
          Sub OpenWebPage()
              SendKeys "^C", True 'העתק בחירה
              Dim url As String
              url = "C:\Program Files (x86)\ResponsaCD25\RESPONSA.exe" 'Replace with the URL of the webpage you want to open
              ShellExecute 0, "open", url, vbNullString, vbNullString, vbNormalFocus 'הפעל את בר אילן
              SendKeys "^O", True 'פתח חיפוש
              SendKeys "^V", True 'הדבק
              SendKeys "{ENTER}", True 'בצע חיפוש
          End Sub
          

          אני מקבל את השגיאה הבאה:
          מתמחים.png
          [ניסיתי את זה על בר אילן 25 ,גם כשניסיתי לפתוח את התוכנה ע"י הקלדת הנתיב בcmd קיבלתי את אותה שגיאה]

          ב:

          Sub חיפוש_בספרים_בר_אילן()
          SendKeys "^C", True 'העתק בחירה
          Shell "C:\Program Files (x86)\ResponsaCD25\RESPONSA.exe", True 'הפעל את בר אילן
          SendKeys "^O", True 'פתח חיפוש
          SendKeys "^V", True 'הדבק
          SendKeys "{ENTER}", True 'בצע חיפוש
          
          End Sub
          

          ג:

          Sub חיפוש_בספרים_בר_אילן()
              SendKeys "^C", True 'העתק בחירה
          AppActivate "RESPONSA", True 'הפעל את בר אילן
              SendKeys "^O", True 'פתח חיפוש
              SendKeys "^V", True 'הדבק
              SendKeys "{ENTER}", True 'בצע חיפוש
          End Sub
          

          בשניהם קיבלתי את השגיאה הבאה:
          תחומים 2.png
          @OdedDvir
          אולי לא הכנסתי את ה AppActivate הנכון? ,איפה אני רואה אותו [הכנסתי לפי מה שמופיע במנהל המשימות]

          תגובה 1 תגובה אחרונה
          0
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            כתב ב נערך לאחרונה על ידי
            #9

            השיטה האחרונה אמורה לעבוד.
            לא ציינת איזו שורה מעלה את השגיאה, אז אני מניח שהבעיה בשורה 3.
            יש כאן חלק קצת חמקמק, צריך לדעת מה כותרת החלון. זה לא תמיד ברור, במיוחד כשיש עירוב של עברית\אנגלית.
            אפשר להתחכם ולהשתמש במזהה התהליך PID כדי לאתר את החלון המדוייק.
            הקוד הבא אמור לטפל גם במקרה שבו האפליקציה אינה מופעלת כלל:

            Private Function GetFirstPid(applicationName As String) As Long
            'Returns the FIRST PID of an application by it's name
                Dim services As Object, processes As Object, process As Object
                Dim resultPid As Long
            
                Set services = GetObject("winmgmts:\\.\root\CIMV2")
                Set processes = services.ExecQuery("SELECT ProcessID FROM Win32_Process WHERE name like ""%" & applicationName & "%""", , 48)
            
                For Each process In processes
                   resultPid = process.ProcessID
                   Exit For ' Just the first ID please :)
                Next
                ' Garbage cleanup
                Set processes = Nothing
                Set services = Nothing
                
                GetFirstPid = resultPid
            End Function
            
            Sub CopyAndPasteInResponsa()
                Selection.Copy
                Dim AppPid As Long
                AppPid = GetFirstPid("Responsa")
                If (AppPid = 0) Then
                    AppPid = Shell("C:\Program Files (x86)\ResponsaCD25\RESPONSA.exe", 1)
                End If
                AppActivate AppPid
                SendKeys ("^C")
            End Sub
            
            
            האדם החושבה תגובה 1 תגובה אחרונה
            3
            • האדם החושבה מנותק
              האדם החושבה מנותק
              האדם החושב
              השיב לOdedDvir ב נערך לאחרונה על ידי
              #10

              @OdedDvir עכשיו אני מקבל את השגיאה הזאת:
              93773509-53c0-4cec-a740-7a30c76c9f09-image.png
              וכשלחצתי על הודעה מפורטת זה מה שהופיע לי:
              dba02932-35f3-480b-8667-64ef0bb3a579-image.png
              כשהרצתי את זה כשהתוכנה היתה פתוחה החלון של התוכנה נפתח ,אבל לא נפתח לי החלון חיפוש [שנפתח ע"י קונטרול Q]
              הקוד היה כזה:

              Private Function GetFirstPid(applicationName As String) As Long
              'Returns the FIRST PID of an application by it's name
                  Dim services As Object, processes As Object, process As Object
                  Dim resultPid As Long
               
                  Set services = GetObject("winmgmts:\\.\root\CIMV2")
                  Set processes = services.ExecQuery("SELECT ProcessID FROM Win32_Process WHERE name like ""%" & applicationName & "%""", , 48)
               
                  For Each process In processes
                     resultPid = process.ProcessID
                     Exit For ' Just the first ID please :)
                  Next
                  ' Garbage cleanup
                  Set processes = Nothing
                  Set services = Nothing
                  
                  GetFirstPid = resultPid
              End Function
               
              Sub חיפוש_בספרים()
                  Selection.Copy
                  Dim AppPid As Long
                  AppPid = GetFirstPid("Responsa")
                  If (AppPid = 0) Then
                      AppPid = Shell("C:\Program Files (x86)\ResponsaCD25\RESPONSA.exe", 1)
                  End If
                  AppActivate AppPid
                  SendKeys "^O", True
                  SendKeys "^V", True 'הדבק
                  SendKeys "{ENTER}", True 'בצע חיפוש
              End Sub
              

              כלומר הוא מריץ את זה לפני שהתוכנה נפתחת?
              תודה רבה

              תגובה 1 תגובה אחרונה
              0
              • OdedDvirO מנותק
                OdedDvirO מנותק
                OdedDvir
                כתב ב נערך לאחרונה על ידי
                #11

                @האדם-החושב

                1. צירפת שתי תמונות, כל אחת עם קוד שונה.
                2. אם ביצעת שינויים בקוד, נא ציין רק את השינוי שעשית. אין צורך לצרף עותק של הקוד הקודם בתגובה.
                3. לא ציינת איזו שורה גורמת לשגיאה.

                  כלומר הוא מריץ את זה לפני שהתוכנה נפתחת?

                4. לא הבנתי את השאלה.
                האדם החושבה תגובה 1 תגובה אחרונה
                1
                • האדם החושבה מנותק
                  האדם החושבה מנותק
                  האדם החושב
                  השיב לOdedDvir ב נערך לאחרונה על ידי
                  #12

                  @OdedDvir

                  צירפת שתי תמונות, כל אחת עם קוד שונה.

                  לא היה לי צילום מסך מהקוד הנוכחי, אבל זאת אותה שגיאה

                  לא ציינת איזו שורה גורמת לשגיאה.

                  זאת לא שגיאה בקוד אלא בתוכנת בר אילן (כאמור גם כשניסיתי לפתוח את התוכנה בטרמינל הוא נתן לי את אותה שגיאה)

                  לא הבנתי את השאלה

                  כלומר עד שהחלון נפתח הוא כבר מריץ את הקיצורי מקשים, וכך כשהתוכנה נפתחת לא קורה כלום

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי dovid
                    #13

                    @OdedDvir נדמה לי שזה בגלל שהCurrent Directory שלו לא מצביע על התיקיה של פרוייקט השות.
                    @האדם-החושב כפי שאמרת השגיאה היא בעצם פתיחת התוכנה, בלי קשר לשליחת הקיצורי מקשים. תשתדל בנושא אחד להתמקד, למשל יכולת להפעיל תוכנה בה אין שגיאה ולוודא שבה הקיצורי מקשים עובדים, ולפתוח נושא חדש על בעיית הפתיחה של פרוייקט השות.
                    בגישה הזו נהיים נושאים בריאים שנחשבים לדיון ענייני בבעיה טכנית אחת שיכולה לעזור לאחרים שנתקלו באותה בעיה בלי שהם יצטרכו לקרוא את כל עלילות השואל וניחושי העונים.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    OdedDvirO תגובה 1 תגובה אחרונה
                    3
                    • OdedDvirO מנותק
                      OdedDvirO מנותק
                      OdedDvir
                      השיב לdovid ב נערך לאחרונה על ידי OdedDvir
                      #14

                      @dovid כתב בפקודת מאקרו בוורד שפותחת תוכנה אחרת ויכולה לעשות פעולות בתוך התוכנה האחרת:

                      @OdedDvir נדמה לי שזה בגלל שהCurrent Directory שלו לא מצביע על התיקיה של פרוייקט השות.

                      זו השערה הגיונית.
                      ניתן לאשש זאת על ידי בדיקה אם השגיאה נעלמת במקרה שהתוכנה כבר פתוחה ברקע לפני הרצת המאקרו.
                      אם כן, יש לשנות את התיקייה הפעילה לפני הפעלת האפליקציה, כלומר לשנות את הקוד כך:

                      Sub CopyAndPasteInResponsa()
                          Selection.Copy
                          Dim AppPid As Long
                          AppPid = GetFirstPid("Responsa")
                          If (AppPid = 0) Then
                              ChDir "C:\Program Files (x86)\ResponsaCD25"
                              AppPid = Shell("RESPONSA.exe", 1)
                          End If
                          AppActivate AppPid
                          SendKeys "^Q", True
                          SendKeys "^C", True
                      End Sub
                      

                      הוספתי גם את הלחיצה על Q^ לפני ההדבקה.

                      ד תגובה 1 תגובה אחרונה
                      4
                      • ד מנותק
                        ד מנותק
                        דאציג
                        השיב לOdedDvir ב נערך לאחרונה על ידי דאציג
                        #15
                        פוסט זה נמחק!
                        תגובה 1 תגובה אחרונה
                        0

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום