Перейти к содержанию

РЕМОНТ ТАБЛИЦ


Перейти к решению Решено eremej,

Рекомендуемые сообщения

Уважаемые программисты пожалуйста, отремонтируйте таблицы.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485886
Поделиться на другие сайты

  • Ответов 3,7 тыс
  • Создана
  • Последний ответ

Топ авторов темы

1 час назад, Burn Marlon сказал:

Эх, вы....А вот, если бы, пользовались API от пользователя форму @noname, проблем бы не было 😚❤️.

Нашел только что таблицу, которая у меня перестала работать, с api от noname, тоже не работает, в чем заключается "проблем бы не было"?

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485887
Поделиться на другие сайты

  • Постоянный

Можно спросить в нейросети, но человек выше писал, что сделает. Думаю у него лучше получится.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485888
Поделиться на другие сайты

6 часов назад, Nazarnineangels сказал:

Aynı şey, boş hücrelerle yüklenir. İmkanı olan herkes bir baksın.

resim.png

OG.xlsb 7,32MB · 3 indirme

hiçbir tahmin yüklemiyor

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485889
Поделиться на другие сайты

  • Постоянный
6 минут назад, majestic14 сказал:

hiçbir tahmin yüklemiyor

Я знаю, що нема.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485890
Поделиться на другие сайты

6 часов назад, Shurik91 сказал:

Решение проблемы, уже готово, осталось написать инструкцию для всех. Постараюсь к вечеру выложить.

С нетерпением ждем инструкцию! Заранее спасибо!

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485891
Поделиться на другие сайты

Итак😅, ПОЧТИ УНИВЕРСАЛЬНАЯ ИНСТРУКЦИЯ v. 01.08.2024📎. Чтобы отремонтировать свою любимую таблицу❤️.

В 70%, она должна сработать. Но бывают случаи, когда кто-то уже побывал в таблице или таблица, написана с некоторыми отличиями.

Тогда нужно, повнимательнее быть и проверять, что меняете и где?

Думаю, кто не справится сам. Сможет здесь попросить, кого-то помочь или подсказать.

РЕШЕНИЕ✔️ оцениваю как СЛОЖНО, но возможно, главное захотеть👌

постарался максимально упростить инструкцию, чтобы у всех была возможность, попробовать самостоятельно сделать ремонт или помогать другим. Так как таблиц очень много.

ПОЕХАЛИ✍️

1.       В отдельный новый модуль.

2.       Скопируй и вставь, функцию getTable. Внутри ничего не меняй. Она универсальная.

Мы будем вызывать её далее, для загрузки нужных таблиц.

3.       Обязательно удали строку Option Explicit. Которая появится в новом модуле.

image.thumb.png.65f10883bf8d91d446cfde428ec6795d.png

Код функции getTable:

Function getTable(id, sourcer, table_name)
    Dim table(35) As Variant
    Dim game(25) As Variant
    
    Select Case table_name:
        Case "table_overall": table_index = 1: my_temper = "0"
        Case "table_home": table_index = 2: my_temper = "0"
        Case "table_away": table_index = 3: my_temper = "0"
        Case "form_overall": table_index = 5: my_temper = "0"
        Case "form_home": table_index = 8: my_temper = "0"
        Case "form_away": table_index = 9: my_temper = "0"
        Case "over_under_overall": table_index = 6: my_temper = "2.5"
        Case "over_under_home": table_index = 17: my_temper = "2.5"
        Case "over_under_away": table_index = 18: my_temper = "2.5"
    End Select
    
    t = 0
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "https://d." & sourcer & "x/feed/df_to_1_" & id & "_" & table_index, False
    objHttp.setRequestHeader "X-Fsign", "SW9D1eZo"
    objHttp.send
    fs_input = objHttp.responseText
    fs_rows = Split(fs_input, "¬~")
    fs_rows_len = UBound(fs_rows) - LBound(fs_rows)
    For i = 0 To fs_rows_len - 1
        fs_row = Split(fs_rows(i), "¬")
        fs_row_len = UBound(fs_row) - LBound(fs_row)
        fs_index = Split(fs_row(0), ChrW(&HF7))
        If IsArray(fs_index) Then
            fs_index_name = fs_index(0)
            fs_index_value = fs_index(1)
        End If
        If fs_index_name = "TR" And temper = True Then
            Erase game
            For j = 0 To fs_row_len
                fs_row_parts = Split(fs_row(j), ChrW(&HF7))
                Select Case fs_row_parts(0):
                    Case "TR": game(0) = fs_row_parts(1)
                    Case "TN": game(3) = fs_row_parts(1)
                    Case "TM":
                        f = fs_row_parts(1)
                        game(6) = f
                    Case "TWR", "OUO": game(9) = fs_row_parts(1)
                    Case "TDR", "OUU": game(12) = fs_row_parts(1)
                    Case "TLR": If IsEmpty(game(15)) Then game(15) = fs_row_parts(1)
                    Case "TG":
                        gols = Split(fs_row_parts(1), ":")
                        If IsEmpty(game(15)) Then game(15) = gols(0)
                        game(16) = gols(1)
                        game(18) = gols(0)
                        game(19) = gols(1)
                    Case "TP": game(25) = fs_row_parts(1)
                End Select
                    
            Next j
            If table_index = 5 And f < 5 Then GoTo next_item
            If t > 35 Then GoTo return_table
            table(t) = game
            t = t + 1
        ElseIf fs_index_name = "ETI" Then
            temper = False
            If fs_index_value = my_temper Then temper = True
        End If
next_item:
    Next i
return_table:
    getTable = table
End Function

       

4.       Далее, нужно найти модуль👁️ в твоей таблице, в котором находятся участки кода с ошибками🐛

Они все, включают в себя ссылку, с приставкой ss_1

Можно в поиск вбить, это ключевое слово и поискать по модулям.

Приблизительно, они выглядят так. Блоки с кодом. Кто пользовался старыми инструкциями по ремонту от меня, должен их знать и помнить.

image.thumb.png.87b572be664bd800d96835f11247e81e.png

 

 

6.    Когда ты обнаружил строку ss_1. Убедись, что она ПЕРВАЯ! Их может быть несколько (2, 3, 6)

Мы будем исправлять все ss_1. Начиная с ПЕРВОЙ.

Не ссылки исправлять, а добавлять новый рабочий код. В этих местах.

7.       Если ты сюда добрался, то ты в НАЧАЛЕ ПУТИ😅

8.       Теперь из ПЕРВОЙ ссылки ss_1. В твоей таблице. Нам нужно узнать, имена переменных для запуска функции getTable.

Приблизительно ссылка ss_1, выглядит так:

https://d." & sourcer & "x/feed/ss_1_" & tournamentEncodedId & "_" & tournamentStageEncodedId & "_table_overall?hp1=" & participantEncodedIds1 & "&hp2=" & participantEncodedIds2 & "&e=" & id

 

Переменные (параметры)🔧 для getTable, которые тебе нужны. Берутся из ссылки ss_1

9.1  Это имя переменной, в которой хранится название флешскора. Стандартное название sourcer. Может быть и другое!

Запиши или запомни его название.

image.thumb.png.18c2e55c989cd742d3595f5eba1a6f9a.png

Если переменной нет, а просто написано flashscore.com/ или ru/ Тогда запиши его название.

9.2   Имя турнирной таблицы. Которую мы восстанавливаем. Например здесь, в этом блоке, мы ремонтируем table_overall

image.thumb.png.a20f5f57d36a4538e6f78082ce49b134.png

9.3   Переменная, которая хранит в себе, ID текущего матча. Смотри в самый конец ссылки --->

image.thumb.png.de9b46ac6760550f85d0655eb21aee1f.png

Может быть имя id или match_id. Или другое, как у тебя.

10.   Всё запомнил или записал.

 

11. Исправляем первый ss_1

image.thumb.png.d20120c4e9c634fadd0236f76f8d8945.png

Каждый блок ss_1. Имеет своё НАЧАЛО и КОНЕЦ.

