Здравствуйте! Загружаю файл на ftp с помощью следующего макроса: https://excelvba.ru/code/tools/FTP Периодически бывает такое, что файл не до конца загружается, подвисает на каком то случайном моменте и дальше не грузит. Размер файла 2.6мб, интернет йота 5мбит/сек. Обычно файл полностью загружается секунд за 10, но бывает подвиснет где то на 200кб и все, дальше очень медленно по несколько кб в минуту продвигается, и до конца не загружается все равно. Предполагаю, что проблема в интернете, но может быть что то еще на это влияет и есть способы исправить? Заранее спасибо за ответы!
Дмитрий Щербаков, сбросил кэш в ИЕ, добавил Ваши строчки, вроде работает, но не уверен, нужно потестировать пару дней (макрос скачивает около 40 файлов подряд, может что еще вылезет при таком количестве) Спасибо еще раз)
Дмитрий Щербаков, так эта строчка уже есть в коде: https://prnt.sc/jr2pxr - не помогает Файл, который нужно скачивать, может обновляться ежедневно, т.е. кэш категорически нельзя использовать для него даже на 5 минут
Вариант, но там последнее сообщение от 25 Дек 2017 без ответа висит без ответа. Подумал, здесь ответ найду быстрее, чем там, т.к. наверняка случай распространенный. Предполагаю, нужно добавить какой то заголовок, но какой?
Здравствуйте Скачиваю файлы следующим способом: http://excelvba.ru/code/DownloadFile Похоже файлы кэшируются и при ежедневном запуске макроса у некоторых файлов последняя дата создания и изменения висит по 2-3 недели без изменений, т.е. актуальный файл скачать не получается. Подскажите, пожалуйста, как это можно исправить? Сейчас макрос выглядит так: http://prntscr.com/jr2pxr Пробовал добавлять в него строчки заголовков, но не помогает
ZVI, теперь возникла проблема с датами при открытии файла... http://prntscr.com/iuzf2a в левом столбце были даты в формате "21 мар", "20 мар" и тд, а теперь просто цифры. Формат стоит "общий" там, где Вы писали его поставить. Можно ли как то и это поправить?
ZVI, и правда, там стоял формат "ДАТА", изменил на "Общий", буду тестировать. Макрос на открытие книги повесить не получится, т.к. листы запаролены. Надеюсь проблема была именно в этом. Спасибо!
Z написал: Пустого? Любого? Сначала запустить XL, а потом из него открыть? Вернуть настройки XL по умолчанию. Запустить через зажатый шифт - в безопасном режиме - есть разница? Отключить надстройки - включить надстройки...
Конкретного файла, не пустого. Открывается сразу файл двойным кликом по нему без предварительного запуска экселя. Надстроек никаких активных нет. Чаще всего проблема наблюдается, когда отключается электричество, и комп выключается. Но не всегда. При открытии файла никогда не восстанавливаем последнюю сохраненную копию. Попробовал сейчас следующее: 1) 20 раз открыл и закрыл файл без сохранения 2) 20 раз открыл и закрыл файл с сохранением 3) 20 раз открыл и завершил процесс экселя через диспетчер задач 4) 20 раз открыл через зажатый шифт и закрыл без сохранения Ни разу баг с потерей форматов словить не удалось. Но тем не менее за последнюю неделю баг дважды вылез в рабочем режиме. Т.е. я не понимаю как его умышленно отловить. Файл относительно большой и секретный, но могу очистить все ячейки на всех листах, т.к. запускать или редактировать ничего не нужно для обнаружения бага. Прикрепить файл?
Здравствуйте Периодически по какой-то причине при открытии файла слетает формат всех ячеек на всех листах на "ДАТА". Как часто это происходит не могу определить, то 1 раз из 5, то 1 раз из 30, как-то в случайном порядке. Приходится менять на "Общий" везде каждый раз. Винда 10, эксель 2013. Подскажите, пожалуйста, можно ли что-то с этим сделать?
Игорь, вроде как все корректно работает, даже быстрее стало за счет того, что макросу не приходится дожидаться завершения скрипта, а скрипт выполняется минуты 3. Спасибо!
Здравствуйте. При запуске макроса периодически выдается ошибка : Ошибка Run-time error '-2125463506 (8150002e)': Automation error При нажатии дебаг следующее: http://prntscr.com/i6j33n Макрос большой и выполняет много всего, минут 10 может выполняться, иногда и больше, если интернет тормозит. Ошибка вылазит где то 1 раз из 5-8, в остальные попытки ошибки нет. Подскажите, пожалуйста, как можно исправить?
Подскажите, пожалуйста, что и как нужно изменить в следующей функции, чтобы в результате в ячейке выводились так же значения через разделитель, но преобразованные через функцию ВПР(A2;$J$2:$K$3000;2;0)), где A2 это значения, которые получаются в данный момент. Сейчас функция объединяет в одну ячейку айди вот так: "1234;543;62324;643", а нужно, чтобы эти айди расшифровывались в названия, указанные в таблице J2:K3000. И таким образом получилось так: "красный;синий;зеленый;желтый".
Код
Function VLOOKUPCOUPLE(Table As Variant, SearchColumnNum As Integer, SearchValue As Variant, _
RezultColumnNum As Integer, Separator_ As String)
'Table - таблица, где ищем
'SearchColumnNum - столбец, где ищем
'SearchValue - данные, которые ищем
'RezultColumnNum - колонка, откуда берём результат
'Separator_ - разделитель, желательно вводить с пробелом в конце
Dim i As Integer
Select Case TypeName(Table)
Case "Range"
For i = 1 To Table.Rows.Count
If Table.Cells(i, SearchColumnNum) = SearchValue Then
If VLOOKUPCOUPLE <> "" Then
VLOOKUPCOUPLE = VLOOKUPCOUPLE & Separator_ & Table.Cells(i, RezultColumnNum)
Else
VLOOKUPCOUPLE = Table.Cells(i, RezultColumnNum)
End If
End If
Next i
Case "Variant()"
For i = 1 To UBound(Table)
If Table(i, SearchColumnNum) = SearchValue Then
If VLOOKUPCOUPLE <> "" Then
VLOOKUPCOUPLE = VLOOKUPCOUPLE & Separator_ & Table(i, RezultColumnNum)
Else
VLOOKUPCOUPLE = Table(i, RezultColumnNum)
End If
End If
Next i
End Select
If VLOOKUPCOUPLE = 0 Then VLOOKUPCOUPLE = ""
End Function
Догадываюсь, что нужно изменить в коде функции вот эту часть: VLOOKUPCOUPLE = Table.Cells(i, RezultColumnNum) Добавить ВПР(A2;$J$2:$K$3000;2;0)), где A2 это результат VLOOKUPCOUPLE И вроде даже как то так: i = VLOOKUP(i,$j$2:$k$3000,2,0), Но пока не получается, не понимаю куда именно вставлять
Юрий М написал:
А что Вы к ВПР пристали? ) Или нужно решение только с применением этой функции?
P.S. В последнем файле не понял про размеры: красный, синий, жёлтый... Я считал, что это цвет такой бывает ))
Юрий М, можно и без ВПР, но вроде с ВПР уже все работает, осталась небольшая деталь...Макросы не подойдут скорее всего, нужно, чтоб на лету работало. В файле тестовые значения, для наглядности.) Там могут быть написаны любые слова.)
Михаил С., На входе мы имеем таблицу с тремя столбцами. Первый - айди товара, второй - айди параметра, третий - айди значения параметра. То есть: товар 1; айди параметра "цвет"; айди значения параметра "красный" Выглядит это так: http://prntscr.com/b72j80 (в файле 300 тыс строк) Есть параметры, у которых всегда только одно значение, с ними все просто, но есть параметры, у которых много значений. Например: "отображение даты" - "число", "месяц", "день". Если у параметра несколько значений - они указываются каждый отдельной строкой. Есть таблица-расшифровка параметров. С ее помощью через ВПР мы переводим айди параметров в названия параметров: http://prntscr.com/b72k75 Необходимо преобразовать таблицу к следующему виду: http://prntscr.com/b72kk4. Чтобы каждый параметр был в ячейке, соответствующей строке модели и столбцу этого параметра. Если же у параметра несколько значений, они должны перечисляться в одной ячейке через ;. Затем это все будет импортироваться в базу. Через VLOOKUPCOUPLE удалось объединить айди одного параметра одной модели в одну ячейку: http://prntscr.com/b72m00 Далее необходимо эти айди расшифровать в названия параметров. Удалось это сделать, разбив объединенные айди в каждую ячейку: http://prntscr.com/b72mdh, и затем сцепив расшифрованные через ВПР значения: http://prntscr.com/b72msg Получается, сначала объединил в одну ячейку, затем разбил, чтоб расшифровать, и снова объединяю в одну. Неудобно, но работает. Осложняется тем, что для каждого такого параметра, у которого может быть несколько значений (а такие есть), необходимо выделять ячейки для разбиения, и затем обратно соединять в одну. Ну и пересчет дольше работает. Уверен, что эту расшифровку через ВПР можно включить в функцию VLOOKUPCOUPLE, чтоб в результате выполнения функции выводились уже преобразованные айди. Тогда не придется разбивать и соединять обратно. Код функции здесь: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=15638&TITLE_SEO=15638&MID=132... Какая часть кода отвечает за вывод результата, и как туда добавить ВПР - не знаю. Подскажите, пожалуйста. Вот формула, которую нужно добавить в функцию, чтоб преобразовать айди в названия: ВПР(A2;$J$2:$K$3000;2;0))
Михаил С., нашел вот такое решение: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=15638 Пока мучаюсь с ним. Объединить в одну ячейку получилось, но там загвоздка еще в том, что значения, которые объединяются - это айди, и их нужно через ВПР преобразовать в названия. А как запихнуть ВПР в эту формулу - пока не придумал.
Михаил С., подскажите, пожалуйста, можно ли допилить формулу, чтоб в случае обнаружения нескольких значений в третьем столбце входящих данных, соответствующих заданным условиям, они перечислялись через ; в конечной ячейке? Пример во вложении. В нем у товар3 присутствует 2 значения цвета. Их нужно перечислить через ; в одной ячейке.
Подскажите, пожалуйста, каким образом можно определить адрес двух ячеек в формуле и в этой же формуле задать ими диапазон для ВПР? Схема следующая: необходимо определить нижнюю и верхнюю границу диапазона, и затем в этом диапазон с помощью ВПР подтянуть соответствующее значение.
Криво объясняю, поэтому во вложении пример. На входе есть список товаров, у каждого из которых есть определенные характеристики (вес, размер, цвет) и их значения. На выходе необходимо упорядочить значения по столбцам по каждому товару (в правой части). Сейчас для этого в желтую ячейку указывается название характеристики, ниже через поискпоз определяются границы для ВПР, и подставляются в формулу в правой части. Как можно автоматизировать процесс определения этого диапазона для ВПР? Рылся, но так и не нашел подходящую формулу...Ни ячейка(), ни адрес() не помогают, либо я что-то упускаю.
Jungl, в идеале добавить сюда возможность отправки только не пустых ячеек в выделенном диапазоне. То есть, задаем диапазон, например А1:С10, а заполнены у нас только первые 4 строки, и при запуске макроса текущий вариант скопирует все 10 строк, таким образом образуется пустое место в письме, которое хорошо бы убрать.
В предыдущем варианте ваш макрос вставлял в письмо содержимое только из одной указанной ячейки. Я добавил для каждой строки формулу, в которой значения этой строки сцеплялись в одно (D1=A1&B1&C1). И в конечной ячейке, которая вставляется в письмо, прописал формулу, которая проверяет не пустые ли эти сцепленные ячейки D1&ЕСЛИ(D2="";"";D2)&ЕСЛИ(D3="";"";D3)&... Таким образом отсек пустое место в письме.
Jungl, вроде бы все супер. Даже решена проблема, с которой столкнулся при использовании формулы ГИПЕРССЫЛКА() - как я понял, максимум 255 символов можно использовать в формуле, иначе ломается. Пришлось письмо резать на 2 части, чтоб все умещалось. В вашем варианте этой проблемы нет вроде как. Сейчас еще потестирую...
Проблему с пустыми строками решил. Вынес в дополнительные ячейки формулы для каждой строки ("%0A"&ЕСЛИ(A14="";"";A14&" "&B14&" "&C14) соединил через СЦЕПИТЬ() и скрыл ЕСЛИ(A14="";"";...) И в ГИПЕРССЫЛКА() добавил эти дополнительные ячейки через СЦЕПИТЬ(), таким образом убрав ЕСЛИ() из формулы гиперссылки, чтобы работал первый вариант макроса. Спасибо за помощь.
Игорь, странно, а у меня формула без ошибок работает. Исправление макроса не помогло, все равно ничего не происходит при его запуске, хотя при клике по ячейке с гиперссылкой - окно почты открывается, и все в него подставляется. Решил попробовать избавиться от ЕСЛИ(), таким образом убрав точки с запятой в формуле. Ваш первый вариант работает. Пока остановлюсь на нем. Не очень удобно использовать формулу без ЕСЛИ(), т.к. в письмо добавляются пустые строки, если не все ячейки заполнены, а ЕСЛИ() как раз отсеивал такие пустые строки. Буду рад, если все-таки поможете исправить макрос для учета ЕСЛИ(). Но спасибо и на этом!