Page 1 of 1

แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 1:35 pm
by kamen2010
ขอรบกวนถามครับ


ผมอยากให้บรรทัดในช่อง excel E2-5 ถ้าไม่ได้พิมข้อความ ก็ไม่ต้องให้มันเขียนออกมาอ่ะครับ


อย่างในภาพนี้ เส้นน้ำเงินคือถูก แต่เส้นแดงถ้าไม่เขียนก็ไม่ต้องพิมออกมา ขอบคุณครับ

------------
นี่โค้ดที่เขียนครับ แก้ต่อจากนี้อย่างไรดีครับ

Code: Select all

Sub cardconfig()
    Call exportProject
End Sub

Function exportProject()
    


   'Dim fso As Object'
   Dim MyOutput As Object
   
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyOutput = fso.CreateTextFile("d:\testMacro\cardconfig.txt", True, True) 'Unicode=True'
   MyOutput.WriteLine ("{")
    MyOutput.WriteLine (ChrW(34) & "Graph" & ChrW(34) & ":[")


        For Y = 2 To 5

        MyOutput.WriteLine ("{")

        For X = 1 To 5

        keyValue = Cells(Y, X)

        If X = 1 Then
            MyOutput.WriteLine (ChrW(34) & "ID" & ChrW(34) & ":" & keyValue & ",")
            ElseIf X = 2 Then
                MyOutput.WriteLine (ChrW(34) & "No" & ChrW(34) & ":" & keyValue & ",")
            ElseIf X = 3 Then
                MyOutput.WriteLine (ChrW(34) & "Money" & ChrW(34) & ":" & keyValue & ",")
            ElseIf X = 4 Then
                MyOutput.WriteLine (ChrW(34) & "Name" & ChrW(34) & ":" & ChrW(34) & keyValue & ChrW(34) & ",")
            ElseIf X = 5 Then
                MyOutput.WriteLine (ChrW(34) & "Other" & ChrW(34) & ":" & ChrW(34) & keyValue & ChrW(34))
            End If
                    
        Next X
        
        If Y = 5 Then
            MyOutput.WriteLine ("}")
        Else
            MyOutput.WriteLine ("},")
        End If
    Next Y
    
   MyOutput.WriteLine ("]}")
   MyOutput.Close
   
   
End Function

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 1:58 pm
by snasui
:D ให้แนบภาพ แนบไฟล์มาที่ฟอรัมนี้แทนการฝากไว้ที่อื่น

การโพสต์ Code ควรโพสต์ให้แสดงเป็น Code โดยดูตัวอย่างจากที่นี่ครับ viewtopic.php?f=3&t=1187

สำหรับ VBA อ่านกฎการใช้บอร์ดข้อ 5 ด้านบน :roll: ประกอบด้วยครับ

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 2:13 pm
by kamen2010
แก้เรียบร้อยครับ

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 2:39 pm
by snasui
:D แนบไฟล์ Excel ที่มีเขียน Code นั้นมาด้วยจะได้ช่วยทดสอบได้ครับ

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 2:44 pm
by kamen2010
นี่ครับผม รบกวนอีกทีครับ

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 3:13 pm
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub exportProject()
   Dim MyOutput As Object
   Dim valField As Variant
   
   valField = Split("ID;No;Money;Name;Other", ";")
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyOutput = fso.CreateTextFile("d:\testMacro\test.txt", True, True) 'Unicode=True'
   MyOutput.writeline ("{")
   MyOutput.writeline (ChrW(34) & "Graph" & ChrW(34) & ":[")
   
    For Y = 2 To 5
        MyOutput.writeline ("{")
        For X = 1 To 5
            keyvalue = Cells(Y, X)
            If keyvalue <> "" Then
                MyOutput.writeline (ChrW(34) & valField(X - 1) & ChrW(34) & ":" & keyvalue & ",")
            End If
        Next X
        If Y = 5 Then
            MyOutput.writeline ("}")
        Else
            MyOutput.writeline ("},")
        End If
    Next Y
    
   MyOutput.writeline ("]}")
   MyOutput.Close
End Sub

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 3:26 pm
by kamen2010
ขอบคุณมากครับผม

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 3:36 pm
by kamen2010
ขอรบกวนถามเพิ่มเติมครับผม

ถ้าอยากให้ค่า keyvalue ที่รันออกมาอยู่ในฟันหนู เฉพาะของคอลัมน์ Other(หรืออื่นๆทีหลัง) นี่ต้องเขียนยังไงอ่ะครับ (อารมณ์กำหนด output คุมเฉพาะจุด)

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 4:03 pm
by snasui
:D ปรับที่ Code ด้านล่าง ซึ่งต้องปรับมาดูก่อน ติดตรงไหนค่อยถามกันต่อครับ

Code: Select all

If keyvalue <> "" Then
    MyOutput.writeline (ChrW(34) & valField(X - 1) & ChrW(34) & ":" & keyvalue & ",")
End If

Re: แนะนำด้วยครับ macro vba

Posted: Fri Oct 03, 2014 4:53 pm
by kamen2010
ขอบคุณครับ ได้แล้วครับ

ผมใช้ ElseIf กำหนดให้ valField แต่ละอันเขียนเองเลยครับ ฮ่าา