Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 След.
Как разорвать связь соединения, если она не разрывается?
 
Решение:


Цитата
Действует этот рецепт только для файлов новых форматов Excel 2007 и выше:
1. Обязательно делаем резервную копию файла, связи в котором никак не хотят разрываться
2. Открываем файл при помощи любого архиватора(WinRAR отлично справляется, но это может быть и другой, работающий с форматом ZIP)
3. В архиве перейти в папку xl -> externalLinks
4. Сколько связей содержится в файле, столько файлов вида externalLink1.xml и будет внутри. Файлы просто пронумерованы и никаких сведений о том, к какому конкретному файлу относится эта связь на поверхности нет. Чтобы узнать какой файл .xml к какой связи относится надо зайти в папку "_rels" и открыть там каждый из имеющихся файлов вида externalLink1.xml.rels. Там и будет содержаться имя файла-источника.
5. Если надо удалить только связь на конкретный файл - удаляем только те externalLink1.xml.rels и externalLink1.xml, которые относятся к нему. Если удалить надо все связи - удаляем все содержимое папки externalLinks
6. Закрываем архив
7. Открываем файл в Excel. Появится сообщение об ошибке вроде "Ошибка в части содержимого в Книге ...". Соглашаемся. Появится еще одно окно с перечислением ошибочного содержимого. Нажимаем закрыть.
Улыбнись.
Как разорвать связь соединения, если она не разрывается?
 
Jack Famous, о как изощренно. Благодарю Вас!
Улыбнись.
Как разорвать связь соединения, если она не разрывается?
 
Доброго времени суток.
В приложенных файлах есть книга, в которое есть неведомое соединение, которое не удается разорвать, отключить, удалить.
Будьте добры, пожалуйста, помогите избавиться от этого соединения.
С чем такое может быть связано?
Спасибо!
Улыбнись.
VBA. Заменить текст во ВСЕХ ячейках КНИГИ (включая скрытые листы) текстовое значение на формулу.
 
Sanja, спасибо!
Улыбнись.
VBA. Заменить текст во ВСЕХ ячейках КНИГИ (включая скрытые листы) текстовое значение на формулу.
 
Доброго времени суток, уважаемые люди!

Подскажите, пожалуйста, код, которым возможно осуществить операцию по замене ТЕКСТА, скажем, например «Информация» на ФОРМУЛУ «=2+2*2».
Операция необходимо совершить на всех листах книги ( включая скрытые ) во всех ячейках, содержание которых совпадает с искомым текстом ПОЛНОСТЬЮ. Регистр - неважен.
Спасибо!

upd:
Макрорекодер сообщаеТ следующее:
Код
    Cells.Replace What:="Информация за указанный период", Replacement:= _
        "=""Расход топлива за "" &  ТЕКСТ(ДАТАМЕС(0;$L$7);""ММММ"") & ""   "" & $L$9 & "" г.""" _
        , LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False

При повторном запуске, код не осуществляет никаких действий.
Изменено: falmrom - 30 Авг 2019 01:06:56
Улыбнись.
VBA. Проверить наличие в ДРУГОЙ КНИГЕ модуля с именем «Module1» и, если его нет - СОЗДАТЬ
 
Решение:

Код
Sub Create_NewModule()
    Dim objVBProj As Object, objVBComp As Object, objCodeMod As Object
    Dim sModuleName As String, sFullName As String
    Dim sProcLines As String
    Dim lLineNum As Long
 
    'добавляем новый стандартный модуль в активную книгу
    Set objVBComp = ActiveWorkbook.VBProject.VBComponents.Add(1)
    'получаем ссылку на коды модуля
    Set objCodeMod = objVBComp.CodeModule
    'узнаем количество строк в модуле
    '(т.к. VBA в зависимости от настроек может добавлять строки деклараций)
    lLineNum = objCodeMod.CountOfLines + 1
    'текст всставляемой процедуры
    sProcLines = "Sub Test()" & vbCrLf & _
        "    MsgBox ""Hello, World""" & vbCrLf & _
        "End Sub"[SIZE=36pt][/SIZE]
    'вставляем текст процедуры в тело нового модуля
    objCodeMod.InsertLines lLineNum, sProcLines
End Sub



