Przygotowując sklep internetowy dla mojego klienta, otrzymałem plik excela z produktami. Produktów jest kilka kategorii i w każdej z tych kategorii jest po kilka tysięcy produktów. Jedna z kategorii występuje z wariantami produktowymi. Do importu wszystkich produktów wykorzystuję plugin WP ALL Import z rozszerzeniem WooCommerce Add-On. Jak dokładnie importować takie produkty, nie będę się rozpisywał, gdyż wszystko bardzo dobrze jest wyjaśnione na tej stronie. No ale pierw trzeba przygotować odpowiednio plik z wariantami. Poniżej screen z produktami bez wariantów oraz screen z wariantami.

 

Kiedy mamy kilka może kilkanaście produktów, to można zrobić to ręcznie i zajmie kilka minut. W moim przypadku kiedy produktów miałem ok 3700szt. ciężko byłoby robić to ręcznie. Tutaj z pomocą przyszedł mi exscel i makra. Wspomnę że nie jestem programistą i nigdy wcześniej nie miałem styczności z Visual Basic’iem, ale postanowiłem co nie co napisać, aby ułatwić sobie pracę.

Sub New_lines()
    Dim MyRange As String
    Dim MyRange2 As String
    Dim CopyRange As String
    Dim PastRange As String
    Dim NewSKU As String
    Dim NewSKUrange As String
    Dim ColourRange As String
    
    For i = 1 To 10 'tutaj wstawiamy taką liczbę jaka ma być liczba iteracji
        a = ActiveCell.Row
        Let MyRange2 = "A" & a + 1 & ":" & "A" & a + 2
        Range(MyRange2).EntireRow.Insert
        Let CopyRange = "A" & a
        Let PastRange = "C" & a + 1 & ":" & "C" & a + 2

        ' Kopiuje SKU rodzica i wstawia do dziecka
        Worksheets("Arkusz1").Range(CopyRange).Copy
        Worksheets("Arkusz1").Range(PastRange).PasteSpecial Paste:=xlPasteValues
        
        ' Nowe SKU dla dziecka w kolorze RED i BLUE
        Let NewSKUrange = "A" & a + 1
        Range(NewSKUrange) = Range(CopyRange) & "R"
        Let NewSKUrange = "A" & a + 2
        Range(NewSKUrange) = Range(CopyRange) & "B"
        
        ' Title dziecka
        Let CopyRange = "B" & a
        Let PastRange = "B" & a + 1 & ":" & "B" & a + 2
        Worksheets("Arkusz1").Range(CopyRange).Copy
        Worksheets("Arkusz1").Range(PastRange).PasteSpecial Paste:=xlPasteValues
        
        ' Cena PLN
        Let CopyRange = "G" & a
        Let PastRange = "G" & a + 1 & ":" & "G" & a + 2
        Worksheets("Arkusz1").Range(CopyRange).Copy
        Worksheets("Arkusz1").Range(PastRange).PasteSpecial Paste:=xlPasteValues
        
        ' Cena GBP
        Let CopyRange = "H" & a
        Let PastRange = "H" & a + 1 & ":" & "H" & a + 2
        Worksheets("Arkusz1").Range(CopyRange).Copy
        Worksheets("Arkusz1").Range(PastRange).PasteSpecial Paste:=xlPasteValues
        
        ' Cena EUR
        Let CopyRange = "I" & a
        Let PastRange = "I" & a + 1 & ":" & "I" & a + 2
        Worksheets("Arkusz1").Range(CopyRange).Copy
        Worksheets("Arkusz1").Range(PastRange).PasteSpecial Paste:=xlPasteValues
        
        ' Wstawianie koloru
        Let ColourRange = "M" & a + 1
        Range(ColourRange) = "Red"
        Let ColourRange = "M" & a + 2
        Range(ColourRange) = "Blue"
        
        ' Przejście do kolejnych wierszy z przeskokiem o 3
        b = a + 3
        Let MyRange = "A" & b
        Application.Goto Arkusz1.Range(MyRange), True
    Next
    
End Sub

Jak widać na załączonych screenach, powyższy kod dodaje dwoje dzieci do produktu rodzica. Na początku program tworzy pod rodzicem dwa wolne wiersze. Kolejno do wierszy kopiuje SKU rodzica, tworzy SKU dziecka w danym kolorze, dodaje kolor i kopiuje niezbędne dane które są wykorzystane przy imporcie.

Poniżej screen z ustawienia plugin’a All Import na produkt z wariantami.