Начало - это наличие ссылки ss_1

Конец, это слово End If. Или Начало следующего блока ss_1.

Тебе нужно найти разрыв между ними.

 

12. И в конце каждого ss_1. Вызвать getTable. И передать ей переменные (параметры) 9.1, 9.2, 9.3

getTable(   ID матча,     название флешскора,     название турнирной таблицы   )

ранее, ты их записал. Поэтому проблем с поиском не будет.

Вызов getTable. Копируешь код целиком и вставляешь между концом и началом следующего ss_1

Это нужно вставить в разрыв.

b1 = 2
table_overall = getTable(id, sourcer, "table_overall")
For Each submatches In table_overall
        If IsEmpty(submatches) Then Exit For
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(0)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(3)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(6)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(9)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(12)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(15)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(18)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(19)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(25)
        b1 = b1 + 1
Next submatches

Вот так, должно, выглядеть:

image.thumb.png.8065a6ec92c47edfc18d2459a339bcdb.png

 

13. СМОТРИ внимательно! На скрине, я отметил, что должно совпадать с оригиналом. В точности, как в старом коде, который там есть.

image.thumb.png.70736ca88b73d30ed6c93b8785895806.png

1. Имя листа.

2. Имя ячеек.

3. Индексы.

Всё, должно совпадать на 100%

Ты сам, смотришь и проверяешь.

Если Имя листа другое у тебя. Ты меняешь на своё имя.

Если Индексов, меньше, лишние убираешь.

14. Первый блок ss_1 ты починил. МОЛОДЕЦ👍

15. Далее, все остальные ss_1. Ремонтируются аналогично. Первому.

Например, ты идёшь дальше.

И встретил такой блок ss_1. Он отвечает за загрузку таблицы ТБ 2,5. Для домашней команды. Имя over_under_home.

image.thumb.png.fdb3888588550066bc6db509b75601ae.png

Здесь, имя листа, имя ячеек и индексы другие и их меньше. Как быть?

Ваш новый код, должен быть таким!

Количество индексов, уменьшаем. Пишем другое имя листа. И ячейки тоже меняем.

В вызове меняем имя таблицы на over_under_home.

image.thumb.png.c38ec4363e8d23e60f3f9c89dffb0082.png

Вроде бы ВСЁ!😉 Для людей опытных напишу, коротко. Наша задача убрать полностью старый код и заменить на новый. А так как ячейки и имя листа, остаются теми же. То в новом коде, нам нужно. Просто прописать их имена и всё. Я оставил, новичкам старый код, чтобы им было легче, а то если, ещё и удалять просить... То можно совсем потеряться и запутаться😅 Кто умеет смотреть скрытые листы и ставить на стоп код, проверьте обязательно, заполнение таблиц на правильность. Мало ли...🧐

 

 

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485892
Поделиться на другие сайты

Большое спасибо!!!

Более менее понятно. Будем разбираться по месту.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485893
Поделиться на другие сайты

42 минуты назад, Shurik91 сказал:

Итак😅, ПОЧТИ УНИВЕРСАЛЬНАЯ ИНСТРУКЦИЯ v. 01.08.2024📎. Чтобы отремонтировать свою любимую таблицу❤️.

В 70%, она должна сработать. Но бывают случаи, когда кто-то уже побывал в таблице или таблица, написана с некоторыми отличиями.

Тогда нужно, повнимательнее быть и проверять, что меняете и где?

Думаю, кто не справится сам. Сможет здесь попросить, кого-то помочь или подсказать.

РЕШЕНИЕ✔️ оцениваю как СЛОЖНО, но возможно, главное захотеть👌

постарался максимально упростить инструкцию, чтобы у всех была возможность, попробовать самостоятельно сделать ремонт или помогать другим. Так как таблиц очень много.

ПОЕХАЛИ✍️

1.       В отдельный новый модуль.

2.       Скопируй и вставь, функцию getTable. Внутри ничего не меняй. Она универсальная.

Мы будем вызывать её далее, для загрузки нужных таблиц.

3.       Обязательно удали строку Option Explicit. Которая появится в новом модуле.

image.thumb.png.65f10883bf8d91d446cfde428ec6795d.png

Код функции getTable:

Function getTable(id, sourcer, table_name)
    Dim table(35) As Variant
    Dim game(25) As Variant
    
    Select Case table_name:
        Case "table_overall": table_index = 1: my_temper = "0"
        Case "table_home": table_index = 2: my_temper = "0"
        Case "table_away": table_index = 3: my_temper = "0"
        Case "form_overall": table_index = 5: my_temper = "0"
        Case "form_home": table_index = 8: my_temper = "0"
        Case "form_away": table_index = 9: my_temper = "0"
        Case "over_under_overall": table_index = 6: my_temper = "2.5"
        Case "over_under_home": table_index = 17: my_temper = "2.5"
        Case "over_under_away": table_index = 18: my_temper = "2.5"
    End Select
    
    t = 0
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "https://d." & sourcer & "x/feed/df_to_1_" & id & "_" & table_index, False
    objHttp.setRequestHeader "X-Fsign", "SW9D1eZo"
    objHttp.send
    fs_input = objHttp.responseText
    fs_rows = Split(fs_input, "¬~")
    fs_rows_len = UBound(fs_rows) - LBound(fs_rows)
    For i = 0 To fs_rows_len - 1
        fs_row = Split(fs_rows(i), "¬")
        fs_row_len = UBound(fs_row) - LBound(fs_row)
        fs_index = Split(fs_row(0), ChrW(&HF7))
        If IsArray(fs_index) Then
            fs_index_name = fs_index(0)
            fs_index_value = fs_index(1)
        End If
        If fs_index_name = "TR" And temper = True Then
            Erase game
            For j = 0 To fs_row_len
                fs_row_parts = Split(fs_row(j), ChrW(&HF7))
                Select Case fs_row_parts(0):
                    Case "TR": game(0) = fs_row_parts(1)
                    Case "TN": game(3) = fs_row_parts(1)
                    Case "TM":
                        f = fs_row_parts(1)
                        game(6) = f
                    Case "TWR", "OUO": game(9) = fs_row_parts(1)
                    Case "TDR", "OUU": game(12) = fs_row_parts(1)
                    Case "TLR": If IsEmpty(game(15)) Then game(15) = fs_row_parts(1)
                    Case "TG":
                        gols = Split(fs_row_parts(1), ":")
                        If IsEmpty(game(15)) Then game(15) = gols(0)
                        game(16) = gols(1)
                        game(18) = gols(0)
                        game(19) = gols(1)
                    Case "TP": game(25) = fs_row_parts(1)
                End Select
                    
            Next j
            If table_index = 5 And f < 5 Then GoTo next_item
            If t > 35 Then GoTo return_table
            table(t) = game
            t = t + 1
        ElseIf fs_index_name = "ETI" Then
            temper = False
            If fs_index_value = my_temper Then temper = True
        End If
next_item:
    Next i
return_table:
    getTable = table
End Function

       

4.       Далее, нужно найти модуль👁️ в твоей таблице, в котором находятся участки кода с ошибками🐛

Они все, включают в себя ссылку, с приставкой ss_1

Можно в поиск вбить, это ключевое слово и поискать по модулям.

Приблизительно, они выглядят так. Блоки с кодом. Кто пользовался старыми инструкциями по ремонту от меня, должен их знать и помнить.

image.thumb.png.87b572be664bd800d96835f11247e81e.png

 

 

6.    Когда ты обнаружил строку ss_1. Убедись, что она ПЕРВАЯ! Их может быть несколько (2, 3, 6)

Мы будем исправлять все ss_1. Начиная с ПЕРВОЙ.

Не ссылки исправлять, а добавлять новый рабочий код. В этих местах.

7.       Если ты сюда добрался, то ты в НАЧАЛЕ ПУТИ😅

8.       Теперь из ПЕРВОЙ ссылки ss_1. В твоей таблице. Нам нужно узнать, имена переменных для запуска функции getTable.