Источник: https://www.excel-vba.ru/chto-umeet-excel/kak-dobavit-kod-procedury-programmno-skopirovat-modul/#tips_vbe_createmodule
Улыбнись.
VBA. Проверить наличие в ДРУГОЙ КНИГЕ модуля с именем «Module1» и, если его нет - СОЗДАТЬ
 
Доброго времени суток!
Необходимо обработать n-ое кол-во книг и проверить каждую на предмет наличия модуля с именем «Module1» и,
если он есть - удалить в нем все строки,
если его нет - создать пустой модуль с именем «Module1»

Часть кода у меня написана. Необходимо составить ту часть, которая проверяет, чистит или создает новый модуль «Module1»

Спасибо!
Улыбнись.
Формула. Как определить наименьшую дату в таблице, которая помимо дат содержит еще и пустые строки? (игнорировать пустые строки)
 
buchlotnik, В -Внимательность!
Спасибо за то, что поправили меня =)
Улыбнись.
Формула. Как определить наименьшую дату в таблице, которая помимо дат содержит еще и пустые строки? (игнорировать пустые строки)
 
Максим В., buchlotnik, прошу прощения, но в
Код
="с " & ТЕКСТ(МИН(_2_Основная_информация[Дата транзакции];1);"ДД.ММ.ГГГГ") & " по " & ТЕКСТ(МАКС(_2_Основная_информация[Дата транзакции];1);"ДД.ММ.ГГГГ")

при использовании «МИН», «МАКС», если пусто, то МИН  выдает 0.
Улыбнись.
Формула. Как определить наименьшую дату в таблице, которая помимо дат содержит еще и пустые строки? (игнорировать пустые строки)
 
Mershik, шрифт такой, чтобы интересующимся сразу бросилось в глаза решение )

Сергей, потому что, на выходе у меня не просто в ячейке дата, а
Код
="с " & ТЕКСТ(НАИМЕНЬШИЙ(_2_Основная_информация[Дата транзакции];1);"ДД.ММ.ГГГГ") & " по " & ТЕКСТ(НАИБОЛЬШИЙ(_2_Основная_информация[Дата транзакции];1);"ДД.ММ.ГГГГ")

Максим В., они не игнорируют пустые ячейки и, если пусто, то выдают «0»
Улыбнись.
Формула. Как определить наименьшую дату в таблице, которая помимо дат содержит еще и пустые строки? (игнорировать пустые строки)
 
Mershik, БЛАГОДАРНОСТЬ!

Решение:
Код
=ТЕКСТ(НАИМЕНЬШИЙ(_2_Основная_информация[Дата транзакции];1);"ДД.ММ.ГГГГ")
Изменено: falmrom - 23 Авг 2019 09:02:26
Улыбнись.
Формула. Как определить наименьшую дату в таблице, которая помимо дат содержит еще и пустые строки? (игнорировать пустые строки)
 
Доброго времени суток!
Столкнулся с простой сложностью: не могу нагуглить, разобраться и понять ( видимо, плохо делаю ) , как определить минимальную дату в таблице, важный столбец которой содержит в себе помимо значений дат, еще и пустые строки, которые необходимо игнорировать в формуле определения минимальной даты.

Прошу помощи, совета! Спасибо!
Скрин и сам файл-пример прилагаю.
Изменено: falmrom - 23 Авг 2019 08:58:24
Улыбнись.
VBA В чем причина неработоспособности кода умножения диапазона значений за счет «.value = .value * 100 »
 
RAN, OKAY =(
Спасибо за ответы!
Улыбнись.
VBA В чем причина неработоспособности кода умножения диапазона значений за счет «.value = .value * 100 »
 
Sanja, цикл - очень долгий процесс. Я использую цикл для построчного умножения, но это крайне долго.
В поисках оптимизации...

RAN, ох уж эти особенности...
Окей. Такое я пробовал, но
Код
Sub qwe()ПроцентУвеличенияЦены = 8
[Cells(24, 9).address & ":" & Cells(60, 9).address] = _
[Cells(24, 9).address & ":" & Cells(60, 9).address / 100 * (100 + ПроцентУвеличенияЦены)]
End Sub
 


Код
Sub qwe()
ПроцентУвеличенияЦены = 8
  
  MsgBox Cells(24, 9).Address
[Replace(Cells(24, 9).address, "$", "") & ":" & replace(Cells(60, 9).address, "$", "") ] = _
[replaceCells(24, 9).address, "$", "") & ":" & replace(Cells(60, 9).address, "$", "") / 100 * (100 + ПроцентУвеличенияЦены)]
End Sub

