ایرا یک فایل هفتگی با متن محدود دریافت می کند که با استفاده از یک ماکرو به اکسل وارد می کند. نام فایل همیشه هر هفته یکسان بود، بنابراین 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 کاراکتر پایه شروع می شوند باید در کتاب های کاری شما باز شوند. با تغییر پارامترها می توانید نحوه عملکرد متد را تغییر دهید. باید توجه ویژه ای به پارامترهای مورد استفاده برای تعیین اینکه کدام کاراکتر جداکننده باید استفاده شود، داشته باشید.