Приблизительно ссылка ss_1, выглядит так:

https://d." & sourcer & "x/feed/ss_1_" & tournamentEncodedId & "_" & tournamentStageEncodedId & "_table_overall?hp1=" & participantEncodedIds1 & "&hp2=" & participantEncodedIds2 & "&e=" & id

 

Переменные (параметры)🔧 для getTable, которые тебе нужны. Берутся из ссылки ss_1

9.1  Это имя переменной, в которой хранится название флешскора. Стандартное название sourcer. Может быть и другое!

Запиши или запомни его название.

image.thumb.png.18c2e55c989cd742d3595f5eba1a6f9a.png

Если переменной нет, а просто написано flashscore.com/ или ru/ Тогда запиши его название.

9.2   Имя турнирной таблицы. Которую мы восстанавливаем. Например здесь, в этом блоке, мы ремонтируем table_overall

image.thumb.png.a20f5f57d36a4538e6f78082ce49b134.png

9.3   Переменная, которая хранит в себе, ID текущего матча. Смотри в самый конец ссылки --->

image.thumb.png.de9b46ac6760550f85d0655eb21aee1f.png

Может быть имя id или match_id. Или другое, как у тебя.

10.   Всё запомнил или записал.

 

11. Исправляем первый ss_1

image.thumb.png.d20120c4e9c634fadd0236f76f8d8945.png

Каждый блок ss_1. Имеет своё НАЧАЛО и КОНЕЦ.

Начало - это наличие ссылки ss_1

Конец, это слово End If. Или Начало следующего блока ss_1.

Тебе нужно найти разрыв между ними.

 

12. И в конце каждого ss_1. Вызвать getTable. И передать ей переменные (параметры) 9.1, 9.2, 9.3

getTable(   ID матча,     название флешскора,     название турнирной таблицы   )

ранее, ты их записал. Поэтому проблем с поиском не будет.

Вызов getTable. Копируешь код целиком и вставляешь между концом и началом следующего ss_1

Это нужно вставить в разрыв.

b1 = 2
table_overall = getTable(id, sourcer, "table_overall")
For Each submatches In table_overall
        If IsEmpty(submatches) Then Exit For
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(0)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(3)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(6)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(9)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(12)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(15)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(18)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(19)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(25)
        b1 = b1 + 1
Next submatches

Вот так, должно, выглядеть:

image.thumb.png.8065a6ec92c47edfc18d2459a339bcdb.png

 

13. СМОТРИ внимательно! На скрине, я отметил, что должно совпадать с оригиналом. В точности, как в старом коде, который там есть.

image.thumb.png.70736ca88b73d30ed6c93b8785895806.png

1. Имя листа.

2. Имя ячеек.

3. Индексы.

Всё, должно совпадать на 100%

Ты сам, смотришь и проверяешь.

Если Имя листа другое у тебя. Ты меняешь на своё имя.

Если Индексов, меньше, лишние убираешь.

14. Первый блок ss_1 ты починил. МОЛОДЕЦ👍

15. Далее, все остальные ss_1. Ремонтируются аналогично. Первому.

Например, ты идёшь дальше.

И встретил такой блок ss_1. Он отвечает за загрузку таблицы ТБ 2,5. Для домашней команды. Имя over_under_home.

image.thumb.png.fdb3888588550066bc6db509b75601ae.png

Здесь, имя листа, имя ячеек и индексы другие и их меньше. Как быть?

Ваш новый код, должен быть таким!

Количество индексов, уменьшаем. Пишем другое имя листа. И ячейки тоже меняем.

В вызове меняем имя таблицы на over_under_home.

image.thumb.png.c38ec4363e8d23e60f3f9c89dffb0082.png

Вроде бы ВСЁ!😉 Для людей опытных напишу, коротко. Наша задача убрать полностью старый код и заменить на новый. А так как ячейки и имя листа, остаются теми же. То в новом коде, нам нужно. Просто прописать их имена и всё. Я оставил, новичкам старый код, чтобы им было легче, а то если, ещё и удалять просить... То можно совсем потеряться и запутаться😅 Кто умеет смотреть скрытые листы и ставить на стоп код, проверьте обязательно, заполнение таблиц на правильность. Мало ли...🧐

 

 

В какой версии микрософта это лучше делать? в 16 чет не запускается vb

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485894
Поделиться на другие сайты

55 минут назад, Shurik91 сказал:

Итак😅, ПОЧТИ УНИВЕРСАЛЬНАЯ ИНСТРУКЦИЯ v. 01.08.2024📎. Чтобы отремонтировать свою любимую таблицу❤️.

В 70%, она должна сработать. Но бывают случаи, когда кто-то уже побывал в таблице или таблица, написана с некоторыми отличиями.

Тогда нужно, повнимательнее быть и проверять, что меняете и где?

Думаю, кто не справится сам. Сможет здесь попросить, кого-то помочь или подсказать.

РЕШЕНИЕ✔️ оцениваю как СЛОЖНО, но возможно, главное захотеть👌

постарался максимально упростить инструкцию, чтобы у всех была возможность, попробовать самостоятельно сделать ремонт или помогать другим. Так как таблиц очень много.

ПОЕХАЛИ✍️

1.       В отдельный новый модуль.

2.       Скопируй и вставь, функцию getTable. Внутри ничего не меняй. Она универсальная.

Мы будем вызывать её далее, для загрузки нужных таблиц.

3.       Обязательно удали строку Option Explicit. Которая появится в новом модуле.

image.thumb.png.65f10883bf8d91d446cfde428ec6795d.png

Код функции getTable:

Function getTable(id, sourcer, table_name)
    Dim table(35) As Variant
    Dim game(25) As Variant
    
    Select Case table_name:
        Case "table_overall": table_index = 1: my_temper = "0"
        Case "table_home": table_index = 2: my_temper = "0"
        Case "table_away": table_index = 3: my_temper = "0"
        Case "form_overall": table_index = 5: my_temper = "0"
        Case "form_home": table_index = 8: my_temper = "0"
        Case "form_away": table_index = 9: my_temper = "0"
        Case "over_under_overall": table_index = 6: my_temper = "2.5"
        Case "over_under_home": table_index = 17: my_temper = "2.5"
        Case "over_under_away": table_index = 18: my_temper = "2.5"
    End Select
    
    t = 0
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "https://d." & sourcer & "x/feed/df_to_1_" & id & "_" & table_index, False
    objHttp.setRequestHeader "X-Fsign", "SW9D1eZo"
    objHttp.send
    fs_input = objHttp.responseText
    fs_rows = Split(fs_input, "¬~")
    fs_rows_len = UBound(fs_rows) - LBound(fs_rows)
    For i = 0 To fs_rows_len - 1
        fs_row = Split(fs_rows(i), "¬")
        fs_row_len = UBound(fs_row) - LBound(fs_row)
        fs_index = Split(fs_row(0), ChrW(&HF7))
        If IsArray(fs_index) Then
            fs_index_name = fs_index(0)
            fs_index_value = fs_index(1)
        End If
        If fs_index_name = "TR" And temper = True Then
            Erase game
            For j = 0 To fs_row_len
                fs_row_parts = Split(fs_row(j), ChrW(&HF7))
                Select Case fs_row_parts(0):
                    Case "TR": game(0) = fs_row_parts(1)
                    Case "TN": game(3) = fs_row_parts(1)
                    Case "TM":
                        f = fs_row_parts(1)
                        game(6) = f
                    Case "TWR", "OUO": game(9) = fs_row_parts(1)
                    Case "TDR", "OUU": game(12) = fs_row_parts(1)
                    Case "TLR": If IsEmpty(game(15)) Then game(15) = fs_row_parts(1)
                    Case "TG":
                        gols = Split(fs_row_parts(1), ":")
                        If IsEmpty(game(15)) Then game(15) = gols(0)
                        game(16) = gols(1)
                        game(18) = gols(0)
                        game(19) = gols(1)
                    Case "TP": game(25) = fs_row_parts(1)
                End Select
                    
            Next j
            If table_index = 5 And f < 5 Then GoTo next_item
            If t > 35 Then GoTo return_table
            table(t) = game
            t = t + 1
        ElseIf fs_index_name = "ETI" Then
            temper = False
            If fs_index_value = my_temper Then temper = True
        End If
