PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ذخيره اطلاعات Sheet1 با فرمت Notepat



jeddi
2011/10/18, 22:33
سلام و خسته نباشيد به دوستان عزير
چطور مي تونم مثلا اطلاعات Sheet1 را با فرمت Notepat از طريق CommandButton در مسير Desktop ذخيره كنم
با تشكر از لطف همه دوستان

plc_pcb
2011/10/19, 20:01
سلام و خسته نباشيد به دوستان عزير
چطور مي تونم مثلا اطلاعات Sheet1 را با فرمت Notepat از طريق CommandButton در مسير Desktop ذخيره كنم
با تشكر از لطف همه دوستان


کل شیت رو میخوای یا یک قسمتی از شیت رو میخوای؟
اگه برای کل شیت میخوای از کد زیر استفاده بکن



Sub txtfile()
Dim a, b As String
ActiveWorkbook.Save
a = ActiveWorkbook.Path
b = ActiveWorkbook.Name
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "C:\txtfile.txt", FileFormat:=20
Workbooks.Open Filename:=a & "\" & b
Workbooks("txtfile.txt").Close
Application.DisplayAlerts = True
End Sub


مسیر فایل رو هم میتونی عوض کنی

jeddi
2011/10/22, 21:49
دوست عزيز از حسن توجه شما متشكرم
يه زحمت ديگه براتون دارم اگه ممكنه اين كد و برام معني كني يه قسمتي از آن را نمي فهمم
Private Sub CommandButton3_Click()
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\File jeddi.txt", True)
n = 0
n1 = 0
For Each c In Range("I8:I108")
If c <> "" Then
n = n + 1
End If
Next
For i = 0 To n + n1
For i2 = 0 To 5
tex = tex & "" & Sheet1.Range("I8").Offset(i, i2)
Next i2
a.WriteLine tex
tex = ""
Next
MsgBox " فايل مورد نظر با موفقيت انجام شد."
MsgBox " آدرس فايل ذخيره شده c:\File jeddi.txt "
End Sub

plc_pcb
2011/10/23, 12:13
این کدی که نوشتی ایراد داره
1- اطلاعات هر سلول رو پشت سر هم مینویسه و برای کسی که فایل رو میبینه خوانا نیست
راه حلش اینکه یه tab توی کد زیر بزنی
tex = tex & "" & Sheet1.Range("I8").Offset(i, i2)
برای اینکه این مشکل حل بشه کد زیر رو جای کد بالا بزار
tex = tex & " " & Sheet1.Range("I8").Offset(i, i2)
2- اگر یکی از این خانه ها خالی باشه اطلاعات هر ستون میره تو ستون قبلیش و این یه ایراد خیلی بزرگه
3-اگه خانه های شیت فایل اکسل شما مقادیر اطلاعات زیادی داشته باشه پیشنهاد میکنم از این کد استفاده نکنی چون ممکنه وقت زیادی بگیره ویا سیستمت هنگ کنه
4- اگه شما در ستون I سلول خالی داشته باشید به همان تعداد سلول خالی از ردیف های اطلاعات شما کم میشه مثلا شما سلول I9,I10 را خالی قرار دهید و در سلول I11,I12,I8 مقادیر وارد کنید و بقیه خانه ها خالی باشه و ببینید چه اتفاقی میافتد (ردیف I12 از اطلاعات شما وجود ندارد)
شرح برنامه:
شما در این کد گفتین برای هر خانه که در رنج I8:I108 قرار داره و خالی نیست تعداد آنها رو در بیار (تعداد خانه هایی که خالی نیستند رو بدست میاره)و در متغیر n قرار بده
For Each c In Range("I8:I108")
If c <> "" Then
n = n + 1
End If
Next
بعد از دو تا حلقه تو رد تو استفاده کردین که همان طور که اطلاع داری حلقه تو در تو تولید ماتریس میکنه یعنی شما به وسیله این روش به صورت یک ماتریس در فایل txt اطلاعات خود را قرار میدهید

For i = 0 To n + n1
For i2 = 0 To 5
tex = tex & "" & Sheet1.Range("I8").Offset(i, i2)
Next i2
a.WriteLine tex
tex = ""
Next
این برنامه مشکلات زیادی داره و میتونه در آینده تولید کنه پیشنهاد میکنم از برنامه ای که اینجانب قرار داده ام استفاده کنید

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