выдает ошибку. Каким образом можно один формат адреса ячейки преобразовать в тот, которые необходим для работы кода, что Вы написали?
Изменено: falmrom - 22 Авг 2019 20:58:12
Улыбнись.
VBA В чем причина неработоспособности кода умножения диапазона значений за счет «.value = .value * 100 »
 
Sanja, цикл - очень долгий процесс. Я использую цикл для построчного умножения, но это крайне долго.
В поисках оптимизации...
Улыбнись.
VBA В чем причина неработоспособности кода умножения диапазона значений за счет «.value = .value * 100 »
 
Добрый день! В чем причина ошибки при выполнении макроса ?
Код
Sub qwe()
ПроцентУвеличенияЦены = 8

Range(Cells(24, 9) & ":" & Cells(60, 9)) = _
Range(Cells(24, 9) & ":" & Cells(60, 9)s) / 100 * (100 + ПроцентУвеличенияЦены)
    
End Sub

Спасибо!
Изменено: falmrom - 22 Авг 2019 20:57:22
Улыбнись.
Не суммируются значения, полученные формулой =ТЕКСТ($C$10*$D$10;"##0 000,00")
 
Сергей, принял, учел! Большое спасибо Вам за подсказку.
Улыбнись.
Не суммируются значения, полученные формулой =ТЕКСТ($C$10*$D$10;"##0 000,00")
 
Доброго времени суток!
Не работать формула СУММ при подсчете сумм ячеек, которые содержат в себе «=ТЕКСТ($C$3*$D$3;"##0 000,00")» и подобное. Файл пример - в приложениях + скрин.

Какая может быть причина и как возможно это исправить?
Спасибо!
Изменено: falmrom - 22 Авг 2019 11:03:07
Улыбнись.
VBA. Словарь. Как организовать сортировку собранных ключей по алфавиту в коде
 
Решение:
Код
Sub ВидыТопливаЛитрыСредняяЦена()
  
 Sheets("ГПН").Select
  
'===============Создаем словарь===========
Dim dic
Set dic = CreateObject("Scripting.Dictionary") 'создаем словарь

   dic.CompareMode = TextCompare ' текстовый режим - игнорирует регистр
    
    
For i = 2 To Cells(Rows.Count, 3).End(xlUp).row 'цикл с ДВАДЦАТОЙ строки листа до последней заполненной
    If Range("B" & i) <> "" Then
            k = Range("D" & i) 'создаем ключ для словаря сцепкой ячеек. Все ключи в словаре уникальны
            it = Range("E" & i) 'значение по ключу, в примере - количество
                        If dic.Exists(k) Then 'проверяем, есть ли уже такой ключ в словаре
                          dic.item(k) = dic.item(k) + it 'если есть, суммируем колличество с тем, что уже было ранее
                        Else
                          dic.Add k, it 'если нет, делаем в словаре новую запись
                        End If
    End If
Next
  
Rows("1:" & dic.Count + 7).Insert 'вставляем сверху строки

СтрокаВыгрузки = 1 'строка формирования заголовка и первая строка для выгрузки данных
Range("A" & СтрокаВыгрузки) = "Вид топлива"
Range("B" & СтрокаВыгрузки) = "Кол-во л."

i = СтрокаВыгрузки + 1 'с этой строки будем выгружать данные из словаря
For Each ky In dic.keys 'цикл переборки всех записанных ключей
    ar = ky 'разделяем сцепку обратно, получаем два элемента
    Range("A" & i) = ar 'записываем эти элементы в ячейки
    Range("B" & i) = dic.item(ky) 'записываем в ячейку количество

    i = i + 1 'переходим к следующей строке
     
    k = 1
    k = k + 1
 
Next