next_item:
    Next i
return_table:
    getTable = table
End Function

       

4.       Далее, нужно найти модуль👁️ в твоей таблице, в котором находятся участки кода с ошибками🐛

Они все, включают в себя ссылку, с приставкой ss_1

Можно в поиск вбить, это ключевое слово и поискать по модулям.

Приблизительно, они выглядят так. Блоки с кодом. Кто пользовался старыми инструкциями по ремонту от меня, должен их знать и помнить.

image.thumb.png.87b572be664bd800d96835f11247e81e.png

 

 

6.    Когда ты обнаружил строку ss_1. Убедись, что она ПЕРВАЯ! Их может быть несколько (2, 3, 6)

Мы будем исправлять все ss_1. Начиная с ПЕРВОЙ.

Не ссылки исправлять, а добавлять новый рабочий код. В этих местах.

7.       Если ты сюда добрался, то ты в НАЧАЛЕ ПУТИ😅

8.       Теперь из ПЕРВОЙ ссылки ss_1. В твоей таблице. Нам нужно узнать, имена переменных для запуска функции getTable.

Приблизительно ссылка ss_1, выглядит так:

https://d." & sourcer & "x/feed/ss_1_" & tournamentEncodedId & "_" & tournamentStageEncodedId & "_table_overall?hp1=" & participantEncodedIds1 & "&hp2=" & participantEncodedIds2 & "&e=" & id

 

Переменные (параметры)🔧 для getTable, которые тебе нужны. Берутся из ссылки ss_1

9.1  Это имя переменной, в которой хранится название флешскора. Стандартное название sourcer. Может быть и другое!

Запиши или запомни его название.

image.thumb.png.18c2e55c989cd742d3595f5eba1a6f9a.png

Если переменной нет, а просто написано flashscore.com/ или ru/ Тогда запиши его название.

9.2   Имя турнирной таблицы. Которую мы восстанавливаем. Например здесь, в этом блоке, мы ремонтируем table_overall

image.thumb.png.a20f5f57d36a4538e6f78082ce49b134.png

9.3   Переменная, которая хранит в себе, ID текущего матча. Смотри в самый конец ссылки --->

image.thumb.png.de9b46ac6760550f85d0655eb21aee1f.png

Может быть имя id или match_id. Или другое, как у тебя.

10.   Всё запомнил или записал.

 

11. Исправляем первый ss_1

image.thumb.png.d20120c4e9c634fadd0236f76f8d8945.png

Каждый блок ss_1. Имеет своё НАЧАЛО и КОНЕЦ.

Начало - это наличие ссылки ss_1

Конец, это слово End If. Или Начало следующего блока ss_1.

Тебе нужно найти разрыв между ними.

 

12. И в конце каждого ss_1. Вызвать getTable. И передать ей переменные (параметры) 9.1, 9.2, 9.3

getTable(   ID матча,     название флешскора,     название турнирной таблицы   )

ранее, ты их записал. Поэтому проблем с поиском не будет.

Вызов getTable. Копируешь код целиком и вставляешь между концом и началом следующего ss_1

Это нужно вставить в разрыв.

b1 = 2
table_overall = getTable(id, sourcer, "table_overall")
For Each submatches In table_overall
        If IsEmpty(submatches) Then Exit For
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(0)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(3)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(6)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(9)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(12)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(15)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(18)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(19)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(25)
        b1 = b1 + 1
Next submatches

Вот так, должно, выглядеть:

image.thumb.png.8065a6ec92c47edfc18d2459a339bcdb.png

 

13. СМОТРИ внимательно! На скрине, я отметил, что должно совпадать с оригиналом. В точности, как в старом коде, который там есть.

image.thumb.png.70736ca88b73d30ed6c93b8785895806.png

1. Имя листа.

2. Имя ячеек.

3. Индексы.

Всё, должно совпадать на 100%

Ты сам, смотришь и проверяешь.

Если Имя листа другое у тебя. Ты меняешь на своё имя.

Если Индексов, меньше, лишние убираешь.

14. Первый блок ss_1 ты починил. МОЛОДЕЦ👍

15. Далее, все остальные ss_1. Ремонтируются аналогично. Первому.

Например, ты идёшь дальше.

И встретил такой блок ss_1. Он отвечает за загрузку таблицы ТБ 2,5. Для домашней команды. Имя over_under_home.

image.thumb.png.fdb3888588550066bc6db509b75601ae.png

Здесь, имя листа, имя ячеек и индексы другие и их меньше. Как быть?

Ваш новый код, должен быть таким!

Количество индексов, уменьшаем. Пишем другое имя листа. И ячейки тоже меняем.

В вызове меняем имя таблицы на over_under_home.

image.thumb.png.c38ec4363e8d23e60f3f9c89dffb0082.png

Вроде бы ВСЁ!😉 Для людей опытных напишу, коротко. Наша задача убрать полностью старый код и заменить на новый. А так как ячейки и имя листа, остаются теми же. То в новом коде, нам нужно. Просто прописать их имена и всё. Я оставил, новичкам старый код, чтобы им было легче, а то если, ещё и удалять просить... То можно совсем потеряться и запутаться😅 Кто умеет смотреть скрытые листы и ставить на стоп код, проверьте обязательно, заполнение таблиц на правильность. Мало ли...🧐

 

 

Наркоманы

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485895
Поделиться на другие сайты

работает таблица, даже ни чего не исправлял...

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485896
Поделиться на другие сайты

Здесь я бессилен)) думаю как и 70% каперов,ничего тут не понимаю в этих кодах,ошибках,новых добавлений....увы

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485897
Поделиться на другие сайты

Работает.По инструкции сделал,хотя я ноль в этой теме.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485898
Поделиться на другие сайты

1 час назад, Shurik91 сказал:

Итак😅, ПОЧТИ УНИВЕРСАЛЬНАЯ ИНСТРУКЦИЯ v. 01.08.2024📎. Чтобы отремонтировать свою любимую таблицу❤️.

В 70%, она должна сработать. Но бывают случаи, когда кто-то уже побывал в таблице или таблица, написана с некоторыми отличиями.

Тогда нужно, повнимательнее быть и проверять, что меняете и где?

Думаю, кто не справится сам. Сможет здесь попросить, кого-то помочь или подсказать.

РЕШЕНИЕ✔️ оцениваю как СЛОЖНО, но возможно, главное захотеть👌

постарался максимально упростить инструкцию, чтобы у всех была возможность, попробовать самостоятельно сделать ремонт или помогать другим. Так как таблиц очень много.

ПОЕХАЛИ✍️

1.       В отдельный новый модуль.

2.       Скопируй и вставь, функцию getTable. Внутри ничего не меняй. Она универсальная.

Мы будем вызывать её далее, для загрузки нужных таблиц.

3.       Обязательно удали строку Option Explicit. Которая появится в новом модуле.

image.thumb.png.65f10883bf8d91d446cfde428ec6795d.png

Код функции getTable:

