ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
23 visibility
موضوع: آفیس توسط:

شرکت ریچاردز نیز مانند بسیاری دیگر از اکسل بسیار استفاده می کند. در واقع آنها هزاران و هزاران کتاب کار اکسل دارند که در طول سال ها جمع آوری کرده اند. ریچارد به راهی نیاز دارد تا بفهمد کدام یک از این کتاب‌ها دارای ماکروهای VBA هستند، بدون اینکه نیازی به باز کردن و بازرسی هر کتاب به صورت جداگانه باشد. او فکر می کند که آیا راه آسانی برای انجام این کار وجود دارد؟

یک راه نسبتاً ساده برای یافتن همه کتاب‌های کاری حاوی ماکرو این است که فقط به دنبال فایل‌هایی بگردید که از پسوندهای XLSM یا XLSB استفاده می‌کنند. کتاب‌هایی که حاوی ماکرو هستند باید با استفاده از این پسوندها در فایل‌هایی ذخیره شوند. در حالی که 100٪ ضد اشتباه نیست، اما مکان خوبی برای شروع است.

همچنین می‌توانید از قابلیت‌های جستجوی ویندوز (خارج از اکسل) استفاده کنید و هر فایلی که حاوی متن «End Sub» یا «End Function» باشد را جستجو کنید. این به سرعت هر کتاب کار نامزد بالقوه را شناسایی می کند، زیرا هر رویه VBA باید از یکی از این دو عبارت در انتهای خود استفاده کند. (با این حال، با فایل‌های XLSB کار نمی‌کند، زیرا کد ماکرو آن‌ها در قالب باینری ذخیره می‌شود.)

اگر از کتاب‌های کار قدیمی (آنهایی که با فرمت فایل اکسل 2003 توسعه یافته‌اند) استفاده می‌کنید، در واقع باید به داخل هر یک از کتاب‌های کاری نگاه کنید. این را می توان به صورت برنامه نویسی انجام داد، به این معنی که می توانید یک ماکرو داشته باشید که هر کتاب کار را در یک پوشه باز می کند و آن را بررسی می کند تا ببیند آیا ماکروهایی در آن وجود دارد یا خیر.

به عنوان مثال، می‌توانید یک ماکرو ایجاد کنید که از طریق هر یک از فایل‌های یک فهرست راه‌اندازی می‌کند و تعیین می‌کند که آیا فایل یک کتاب کار اکسل است یا خیر. سپس می تواند فایل را باز کند و بررسی کند که آیا یک پروژه VBA در آن وجود دارد یا خیر.

Sub FindMacros()
    Dim sPath As String
    Dim sFile As String
    Dim sFoundFiles As String

    specify directory to use - must end in ""
    sPath = "C:MyDataExcel Data"

    sFile = Dir(sPath)
    Do While sFile <> ""
        If InStr(sFile, ".xls") > 0 Then
            Workbooks.Open (sPath & sFile)
            If Workbooks(sFile).HasVBProject Then
                sFoundFiles = sFoundFiles & sFile & vbCrLf
            End If
            Workbooks(sFile).Close (False)
        End If
        sFile = Dir      Get next filename
    Loop
    If Len(sFoundFiles) = 0 Then
        MsgBox "No workbooks found that contain macros"
    Else
        sFoundFiles = "The following workbooks contain macros:" & _
          vbCrLf & vbCrLf & sFoundFiles
        MsgBox sFoundFiles
    End If
End Sub

این مثال از ویژگی HasVBProject (معرفی شده به مدل شی اکسل در اکسل 2007) برای تعیین اینکه آیا فایل ماکرو دارد یا خیر استفاده می کند. پس از تکمیل، ماکرو جعبه پیامی را نمایش می دهد که برگه های حاوی ماکرو را فهرست می کند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 37 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 31 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 49 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 31 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 97 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

223 نفر آنلاین
0 عضو و 223 مهمان در سایت حاضرند
بازدید امروز: 22486
بازدید دیروز: 17853
بازدید کل: 20334665
...