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

اوله در وارد کردن اطلاعات به یک کتاب کار اکسل با مشکل مواجه شد. به نظر می رسد فایل هایی که او باید وارد کند فایل های متنی هستند که معمولاً هزاران و هزاران رکورد در آنها وجود دارد. با این حال، Ole به بیشتر ردیف‌های ورودی نیاز ندارد و معمولاً پس از وارد شدن رکوردها به اکسل، از شر آنها خلاص می‌شود. اوله به دنبال راهی برای خلاص شدن از شر رکوردهای ناخواسته در طول فرآیند واردات است تا زمانی که داده ها در کتاب کار او هستند، کار کمتری برای انجام دادن داشته باشد.

راه حل های مختلفی برای حل این مشکل وجود دارد. یک راه حل این است که از Access به عنوان اولین مرحله وارد کردن استفاده کنید. اکسس به راحتی هزاران رکوردی را که می‌خواهید وارد کنید کنترل می‌کند - حتی اگر رکوردهای بیشتری از آنچه می‌توانید وارد اکسل کنید وجود داشته باشد. می توانید فایل را به Access وارد کنید، رکوردهای ناخواسته را فیلتر کنید و سپس جدول به دست آمده را به عنوان یک کتاب کار اکسل صادر کنید.

با این حال، بهترین راه حل ممکن است دور زدن فیلترهای واردات اکسل باشد. اگر داده‌های وارد کردن شما، مانند Oles، در یک فایل متنی باشد، عالی عمل می‌کند. شما به راحتی می توانید یک روتین واردات را در VBA بنویسید و به آن اجازه دهید فایل واردات را پردازش کند. به عنوان مثال، ماکرو زیر را در نظر بگیرید:

Sub Import()
    Dim sFile As String
    Dim sUnwanted As String
    Dim sDelim As String
    Dim iRow As Integer
    Dim iCol As Integer
    Dim bBadRecord As Boolean
    Dim iTemp As Integer

    sFile = "d:data.txt"
    sUnwanted = "bad text"
    sDelim = ","

    Open sFile For Input As #1

    iRow = 1
    While Not EOF(1) Scan file line by line
        iCol = 1
        Line Input #1, sBuffer

         Check to see if should ignore record
        bBadRecord = Instr(sBuffer, sUnwanted)

        If Not bBadRecord Then
            iTemp = Instr(sBuffer, sDelim)
            While iTemp > 0
                With Application.Cells(iRow, iCol)
                    .NumberFormat = "@" Text formatting
                    .Value = Left(sBuffer, iTemp-1)
                End With
                iCol = iCol + 1
                sBuffer = Mid(sBuffer, iTemp+1, Len(sBuffer))
                iTemp = Instr(sBuffer, sDelim)
            Wend
            If Len(sBuffer) > 0 Then
                With Application.Cells(iRow, iCol)
                    .NumberFormat = "@" Text formatting
                    .Value = sBuffer
                End With
            End If
            iRow = iRow + 1
        End If
    Wend
    Close #1
End Sub

این ماکرو یک فایل داده را باز می کند و هر رکورد را در فایل می خواند. رکورد را بررسی می کند تا مطمئن شود که برای وارد کردن صحیح است، و سپس رکورد را بر اساس یک جداکننده جدا می کند و اطلاعات را در کاربرگ فعلی قرار می دهد. شما می توانید نام فایل داده (متغیر sFile)، متنی که نشان دهنده رکورد بد (متغیر sUnwanted) و جداکننده (متغیر sDelim) است را تغییر دهید.

به عنوان مثال، فرض کنید که شما یک فایل داده به نام Customers.txt دارید. این فایل حاوی تمام سوابق مشتریان شما است، اما نمی‌خواهید سوابق را برای مشتریانی که آدرس‌هایی در داخل ایالات متحده دارند وارد کنید. علاوه بر این، رکوردهای موجود در فایل داده از یک کاراکتر برگه بین هر فیلد استفاده می کنند. در این حالت فقط باید تغییرات زیر را در متغیرهای ابتدای ماکرو اعمال کنید:

    sFile = "d:Customers.txt"
    sUnwanted = "United States"
    sDelim = Chr(9)

هنگامی که ماکرو را اجرا می کنید، کاربرگ فعلی فقط حاوی داده های مورد نظر است.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 21 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 41 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 33 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 38 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 28 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

257 نفر آنلاین
0 عضو و 257 مهمان در سایت حاضرند
بازدید امروز: 4412
بازدید دیروز: 25180
بازدید کل: 20341765
...