Function getTable(id, sourcer, table_name)
    Dim table(35) As Variant
    Dim game(25) As Variant
    
    Select Case table_name:
        Case "table_overall": table_index = 1: my_temper = "0"
        Case "table_home": table_index = 2: my_temper = "0"
        Case "table_away": table_index = 3: my_temper = "0"
        Case "form_overall": table_index = 5: my_temper = "0"
        Case "form_home": table_index = 8: my_temper = "0"
        Case "form_away": table_index = 9: my_temper = "0"
        Case "over_under_overall": table_index = 6: my_temper = "2.5"
        Case "over_under_home": table_index = 17: my_temper = "2.5"
        Case "over_under_away": table_index = 18: my_temper = "2.5"
    End Select
    
    t = 0
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "https://d." & sourcer & "x/feed/df_to_1_" & id & "_" & table_index, False
    objHttp.setRequestHeader "X-Fsign", "SW9D1eZo"
    objHttp.send
    fs_input = objHttp.responseText
    fs_rows = Split(fs_input, "¬~")
    fs_rows_len = UBound(fs_rows) - LBound(fs_rows)
    For i = 0 To fs_rows_len - 1
        fs_row = Split(fs_rows(i), "¬")
        fs_row_len = UBound(fs_row) - LBound(fs_row)
        fs_index = Split(fs_row(0), ChrW(&HF7))
        If IsArray(fs_index) Then
            fs_index_name = fs_index(0)
            fs_index_value = fs_index(1)
        End If
        If fs_index_name = "TR" And temper = True Then
            Erase game
            For j = 0 To fs_row_len
                fs_row_parts = Split(fs_row(j), ChrW(&HF7))
                Select Case fs_row_parts(0):
                    Case "TR": game(0) = fs_row_parts(1)
                    Case "TN": game(3) = fs_row_parts(1)
                    Case "TM":
                        f = fs_row_parts(1)
                        game(6) = f
                    Case "TWR", "OUO": game(9) = fs_row_parts(1)
                    Case "TDR", "OUU": game(12) = fs_row_parts(1)
                    Case "TLR": If IsEmpty(game(15)) Then game(15) = fs_row_parts(1)
                    Case "TG":
                        gols = Split(fs_row_parts(1), ":")
                        If IsEmpty(game(15)) Then game(15) = gols(0)
                        game(16) = gols(1)
                        game(18) = gols(0)
                        game(19) = gols(1)
                    Case "TP": game(25) = fs_row_parts(1)
                End Select
                    
            Next j
            If table_index = 5 And f < 5 Then GoTo next_item
            If t > 35 Then GoTo return_table
            table(t) = game
            t = t + 1
        ElseIf fs_index_name = "ETI" Then
            temper = False
            If fs_index_value = my_temper Then temper = True
        End If
next_item:
    Next i
return_table:
    getTable = table
End Function

       

4.       Далее, нужно найти модуль👁️ в твоей таблице, в котором находятся участки кода с ошибками🐛

Они все, включают в себя ссылку, с приставкой ss_1

Можно в поиск вбить, это ключевое слово и поискать по модулям.

Приблизительно, они выглядят так. Блоки с кодом. Кто пользовался старыми инструкциями по ремонту от меня, должен их знать и помнить.

image.thumb.png.87b572be664bd800d96835f11247e81e.png

 

 

6.    Когда ты обнаружил строку ss_1. Убедись, что она ПЕРВАЯ! Их может быть несколько (2, 3, 6)

Мы будем исправлять все ss_1. Начиная с ПЕРВОЙ.

Не ссылки исправлять, а добавлять новый рабочий код. В этих местах.

7.       Если ты сюда добрался, то ты в НАЧАЛЕ ПУТИ😅

8.       Теперь из ПЕРВОЙ ссылки ss_1. В твоей таблице. Нам нужно узнать, имена переменных для запуска функции getTable.

Приблизительно ссылка ss_1, выглядит так:

https://d." & sourcer & "x/feed/ss_1_" & tournamentEncodedId & "_" & tournamentStageEncodedId & "_table_overall?hp1=" & participantEncodedIds1 & "&hp2=" & participantEncodedIds2 & "&e=" & id

 

Переменные (параметры)🔧 для getTable, которые тебе нужны. Берутся из ссылки ss_1

9.1  Это имя переменной, в которой хранится название флешскора. Стандартное название sourcer. Может быть и другое!

Запиши или запомни его название.

image.thumb.png.18c2e55c989cd742d3595f5eba1a6f9a.png

Если переменной нет, а просто написано flashscore.com/ или ru/ Тогда запиши его название.

9.2   Имя турнирной таблицы. Которую мы восстанавливаем. Например здесь, в этом блоке, мы ремонтируем table_overall

image.thumb.png.a20f5f57d36a4538e6f78082ce49b134.png

9.3   Переменная, которая хранит в себе, ID текущего матча. Смотри в самый конец ссылки --->

image.thumb.png.de9b46ac6760550f85d0655eb21aee1f.png

Может быть имя id или match_id. Или другое, как у тебя.

10.   Всё запомнил или записал.

 

11. Исправляем первый ss_1

image.thumb.png.d20120c4e9c634fadd0236f76f8d8945.png

Каждый блок ss_1. Имеет своё НАЧАЛО и КОНЕЦ.

Начало - это наличие ссылки ss_1

Конец, это слово End If. Или Начало следующего блока ss_1.

Тебе нужно найти разрыв между ними.

 

12. И в конце каждого ss_1. Вызвать getTable. И передать ей переменные (параметры) 9.1, 9.2, 9.3

getTable(   ID матча,     название флешскора,     название турнирной таблицы   )

ранее, ты их записал. Поэтому проблем с поиском не будет.

Вызов getTable. Копируешь код целиком и вставляешь между концом и началом следующего ss_1

Это нужно вставить в разрыв.

b1 = 2
table_overall = getTable(id, sourcer, "table_overall")
For Each submatches In table_overall
        If IsEmpty(submatches) Then Exit For
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(0)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(3)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(6)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(9)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(12)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(15)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(18)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(19)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(25)
        b1 = b1 + 1
Next submatches

Вот так, должно, выглядеть:

image.thumb.png.8065a6ec92c47edfc18d2459a339bcdb.png

 

13. СМОТРИ внимательно! На скрине, я отметил, что должно совпадать с оригиналом. В точности, как в старом коде, который там есть.

image.thumb.png.70736ca88b73d30ed6c93b8785895806.png

1. Имя листа.

2. Имя ячеек.

3. Индексы.

Всё, должно совпадать на 100%

Ты сам, смотришь и проверяешь.

Если Имя листа другое у тебя. Ты меняешь на своё имя.

Если Индексов, меньше, лишние убираешь.

14. Первый блок ss_1 ты починил. МОЛОДЕЦ👍

15. Далее, все остальные ss_1. Ремонтируются аналогично. Первому.

Например, ты идёшь дальше.

И встретил такой блок ss_1. Он отвечает за загрузку таблицы ТБ 2,5. Для домашней команды. Имя over_under_home.

image.thumb.png.fdb3888588550066bc6db509b75601ae.png

Здесь, имя листа, имя ячеек и индексы другие и их меньше. Как быть?

Ваш новый код, должен быть таким!

Количество индексов, уменьшаем. Пишем другое имя листа. И ячейки тоже меняем.

В вызове меняем имя таблицы на over_under_home.

image.thumb.png.c38ec4363e8d23e60f3f9c89dffb0082.png

Вроде бы ВСЁ!😉 Для людей опытных напишу, коротко. Наша задача убрать полностью старый код и заменить на новый. А так как ячейки и имя листа, остаются теми же. То в новом коде, нам нужно. Просто прописать их имена и всё. Я оставил, новичкам старый код, чтобы им было легче, а то если, ещё и удалять просить... То можно совсем потеряться и запутаться😅 Кто умеет смотреть скрытые листы и ставить на стоп код, проверьте обязательно, заполнение таблиц на правильность. Мало ли...🧐

 

 

если не сложно можно видео снять?я даже не понял где и что  находиться

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485899
Поделиться на другие сайты

1 час назад, Shurik91 сказал:

Итак😅, ПОЧТИ УНИВЕРСАЛЬНАЯ ИНСТРУКЦИЯ v. 01.08.2024📎. Чтобы отремонтировать свою любимую таблицу❤️.

В 70%, она должна сработать. Но бывают случаи, когда кто-то уже побывал в таблице или таблица, написана с некоторыми отличиями.

Тогда нужно, повнимательнее быть и проверять, что меняете и где?

Думаю, кто не справится сам. Сможет здесь попросить, кого-то помочь или подсказать.

РЕШЕНИЕ✔️ оцениваю как СЛОЖНО, но возможно, главное захотеть👌

