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

ایرا یک فایل هفتگی با متن محدود دریافت می کند که با استفاده از یک ماکرو به اکسل وارد می کند. نام فایل همیشه هر هفته یکسان بود، بنابراین Ira توانست آن را در ماکرو جاسازی کند. این امر واردات را بسیار آسان کرد. اخیراً سیستم جدید فروشندگان شروع به تغییر نام فایل هر هفته کرده است، اما 12 کاراکتر اول همیشه ثابت می مانند. ایرا تعجب می کند که چگونه می تواند ماکرو را برای وارد کردن این فایل متنی بدون نیاز به تغییر نام فایل هر هفته کدنویسی کند.

چند راه برای حل این مشکل وجود دارد و همه آنها ممکن است به معنای کدگذاری مجدد گسترده ماکرو شما باشد. روشی که انتخاب می کنید باید به نحوه انجام کارتان در هر هفته بستگی داشته باشد. به عنوان مثال، اجازه دهید بگوییم که دایرکتوری که فایل ورودی در آن ذخیره می شود، 12 کاراکتر پایه برای نام فایل و پسوند نام فایل را می دانید. با این اطلاعات، می توانید به سادگی از کاربر بخواهید که پسوند نام فایل را به این صورت ارائه کند:

Sub OpenImportFile()
    Dim sFileName As String
    Dim sBase As String
    Dim sSuffix As String
    Dim sExt As String

    sBase = "c:MyDirectoryFirst12Chars"
    sExt = ".csv"
    sSuffix = InputBox("Enter suffix for filename")

    sFileName = sBase & sSuffix & sExt
    Workbooks.Open Filename:=sFileName
End Sub

بدیهی است که می توانید پایه و پسوند را به دلخواه تغییر دهید. این مثال فرض می کند که شما یک فایل CSV را وارد می کنید، که باید به خوبی در اکسل باز شود.

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

Sub OpenImportFiles()
    Dim sFileName As String
    Dim sBase As String
    Dim sExt As String

    sBase = "c:MyDirectoryFirst12Chars"
    sExt = ".csv"

    sFileName = Dir(sBase & "*" & sExt)
    If sFileName = "" Then
        MsgBox "No Files Found"
    Else
        Do While sFileName > ""
            Workbooks.Open Filename:=sFileName
            sFileName = Dir
        Loop
    End If
End Sub

این رویکرد همه فایل های CSV را در پوشه باز می کند. برای باز کردن نوع دیگری از فایل، فقط آنچه را که در متغیر sEx ذخیره شده است را تغییر دهید. نکته ای که باید به خاطر داشته باشید این است که از آنجایی که همه فایل های CSV در پوشه باز هستند، به این معنی است که ممکن است فایل های وارداتی از هفته های قبل را باز کند. (این ممکن است آن چیزی باشد که شما می خواهید یا نباشد.)

همه چیزهایی که در این نکته ارائه شده است، فرض را بر این می گذارد که وقتی یک فایل را "وارد" می کنید، تنها کاری که می خواهید انجام دهید این است که فایل را باز کنید تا بتوانید با آن کار کنید. ممکن است اینطور نباشد. ممکن است بخواهید ماکرو شما فایل import را به نحوی پردازش کند و کاری با آن انجام دهد. این عملکرد ممکن است قبلاً در ماکرو قدیمی شما وجود داشته باشد، بنابراین تنها کاری که باید انجام دهید این است که نحوه شناسایی فایل import را تغییر دهید. در این صورت، کدی که استفاده می کنید می تواند از کدی که قبلاً در این نکته ارائه شده است، اقتباس شود.

روش دیگر برای گرفتن داده ها از یک فایل متنی و قرار دادن آن در یک ورک بوک، استفاده از روش OpenText است، همانطور که در این کد مثال نشان داده شده است.

Sub OpenImportFile()
    Dim sFileName As String
    Dim sBase As String
    Dim sExt As String

    sBase = "c:MyDirectoryFirst12Chars"
    sExt = ".csv"
    sFileName = sBase & "*" & ".txt"

    Workbooks.OpenText Filename:=sFileName, Origin:= _
      xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, Tab:=True, _
      Semicolon:=False, Comma:= False, Space:=False, _
      Other:=False, FieldInfo:=Array(1, 1), _
      TrailingMinusNumbers:=True
End Sub

کاوش کامل در مورد کاری که روش OpenText انجام می دهد فراتر از محدوده این نکته است، اما نتیجه این است که همه فایل های متنی محدود شده که با 12 کاراکتر پایه شروع می شوند باید در کتاب های کاری شما باز شوند. با تغییر پارامترها می توانید نحوه عملکرد متد را تغییر دهید. باید توجه ویژه ای به پارامترهای مورد استفاده برای تعیین اینکه کدام کاراکتر جداکننده باید استفاده شود، داشته باشید.

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

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

95 نفر آنلاین
0 عضو و 95 مهمان در سایت حاضرند
بازدید امروز: 24427
بازدید دیروز: 27627
بازدید کل: 15199249
...