'Сортировка полученных значений

    Range("A" & СтрокаВыгрузки & ":B" & dic.Count + 1).Select
 
    ActiveWorkbook.Worksheets("ГПН").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("ГПН").Sort.SortFields.Add key:=Range("A" & СтрокаВыгрузки + 1 & ":A" & dic.Count + 1), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "Аи-92,Аи-95,G-95,ДТ,G-Drive 100,СУГ", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("ГПН").Sort
        .SetRange Range("A" & СтрокаВыгрузки & ":B" & dic.Count + 1)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    ThisWorkbook.ActiveSheet.Sort.SortFields.Clear

dic.RemoveAll ' удаляем словарь
End Sub
Улыбнись.
Подсчет суммы литров по каждому виду топлива
 
Решение:
Код
Sub ВидыТопливаЛитрыСредняяЦена()
  
 Sheets("ГПН").Select
'===============Создаем словарь===========
Dim dic
Set dic = CreateObject("Scripting.Dictionary") 'создаем словарь

   dic.CompareMode = TextCompare ' текстовый режим - игнорирует регистр
    
    
For i = 2 To Cells(Rows.Count, 3).End(xlUp).row 'цикл с ДВАДЦАТОЙ строки листа до последней заполненной
    If Range("B" & i) <> "" Then
            k = Range("D" & i) 'создаем ключ для словаря сцепкой ячеек. Все ключи в словаре уникальны
            it = Range("E" & i) 'значение по ключу, в примере - количество
                        If dic.Exists(k) Then 'проверяем, есть ли уже такой ключ в словаре
                          dic.item(k) = dic.item(k) + it 'если есть, суммируем колличество с тем, что уже было ранее
                        Else
                          dic.Add k, it 'если нет, делаем в словаре новую запись
                        End If
    End If
Next
  
Rows("1:" & dic.Count + 7).Insert 'вставляем сверху строки

СтрокаВыгрузки = 1 'строка формирования заголовка и первая строка для выгрузки данных
Range("A" & СтрокаВыгрузки) = "Вид топлива"
Range("B" & СтрокаВыгрузки) = "Кол-во л."

i = СтрокаВыгрузки + 1 'с этой строки будем выгружать данные из словаря
For Each ky In dic.keys 'цикл переборки всех записанных ключей
    ar = ky 'разделяем сцепку обратно, получаем два элемента
    Range("A" & i) = ar 'записываем эти элементы в ячейки
    Range("B" & i) = dic.item(ky) 'записываем в ячейку количество
 
    i = i + 1 'переходим к следующей строке
     
    k = 1
    k = k + 1
 
Next
'Сортировка полученных значений
    Range("A" & СтрокаВыгрузки & ":B" & dic.Count + 1).Select
 
    ActiveWorkbook.Worksheets("ГПН").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("ГПН").Sort.SortFields.Add key:=Range("A" & СтрокаВыгрузки + 1 & ":A" & dic.Count + 1), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "Аи-92,Аи-95,G-95,ДТ,G-Drive 100,СУГ", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("ГПН").Sort
        .SetRange Range("A" & СтрокаВыгрузки & ":B" & dic.Count + 1)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    ThisWorkbook.ActiveSheet.Sort.SortFields.Clear

dic.RemoveAll ' удаляем словарь
End Sub
Улыбнись.
VBA. Словарь. Как организовать сортировку собранных ключей по алфавиту в коде
 
БМВ, есть !
Улыбнись.
Подсчет суммы литров по каждому виду топлива
 
Настя_Nastya, нужен именно код vba.
Wiss, бесспорно, решение отличное, но у меня уже настроено все на словарь и его ключи необходимо сортировать по алфавиту
Mershik, подсчет суммы по каждому виду - есть! Необходимо организовать сортировку по ключу (по виду топлива)
vikttur, есть!
Улыбнись.
VBA. Словарь. Как организовать сортировку собранных ключей по алфавиту в коде
 
БМВ, it is good, но my english is bad, friend.
Улыбнись.
VBA. Словарь. Как организовать сортировку собранных ключей по алфавиту в коде
 
Доброго времени суток тем, с кем еще сегодня не приветствовали друг друга.

Будьте добры, помогите осуществить в словаре сортировку полученных ключей по алфавиту. Спасибо!
Код
Sub ВидыТопливаЛитрыСредняяЦена()
  
 Sheets("ГПН").Select
  