постарался максимально упростить инструкцию, чтобы у всех была возможность, попробовать самостоятельно сделать ремонт или помогать другим. Так как таблиц очень много.

ПОЕХАЛИ✍️

1.       В отдельный новый модуль.

2.       Скопируй и вставь, функцию getTable. Внутри ничего не меняй. Она универсальная.

Мы будем вызывать её далее, для загрузки нужных таблиц.

3.       Обязательно удали строку Option Explicit. Которая появится в новом модуле.

image.thumb.png.65f10883bf8d91d446cfde428ec6795d.png

Код функции getTable:

Function getTable(id, sourcer, table_name)
    Dim table(35) As Variant
    Dim game(25) As Variant
    
    Select Case table_name:
        Case "table_overall": table_index = 1: my_temper = "0"
        Case "table_home": table_index = 2: my_temper = "0"
        Case "table_away": table_index = 3: my_temper = "0"
        Case "form_overall": table_index = 5: my_temper = "0"
        Case "form_home": table_index = 8: my_temper = "0"
        Case "form_away": table_index = 9: my_temper = "0"
        Case "over_under_overall": table_index = 6: my_temper = "2.5"
        Case "over_under_home": table_index = 17: my_temper = "2.5"
        Case "over_under_away": table_index = 18: my_temper = "2.5"
    End Select
    
    t = 0
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "https://d." & sourcer & "x/feed/df_to_1_" & id & "_" & table_index, False
    objHttp.setRequestHeader "X-Fsign", "SW9D1eZo"
    objHttp.send
    fs_input = objHttp.responseText
    fs_rows = Split(fs_input, "¬~")
    fs_rows_len = UBound(fs_rows) - LBound(fs_rows)
    For i = 0 To fs_rows_len - 1
        fs_row = Split(fs_rows(i), "¬")
        fs_row_len = UBound(fs_row) - LBound(fs_row)
        fs_index = Split(fs_row(0), ChrW(&HF7))
        If IsArray(fs_index) Then
            fs_index_name = fs_index(0)
            fs_index_value = fs_index(1)
        End If
        If fs_index_name = "TR" And temper = True Then
            Erase game
            For j = 0 To fs_row_len
                fs_row_parts = Split(fs_row(j), ChrW(&HF7))
                Select Case fs_row_parts(0):
                    Case "TR": game(0) = fs_row_parts(1)
                    Case "TN": game(3) = fs_row_parts(1)
                    Case "TM":
                        f = fs_row_parts(1)
                        game(6) = f
                    Case "TWR", "OUO": game(9) = fs_row_parts(1)
                    Case "TDR", "OUU": game(12) = fs_row_parts(1)
                    Case "TLR": If IsEmpty(game(15)) Then game(15) = fs_row_parts(1)
                    Case "TG":
                        gols = Split(fs_row_parts(1), ":")
                        If IsEmpty(game(15)) Then game(15) = gols(0)
                        game(16) = gols(1)
                        game(18) = gols(0)
                        game(19) = gols(1)
                    Case "TP": game(25) = fs_row_parts(1)
                End Select
                    
            Next j
            If table_index = 5 And f < 5 Then GoTo next_item
            If t > 35 Then GoTo return_table
            table(t) = game
            t = t + 1
        ElseIf fs_index_name = "ETI" Then
            temper = False
            If fs_index_value = my_temper Then temper = True
        End If
next_item:
    Next i
return_table:
    getTable = table
End Function

       

4.       Далее, нужно найти модуль👁️ в твоей таблице, в котором находятся участки кода с ошибками🐛

Они все, включают в себя ссылку, с приставкой ss_1

Можно в поиск вбить, это ключевое слово и поискать по модулям.

Приблизительно, они выглядят так. Блоки с кодом. Кто пользовался старыми инструкциями по ремонту от меня, должен их знать и помнить.

image.thumb.png.87b572be664bd800d96835f11247e81e.png

 

 

6.    Когда ты обнаружил строку ss_1. Убедись, что она ПЕРВАЯ! Их может быть несколько (2, 3, 6)

Мы будем исправлять все ss_1. Начиная с ПЕРВОЙ.

Не ссылки исправлять, а добавлять новый рабочий код. В этих местах.

7.       Если ты сюда добрался, то ты в НАЧАЛЕ ПУТИ😅

8.       Теперь из ПЕРВОЙ ссылки ss_1. В твоей таблице. Нам нужно узнать, имена переменных для запуска функции getTable.

Приблизительно ссылка ss_1, выглядит так:

https://d." & sourcer & "x/feed/ss_1_" & tournamentEncodedId & "_" & tournamentStageEncodedId & "_table_overall?hp1=" & participantEncodedIds1 & "&hp2=" & participantEncodedIds2 & "&e=" & id

 

Переменные (параметры)🔧 для getTable, которые тебе нужны. Берутся из ссылки ss_1

9.1  Это имя переменной, в которой хранится название флешскора. Стандартное название sourcer. Может быть и другое!

Запиши или запомни его название.

image.thumb.png.18c2e55c989cd742d3595f5eba1a6f9a.png

Если переменной нет, а просто написано flashscore.com/ или ru/ Тогда запиши его название.

9.2   Имя турнирной таблицы. Которую мы восстанавливаем. Например здесь, в этом блоке, мы ремонтируем table_overall

image.thumb.png.a20f5f57d36a4538e6f78082ce49b134.png

9.3   Переменная, которая хранит в себе, ID текущего матча. Смотри в самый конец ссылки --->

image.thumb.png.de9b46ac6760550f85d0655eb21aee1f.png

Может быть имя id или match_id. Или другое, как у тебя.

10.   Всё запомнил или записал.

 

11. Исправляем первый ss_1

image.thumb.png.d20120c4e9c634fadd0236f76f8d8945.png

Каждый блок ss_1. Имеет своё НАЧАЛО и КОНЕЦ.

Начало - это наличие ссылки ss_1

Конец, это слово End If. Или Начало следующего блока ss_1.

Тебе нужно найти разрыв между ними.

 

12. И в конце каждого ss_1. Вызвать getTable. И передать ей переменные (параметры) 9.1, 9.2, 9.3

getTable(   ID матча,     название флешскора,     название турнирной таблицы   )

ранее, ты их записал. Поэтому проблем с поиском не будет.

Вызов getTable. Копируешь код целиком и вставляешь между концом и началом следующего ss_1

Это нужно вставить в разрыв.

b1 = 2
table_overall = getTable(id, sourcer, "table_overall")
For Each submatches In table_overall
        If IsEmpty(submatches) Then Exit For
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(0)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(3)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(6)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(9)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(12)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(15)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(18)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(19)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(25)
        b1 = b1 + 1
Next submatches

Вот так, должно, выглядеть:

image.thumb.png.8065a6ec92c47edfc18d2459a339bcdb.png

 

13. СМОТРИ внимательно! На скрине, я отметил, что должно совпадать с оригиналом. В точности, как в старом коде, который там есть.

image.thumb.png.70736ca88b73d30ed6c93b8785895806.png

1. Имя листа.

2. Имя ячеек.

3. Индексы.

Всё, должно совпадать на 100%

Ты сам, смотришь и проверяешь.

Если Имя листа другое у тебя. Ты меняешь на своё имя.

Если Индексов, меньше, лишние убираешь.

14. Первый блок ss_1 ты починил. МОЛОДЕЦ👍

15. Далее, все остальные ss_1. Ремонтируются аналогично. Первому.

Например, ты идёшь дальше.

И встретил такой блок ss_1. Он отвечает за загрузку таблицы ТБ 2,5. Для домашней команды. Имя over_under_home.

image.thumb.png.fdb3888588550066bc6db509b75601ae.png

Здесь, имя листа, имя ячеек и индексы другие и их меньше. Как быть?

Ваш новый код, должен быть таким!

Количество индексов, уменьшаем. Пишем другое имя листа. И ячейки тоже меняем.

В вызове меняем имя таблицы на over_under_home.

image.thumb.png.c38ec4363e8d23e60f3f9c89dffb0082.png

