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

هنگام استفاده از ابزارهای موجود از روبان برای صادرات یک کاربرگ، به عنوان یک فایل CSV، Arkadiusz اشاره کرد که می‌تواند مشخص کند که می‌خواهد از یک نقطه ویرگول (;) به عنوان جداکننده فیلد استفاده کند. با این حال، اگر او یک فایل CSV را با استفاده از یک ماکرو (FileFormat:=xlCSV یا xlCSVWindows) ذخیره کند، نمی تواند یک نقطه ویرگول را به عنوان جداکننده تعیین کند.

این روش با طراحی در VBA کار می کند. اجرای اکسل روال‌های صادرات برای VBA همیشه از تنظیمات منطقه‌ای ویندوز برای تعیین نحوه جداسازی آیتم‌ها در یک CSV استفاده می‌کند. به طور خاص، روال به قسمت List Separator برای جداکننده نگاه می کند. این بدان معنی است که در صورت تمایل می توانید با تغییر تنظیمات List Separator در تنظیمات منطقه ای خود، جداکننده را به نقطه ویرگول تغییر دهید.

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

Sub CreateFile()
    Dim sFName As String
    Dim Rows As Long
    Dim Cols As Long
    Dim J As Long
    Dim K As Long
    Dim sTemp As String
    Dim sSep As String

    sSep = ";"  Specify the separator to be used

    sFName = ActiveWorkbook.FullName
    If Right(sFName, 5) = ".xlsx" Then
        sFName = Mid(sFName, 1, Len(sFName) - 5)
        sFName = sFName & ".txt"
        Open sFName For Output As 1

        With ActiveSheet
            Number of rows to export is based on the contents
            of column B. If it should be based on a different
            column, change the following line to reflect the
            column desired.
            Rows = .Cells(.Rows.Count, "B").End(xlUp).Row
            For J = 1 To Rows
                sTemp = ""
                Cols = .Cells(J, .Columns.Count).End(xlToLeft).Column
                For K = 2 To Cols
                    sTemp = sTemp & .Cells(J, K).Value
                    If K < Cols Then sTemp = sTemp & sSep
                Next
                Print #1, sTemp
            Next J
        End With

        Close 1

        sTemp = "There were " & Rows & " rows of data written "
        sTemp = sTemp & "to this file:" & vbCrLf & sFName
    Else
        sTemp = "This macro needs to be run on a workbook "
        sTemp = sTemp & "stored in the XLSX format."
    End If

    MsgBox sTemp
End Sub

این ماکرو یک فایل متنی را باز می کند که همان نام کتاب کار شما را دارد. سپس از هر ردیف عبور می کند و شروع به کنار هم قرار دادن رشته ای از محتویات سلول می کند. (این در متغیر sTemp قرار داده می شود.) هر سلول یک نقطه ویرگول بین خود قرار داده است، همانطور که توسط متغیر sSep تعریف شده است. مقادیر به هم پیوسته هر ردیف در فایل متنی ذخیره می شود و پس از اتمام فایل متنی بسته می شود. این روال بسیار سریع است و پس از اتمام، پیامی نشان می دهد که چند ردیف به فایل صادر شده است.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 56 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 77 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 21 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 40 visibility

23.7k سوال

9.0k پاسخ

614 دیدگاه

11.2k کاربر

158 نفر آنلاین
1 عضو و 157 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 11507
بازدید دیروز: 17853
بازدید کل: 20323691
...