'===============Создаем словарь===========
Dim dic
Set dic = CreateObject("Scripting.Dictionary") 'создаем словарь

   dic.CompareMode = TextCompare ' текстовый режим - игнорирует регистр
    
For i = 2 To Cells(Rows.Count, 3).End(xlUp).row 'цикл с ДВАДЦАТОЙ строки листа до последней заполненной
    k = Range("D" & i) 'создаем ключ для словаря сцепкой ячеек. Все ключи в словаре уникальны
    it = Range("E" & i) 'значение по ключу, в примере - количество
                If dic.Exists(k) Then 'проверяем, есть ли уже такой ключ в словаре
                  dic.item(k) = dic.item(k) + it 'если есть, суммируем колличество с тем, что уже было ранее
                Else
                  dic.Add k, it 'если нет, делаем в словаре новую запись
                End If
Next

Rows("1:" & dic.Count + 7).Insert 'вставляем сверху строки

СтрокаВыгрузки = 1 'строка формирования заголовка и первая строка для выгрузки данных
[a1] = "Вид топлива": [b1] = "Кол-во л.": 'в пятой строке делаем шапку

i = СтрокаВыгрузки + 1 'с этой строки будем выгружать данные из словаря
For Each ky In dic.keys 'цикл переборки всех записанных ключей
    ar = ky 'разделяем сцепку обратно, получаем два элемента
    Range("A" & i) = ar 'записываем эти элементы в ячейки
    Range("B" & i) = dic.item(ky) 'записываем в ячейку количество
     
    i = i + 1 'переходим к следующей строке
     
    k = 1
    k = k + 1
    Range("A" & i & ",A" & i - 1).MergeCells = True
 
Next
 
dic.RemoveAll
End Sub
Улыбнись.
Подсчет суммы литров по каждому виду топлива
 
БМВ, спасибо за подсказку, но концепция полного решения заключается именно в том, чтобы была полная реализация только путем использования VBA, без запросов и подключений.
Изменено: falmrom - 21 Авг 2019 14:36:03
Улыбнись.
Подсчет суммы литров по каждому виду топлива
 
Доброго времени суток, друзья!

Будь добры, подскажите, пожалуйста, как посчитать сколько в таблице всего литров топлива каждого из видов топлива?
Реализация необходимо именно через VBA.

Файл в приложении.
Спасибо!


UPD: Необходимы порядок сортировки:

Аи-92
Аи-95
G-95
ДТ
G-Drive 100
СУГ
Изменено: falmrom - 21 Авг 2019 17:05:43
Улыбнись.
Разбор возникающей ошибки при обновлении PQ-запросов из иной книги
 
ctacon, однообразно
Улыбнись.
Разбор возникающей ошибки при обновлении PQ-запросов из иной книги
 
Максим Зеленский, куча циклов устпает по скорости работы POWER QUERY или, напротив, циклы VBA будут быстрее ? Пишу грамотно и коротко, с обозначением переменных
Улыбнись.
Разбор возникающей ошибки при обновлении PQ-запросов из иной книги
 
Максим Зеленский, фиаско.

Воспользовался Вашим предложением :
Код
ThisWorkbook.Sheets(2).ListObjects("ФормаОтчета").Refresh
MsgBox 123

msgbox Появляется ДО окончания обновления.

В общем, думаю, то, что делаю через PQ, реализую чисто циклами на VBA. Так будет проще.
Спасибо всем за советы, подсказки.
Изменено: falmrom - 21 Авг 2019 12:39:40
Улыбнись.
Разбор возникающей ошибки при обновлении PQ-запросов из иной книги
 
Максим Зеленский, будьте добры, укажите на ошибку, пожалуйста. Не обновляются таблицы таким кодом.

Код
        ThisWorkbook.Range("ФормаОтчета").ListObject.QueryTable.Refresh BackgroundQuery:=False
    ThisWorkbook.Range("СредняяСтоимость").ListObject.QueryTable.Refresh BackgroundQuery:=False
    ThisWorkbook.Range("ВсеЦены").ListObject.QueryTable.Refresh BackgroundQuery:=False
    ThisWorkbook.Range("СуммыПоКаждойКарте").ListObject.QueryTable.Refresh BackgroundQuery:=False

Изменено: falmrom - 21 Авг 2019 12:21:31
Улыбнись.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 След.
Наверх