Вроде бы ВСЁ!😉 Для людей опытных напишу, коротко. Наша задача убрать полностью старый код и заменить на новый. А так как ячейки и имя листа, остаются теми же. То в новом коде, нам нужно. Просто прописать их имена и всё. Я оставил, новичкам старый код, чтобы им было легче, а то если, ещё и удалять просить... То можно совсем потеряться и запутаться😅 Кто умеет смотреть скрытые листы и ставить на стоп код, проверьте обязательно, заполнение таблиц на правильность. Мало ли...🧐

 

 

Спасибо за ваш труд!! Работает.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485901
Поделиться на другие сайты

22 минуты назад, Adok сказал:

если не сложно можно видео снять?я даже не понял где и что  находиться

к сожалению, сейчас совсем мало свободного времени. Кто разобрался и желает, может снять. Я не против, а только ЗА.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485902
Поделиться на другие сайты

Всем добрый день!

Очень интересно. Но. Ничего не понятно.

Вот часть информации листа tInfoClass программы Proga_Farella_исправл_Mod_Sold, которую выкладывали вчера. Где тут значение из п. 9.2. инструкции, непонятно. Почему "End if" несколько штук и после какого вставлять и исправлять информацию, тоже не понятно.

I need help. Please.

 

 Set Games(i) = New Collection
        If GetFromSite("GET", "https://d." & opts.sourcer, "x/feed/ss_1_" & id & "_" & Stage_id & Srcs(i), response, "", opts.req) Then
            If dbg Then savetofile ThisWorkbook.Path & "\" & id & "_" & Stage_id & Srcs(i) & "_parse.html", response
            response = Replace(response, Chr(9), "")
            response = Replace(response, Chr(10), "")
            response = Replace(response, Chr(13), "")
            objRegExp.Pattern = pattr
            Dim rows
            rows = Split(response, "class=""table__row")
            If i > 5 Then Lasts(i) = -0.5
            If UBound(rows) > 0 Then
                Dim j
                For j = 1 To UBound(rows)
                    If InStr(1, rows(j), pretest, vbTextCompare) > 0 Then
                        If objRegExp.test(rows(j)) = True Then
                            Set omatches = objRegExp.Execute(rows(j))
                            
                            For Each m In omatches
                                
                                If i < 6 Then
                                    Lasts(i) = m.submatches(2)
                                Else
                                    If m.submatches(0) = 1 Then
                                        Lasts(i) = Lasts(i) + 1
                                    End If
                                End If
                                If (i < 3) Or (i > 2 And i < 6 And Lasts(i) = 5) Or (i > 5 And Lasts(i) = 2.5) Then
                                'rec = Array(m.submatches(0), m.submatches(3), m.submatches(6), m.submatches(9), m.submatches(12), m.submatches(15), m.submatches(18), m.submatches(19), m.submatches(22))
                                    If i < 6 Then
                                        rec = Array(m.submatches(0), m.submatches(1), m.submatches(2), m.submatches(3), m.submatches(4), m.submatches(5), m.submatches(6), m.submatches(7), m.submatches(8))
                                        If InStr(1, rec(8), "</a>") > 0 Then rec(8) = getbetween(">", "</a>", True)
                                    Else
                                        rec = Array(m.submatches(0), m.submatches(1), m.submatches(2), m.submatches(3), m.submatches(4), m.submatches(5), m.submatches(6))
                                    End If
                                    Games(i).Add rec
                                    If Games(i).Count >= 34 Then Exit For
                                Else
                                    If (i > 3 And i < 6) Or (i > 5 And Lasts(i) > 2.5) Then
                                        Exit For 'ýòî ñòðàííî äëÿ îâåððàë ôîðì âûõîäà èç öèêëà íåò à âîò äëÿ îñòàëüíûõ ôîðì âûõîä ïðè ñóáìàò÷(6)<>5 ñòîèò âûõîä èç öèêëà
                                    End If
                                End If
                            Next
                        Else
                            
                            If dbg Then
                                savetofile ThisWorkbook.Path & "\unparset_" & id & "_" & Stage_id & "_ROW(" & j & " ).html", rows(j)
                                Stop
                            End If
                        
                        End If
                    Else
                        If dbg Then
                            savetofile ThisWorkbook.Path & "\unparset_" & id & "_" & Stage_id & "_ROW(" & j & " ).html", rows(j)
                            Stop
                        End If
                    
                    End If
                Next
            Else
                Exit Function
            End If
        Else
            Exit Function
        End If
    Next

    Parse = True
End Function
 

 

Proga_Farella_исправл_Mod_Sold.xlsb

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485908
Поделиться на другие сайты

Народ, подскажите, где искать эти модули? Куда заходить? 

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485911
Поделиться на другие сайты

9 минут назад, VikTuk сказал:

Всем добрый день!

Очень интересно. Но. Ничего не понятно.

Вот часть информации листа tInfoClass программы Proga_Farella_исправл_Mod_Sold, которую выкладывали вчера. Где тут значение из п. 9.2. инструкции, непонятно. Почему "End if" несколько штук и после какого вставлять и исправлять информацию, тоже не понятно.

Таблица Farela, построена иначе, там не всё так просто, она исключение. Которое входит в 30% Нужно разбираться с ней отдельно.

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485912
Поделиться на другие сайты

кто умеет сделайте ремонт пожалуйста таблицы 

macbeth-v-3.1_08-2021.xlsb

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485913
Поделиться на другие сайты

1 минуту назад, MARYAN сказал:

кто умеет сделайте ремонт пожалуйста таблицы 

macbeth-v-3.1_08-2021.xlsb 266.9 kB · 0 загрузок

Умеет только автор инструкции)))

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485914
Поделиться на другие сайты

14 часов назад, YuriyNM сказал:

Neden yalan söylüyorsun, hiçbir şey işe yaramıyor

neden yalan söyleyeyim?

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485915
Поделиться на другие сайты

13 часов назад, Shurik91 сказал:

Итак😅, ПОЧТИ УНИВЕРСАЛЬНАЯ ИНСТРУКЦИЯ v. 01.08.2024📎. Чтобы отремонтировать свою любимую таблицу❤️.

В 70%, она должна сработать. Но бывают случаи, когда кто-то уже побывал в таблице или таблица, написана с некоторыми отличиями.

Тогда нужно, повнимательнее быть и проверять, что меняете и где?

Думаю, кто не справится сам. Сможет здесь попросить, кого-то помочь или подсказать.

РЕШЕНИЕ✔️ оцениваю как СЛОЖНО, но возможно, главное захотеть👌

постарался максимально упростить инструкцию, чтобы у всех была возможность, попробовать самостоятельно сделать ремонт или помогать другим. Так как таблиц очень много.

ПОЕХАЛИ✍️

1.       В отдельный новый модуль.

2.       Скопируй и вставь, функцию getTable. Внутри ничего не меняй. Она универсальная.

Мы будем вызывать её далее, для загрузки нужных таблиц.

3.       Обязательно удали строку Option Explicit. Которая появится в новом модуле.

image.thumb.png.65f10883bf8d91d446cfde428ec6795d.png

Код функции getTable:

