or

Sub M_snb()
  sn = Sheet1.Cells(3, 1).CurrentRegion
  
  For j = 2 To UBound(sn)
    st = Split(sn(j, UBound(sn, 2)), "[")
    For jj = 1 To UBound(st)
       c00 = c00 & "|" & Val(st(jj)) & "_" & sn(j, 2) & "_" & sn(j, 3) & "_" & sn(j, 4) & "_[" & st(jj)
    Next
  Next
  sp = Split(Mid(c00, 2), "|")
  
  Cells(40, 1).Resize(UBound(sp) + 1) = Application.Transpose(sp)
  Cells(40, 1).CurrentRegion.TextToColumns , 1, , 0, 0, 0, 0, 0, True, "_"
End Sub
As long as you do everything in memory (my 2 proposals do) the code will be very fast.