Function getTable(id, sourcer, table_name)
    Dim table(35) As Variant
    Dim game(25) As Variant
    
    Select Case table_name:
        Case "table_overall": table_index = 1: my_temper = "0"
        Case "table_home": table_index = 2: my_temper = "0"
        Case "table_away": table_index = 3: my_temper = "0"
        Case "form_overall": table_index = 5: my_temper = "0"
        Case "form_home": table_index = 8: my_temper = "0"
        Case "form_away": table_index = 9: my_temper = "0"
        Case "over_under_overall": table_index = 6: my_temper = "2.5"
        Case "over_under_home": table_index = 17: my_temper = "2.5"
        Case "over_under_away": table_index = 18: my_temper = "2.5"
    End Select
    
    t = 0
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "https://d." & sourcer & "x/feed/df_to_1_" & id & "_" & table_index, False
    objHttp.setRequestHeader "X-Fsign", "SW9D1eZo"
    objHttp.send
    fs_input = objHttp.responseText
    fs_rows = Split(fs_input, "¬~")
    fs_rows_len = UBound(fs_rows) - LBound(fs_rows)
    For i = 0 To fs_rows_len - 1
        fs_row = Split(fs_rows(i), "¬")
        fs_row_len = UBound(fs_row) - LBound(fs_row)
        fs_index = Split(fs_row(0), ChrW(&HF7))
        If IsArray(fs_index) Then
            fs_index_name = fs_index(0)
            fs_index_value = fs_index(1)
        End If
        If fs_index_name = "TR" And temper = True Then
            Erase game
            For j = 0 To fs_row_len
                fs_row_parts = Split(fs_row(j), ChrW(&HF7))
                Select Case fs_row_parts(0):
                    Case "TR": game(0) = fs_row_parts(1)
                    Case "TN": game(3) = fs_row_parts(1)
                    Case "TM":
                        f = fs_row_parts(1)
                        game(6) = f
                    Case "TWR", "OUO": game(9) = fs_row_parts(1)
                    Case "TDR", "OUU": game(12) = fs_row_parts(1)
                    Case "TLR": If IsEmpty(game(15)) Then game(15) = fs_row_parts(1)
                    Case "TG":
                        gols = Split(fs_row_parts(1), ":")
                        If IsEmpty(game(15)) Then game(15) = gols(0)
                        game(16) = gols(1)
                        game(18) = gols(0)
                        game(19) = gols(1)
                    Case "TP": game(25) = fs_row_parts(1)
                End Select
                    
            Next j
            If table_index = 5 And f < 5 Then GoTo next_item
            If t > 35 Then GoTo return_table
            table(t) = game
            t = t + 1
        ElseIf fs_index_name = "ETI" Then
            temper = False
            If fs_index_value = my_temper Then temper = True
        End If
next_item:
    Next i
return_table:
    getTable = table
End Function

       

4.       Далее, нужно найти модуль👁️ в твоей таблице, в котором находятся участки кода с ошибками🐛

Они все, включают в себя ссылку, с приставкой ss_1

Можно в поиск вбить, это ключевое слово и поискать по модулям.

Приблизительно, они выглядят так. Блоки с кодом. Кто пользовался старыми инструкциями по ремонту от меня, должен их знать и помнить.

image.thumb.png.87b572be664bd800d96835f11247e81e.png

 

 

6.    Когда ты обнаружил строку ss_1. Убедись, что она ПЕРВАЯ! Их может быть несколько (2, 3, 6)

Мы будем исправлять все ss_1. Начиная с ПЕРВОЙ.

Не ссылки исправлять, а добавлять новый рабочий код. В этих местах.

7.       Если ты сюда добрался, то ты в НАЧАЛЕ ПУТИ😅

8.       Теперь из ПЕРВОЙ ссылки ss_1. В твоей таблице. Нам нужно узнать, имена переменных для запуска функции getTable.

Приблизительно ссылка ss_1, выглядит так:

https://d." & sourcer & "x/feed/ss_1_" & tournamentEncodedId & "_" & tournamentStageEncodedId & "_table_overall?hp1=" & participantEncodedIds1 & "&hp2=" & participantEncodedIds2 & "&e=" & id

 

Переменные (параметры)🔧 для getTable, которые тебе нужны. Берутся из ссылки ss_1

9.1  Это имя переменной, в которой хранится название флешскора. Стандартное название sourcer. Может быть и другое!

Запиши или запомни его название.

image.thumb.png.18c2e55c989cd742d3595f5eba1a6f9a.png

Если переменной нет, а просто написано flashscore.com/ или ru/ Тогда запиши его название.

9.2   Имя турнирной таблицы. Которую мы восстанавливаем. Например здесь, в этом блоке, мы ремонтируем table_overall

image.thumb.png.a20f5f57d36a4538e6f78082ce49b134.png

9.3   Переменная, которая хранит в себе, ID текущего матча. Смотри в самый конец ссылки --->

image.thumb.png.de9b46ac6760550f85d0655eb21aee1f.png

Может быть имя id или match_id. Или другое, как у тебя.

10.   Всё запомнил или записал.

 

11. Исправляем первый ss_1

image.thumb.png.d20120c4e9c634fadd0236f76f8d8945.png

Каждый блок ss_1. Имеет своё НАЧАЛО и КОНЕЦ.

Начало - это наличие ссылки ss_1

Конец, это слово End If. Или Начало следующего блока ss_1.

Тебе нужно найти разрыв между ними.

 

12. И в конце каждого ss_1. Вызвать getTable. И передать ей переменные (параметры) 9.1, 9.2, 9.3

getTable(   ID матча,     название флешскора,     название турнирной таблицы   )

ранее, ты их записал. Поэтому проблем с поиском не будет.

Вызов getTable. Копируешь код целиком и вставляешь между концом и началом следующего ss_1

Это нужно вставить в разрыв.

b1 = 2
table_overall = getTable(id, sourcer, "table_overall")
For Each submatches In table_overall
        If IsEmpty(submatches) Then Exit For
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(0)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(3)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(6)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(9)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(12)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(15)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(18)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(19)
        ThisWorkbook.Sheets("имя твоего листа").Range("имя ячейки" & b1).Value = submatches(25)
        b1 = b1 + 1
Next submatches

Вот так, должно, выглядеть:

image.thumb.png.8065a6ec92c47edfc18d2459a339bcdb.png

 

13. СМОТРИ внимательно! На скрине, я отметил, что должно совпадать с оригиналом. В точности, как в старом коде, который там есть.

image.thumb.png.70736ca88b73d30ed6c93b8785895806.png

1. Имя листа.

2. Имя ячеек.

3. Индексы.

Всё, должно совпадать на 100%

Ты сам, смотришь и проверяешь.

Если Имя листа другое у тебя. Ты меняешь на своё имя.

Если Индексов, меньше, лишние убираешь.

14. Первый блок ss_1 ты починил. МОЛОДЕЦ👍

15. Далее, все остальные ss_1. Ремонтируются аналогично. Первому.

Например, ты идёшь дальше.

И встретил такой блок ss_1. Он отвечает за загрузку таблицы ТБ 2,5. Для домашней команды. Имя over_under_home.

image.thumb.png.fdb3888588550066bc6db509b75601ae.png

Здесь, имя листа, имя ячеек и индексы другие и их меньше. Как быть?

Ваш новый код, должен быть таким!

Количество индексов, уменьшаем. Пишем другое имя листа. И ячейки тоже меняем.

В вызове меняем имя таблицы на over_under_home.

image.thumb.png.c38ec4363e8d23e60f3f9c89dffb0082.png

Вроде бы ВСЁ!😉 Для людей опытных напишу, коротко. Наша задача убрать полностью старый код и заменить на новый. А так как ячейки и имя листа, остаются теми же. То в новом коде, нам нужно. Просто прописать их имена и всё. Я оставил, новичкам старый код, чтобы им было легче, а то если, ещё и удалять просить... То можно совсем потеряться и запутаться😅 Кто умеет смотреть скрытые листы и ставить на стоп код, проверьте обязательно, заполнение таблиц на правильность. Мало ли...🧐

 

 

сколько надо потратить времяни чтобы столько написать, ролик снять 10 минут

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485916
Поделиться на другие сайты

1 час назад, виталий морозов сказал:

сколько надо потратить времяни чтобы столько написать, ролик снять 10 минут

Вообще в чем смысл вообще было это писать, слишком много возни. Не каждый сможет сделать. Ждем когда выложат готовые таблицы 🤥🤥 .

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485919
Поделиться на другие сайты

16 часов назад, Valera сказал:

Ты дятел? Я и написал что нет, не работает 

Извиняюсь.не тому написал,но не дятел конечно.но что то около этого😃

Ссылка на комментарий
https://brcbet.com/topic/68703-remont-tablits/page/65/#findComment-485920
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...