Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Вексельный калькулятор, Считалка формулами
 
Ну ноль он правильно считает.
Правило первый день не входит в расчет/последний день входит вроде соблюдается. (вложил)
В старом также.
Изменено: Сергей Смирнов - 28.09.2022 11:41:23
Вексельный калькулятор, Считалка формулами
 
Разницы не увидел, слагаемые местами переставлены.
Прелесть калькулятора была в умении определять и разбивать на високосный год базу расчета.
Блин..опасно теперь с ним. Но машинкой все равно проверять все стоит.  
Вексельный калькулятор, Считалка формулами
 
Спасибо! Про скрытые листы знаю. Не догадался посмотреть. Надеюсь корректно протянули.
Вексельный калькулятор, Считалка формулами
 
Добрый день!
Этот вексельный калькулятор я взял на сайте Сбербанка, давно, сейчас его там нет.
Работал хорошо до какого-то года. Сейчас не считает. Макросов вроде нет. А какие там свойства файла установили я не знаю.
Вложил два файла. Отличие-год поставил 2014 и 2022. Один считает, другой нет.
Спасибо!
Извините, нашел, Сбер исправил, вложил. Но не понимаю что там было, опять сломается.
Изменено: Сергей Смирнов - 28.09.2022 09:17:46
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
Тот макрос Filter в одну строчку прекрасно фильтрует по 4 критериям и мою таблицу.
Но только числовые в колонки. А у меня числа двадцатизначные (их отображает не правильно, с буквой E) и я их
в начале макросом форматирую как текст. (инструментом "текст по столбцам" без апострофа впереди).
И Filter уже "текст по столбцам" не фильтрует.
Изменено: Сергей Смирнов - 26.07.2022 08:53:48
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
У меня проблема с форматом.
Я колонку форматирую в первой части макроса в текст.
И если по числовой колонке одиннадцатой он работает,
то по двенадцатой текстовой нет.
Не знаю как подступиться.  
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
Ваш у меня работает.
А мой (во вложении) нет.
Вроде и расшиение изменил.
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
Данные.
Код
Windows("407 408").Activate
    ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=1, Criteria1:= _
    Array("40802810", "40807810", "40701810", "40702810"), Operator:=xlFilterValues
    Windows("407 408").Activate
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
 Не получилось. Числа у меня стоят как текст (без апострофа).
Так он все строки таблицы сворачивает. Пусто.
А без кавычек еще и глюк после отработки макроса.
закрываются все окна эксель и снова открываются.
Код
Sub Макрос2()
'
Workbooks.Open Filename:="C:\Users\m.bolotov\Desktop\Макрос позиции\407 408.xlsx"
        
Windows("407 408.xlsx").Activate
    Columns("L:L").Select
    Selection.NumberFormat = "0"
    Selection.ColumnWidth = 20
    
Selection.TextToColumns Destination:=Range("Таблица1[[#Headers],[ACCT_NO]]") _
        , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(1, 2), _
        TrailingMinusNumbers:=True
       
        
Windows("407 408").Activate
        Columns("N:N").Select
        Selection.Delete Shift:=xlToLeft
        Columns("A:K").Select
        Selection.Delete Shift:=xlToLeft
    
Windows("407 408").Activate
    ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=1, Criteria1:= _
    Array("40802810", "40807810", "40701810", "40702810"), Operator:=xlFilterValues
    Windows("407 408").Activate
        
End Sub
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
Добрый день!
Макрос фильтрует по двум критериям "40817978" ИЛИ "40820978"
Потребовалось три и четыре критерия "40817978" ИЛИ "40820978" ИЛИ "40802978".
"40817978" ИЛИ "40820978" ИЛИ "40802978" ИЛИ "40807978".
Спасибо!
Код
Sub Макрос20()
'
Workbooks.Open Filename:="C:\Users\m.bolotov\Desktop\Макрос позиции\407 408.xlsx"
        
Windows("407 408.xlsx").Activate
    Columns("L:L").Select
    Selection.NumberFormat = "0"
    Selection.ColumnWidth = 20
    
Selection.TextToColumns Destination:=Range("Таблица1[[#Headers],[ACCT_NO]]") _
        , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(1, 2), _
        TrailingMinusNumbers:=True
     
        
Windows("407 408").Activate
        Columns("N:N").Select
        Selection.Delete Shift:=xlToLeft
        Columns("A:K").Select
        Selection.Delete Shift:=xlToLeft
    
Windows("407 408").Activate
    ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=1, Criteria1:="=40817978*" _
        , Operator:=xlOr, Criteria2:="=40820978*", Operator:=xlAnd
    Windows("407 408").Activate
       
End Sub
Фильтр в Excel, Фильтрация колонки таблицы в макросе
 
Собираю магнитофоном макрос фильтратор/копировщик/сборщик сводной таблицы
В этом примере он правильно не работает. Не работает условие фильтра.
В исходной таблице счета ДВАДЦАТИЗНАЧНЫЕ а отобрать нужно начинающиеся на 40702810, например.
И руками это работает в строке быстрого поиска самого фильтра. Но в макросе магнитофон ставит признак "равно".
Пробовал и другие признаки, например "содержит". Не получилось.
Не могу отфильтровать макросом по 40702810.
Спасибо!
Код
Sub Макрос2()
'
Workbooks.OpenXML Filename:= _
    "C:\Users\m.bolotov\Desktop\Макрос позиции\MGC_AC_OSTR_A_BIP (15).xml", _
    LoadOption:=xlXmlLoadImportToList
Columns("L:L").Select
    Selection.NumberFormat = "0"
    Selection.ColumnWidth = 20
ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=12, Criteria1:= _
    Array("40802810"), Operator:=xlFilterValues
End Sub
Скопировать колонку из одной книги и вставить в другую как текст.
 
Благодарю! Похоже то что нужно.
Скопировать колонку из одной книги и вставить в другую как текст.
 
Попробовал так:
Код
Sub Лист2()
'Открываем файл с которого нужно скопировать данные
Workbooks.Open Filename:="C:\Users\m.bolotov\Desktop\Макрос портфеля\ActiveRateAverage.xls"
'Скопировать нужный диапазон в открывшейся книге на листе 1
Workbooks("ActiveRateAverage.xls").Worksheets("ActiveRateAverage").Range("F2:F500").Copy
'Активируем нужную нам книгу
Workbooks("ВПР.xlsm").Activate
'Выделяем и вставляем скопированные данные в ячейку А1
ActiveWorkbook.Worksheets("Лист2").Range("A3").Select
ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Закрываем книгу откуда мы скопировали данные
Workbooks("ActiveRateAverage.xls").Close
End Sub
Ругается на строку:
Код
ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Скопировать колонку из одной книги и вставить в другую как текст.
 
Есть макрос копирования колонки из одной книги в другую. Но в первой книге формула, так и копирует, вместе с форматом. Нужно только текстом.
Код
Sub Лист2()
'Открываем файл с которого нужно скопировать данные
Workbooks.Open Filename:="C:\Users\m.bolotov\Desktop\Макрос портфеля\ActiveRateAverage.xls"
'Скопировать нужный диапазон в открывшейся книге на листе 1
Workbooks("ActiveRateAverage.xls").Worksheets("ActiveRateAverage").Range("F2:F500").Copy
'Активируем нужную нам книгу
Workbooks("ВПР.xlsm").Activate
'Выделяем и вставляем скопированные данные в ячейку А1
ActiveWorkbook.Worksheets("Лист2").Range("A3").Select
ActiveSheet.Paste
'Закрываем книгу откуда мы скопировали данные
Workbooks("ActiveRateAverage.xls").Close
End Sub
Так не получилось:
Код
ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:= _
        False
Спасибо!
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Нашел похоже решение. Надо было пере сохранить шаблон из кодироаки ANCI в Unicod. Работает.  
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Вот файлы.
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Новая проблема вылезла.
Количество обрабатываемых столбцов 150 (назначил)
Но с определенного количества заполняемых позиций в фигурных скобках
нарушается корректное заполнение символов. Прилагаю Рабочий Шаблон. Не рабочий Шаблон.
Они отличаются количеством позиций (в рабочем снизу отрезал и он работает). Файл результата-брак.
Где ограничение?
Заполнение документа Word из Excel, Проблема с присвоением имени документу Word
 
Разобрался. Знак : в имени нельзя. Идет 14о12о00 и Trim$(.Cells(3).Text)
Заполнение документа Word из Excel, Проблема с присвоением имени документу Word
 
Получаю имя файла документа как Общий курс_03.10.201943742,5694444444
а должно быть Общий курс_03.10.201912:14:00
время ставит числом а не текстом.
Если ставлю так:
Код
фИО = Trim$(.Cells(1).Text) & "" & Trim$(.Cells(2).Text) & "" & Trim$(.Cells(3).Text)
выдает ошибку в подсказке в приложении возникла внутренняя ошибка при загрузке библиотек ssl
если так:
Код
ФИО = Trim$(.Cells(1).Text) & "" & Trim$(.Cells(2).Text) & "" & Trim$(.Cells(3))
ошибки нет но имею Общий курс_03.10.201943742,5694444444
Ячейки для имени такие:
Общий   курс_03.10.201913:51:00
С временем не получается.
Сам макрос:
Код
Const ИмяФайлаШаблона = "шаблон 1.dot"
Const КоличествоОбрабатываемыхСтолбцов = 20
Const РасширениеСоздаваемыхФайлов = ".doc"

Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "A").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub

    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"

    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word

    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(1)) & "" & Trim$(.Cells(2)) & "" & Trim$(.Cells(3))
            Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов

            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents

            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i).Text)

                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True

                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: WD.Close False: DoEvents
            p = p + a
        End With
    Next row

    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit False: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub

Function NewFolderName() As String
    NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Распоряжения, сформированные " & Get_Now)
    MkDir NewFolderName
End Function

Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function
Спасибо.
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Спасибо большое! Постараюсь осмыслить справку. Корректно заработал так:
Код
WD.SaveAs Filename, 7: WD.Close False: DoEvents
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Изменил шаблон на .txt печатает документ корректно, сохраняет в txt файл с нарушением кодировки (кракозяберы вместо текста).
Может подскажете? Спасибо!
Я думаю в этой строке ошибка
Код
WD.SaveAs Filename: WD.Close False: DoEvents
Сам макрос
Код
Const ИмяФайлаШаблона = "шаблон.txt"
Const КоличествоОбрабатываемыхСтолбцов = 5
Const РасширениеСоздаваемыхФайлов = ".txt"

Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "A").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub

    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"

    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word

    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(1)) & "" & Trim$(.Cells(2)) & "" & Trim$(.Cells(3))
            Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов

            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents

            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i).Text)

                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True

                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.PrintOut
            WD.SaveAs Filename: WD.Close False: DoEvents
            p = p + a
        End With
    Next row

    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit False: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub

Function NewFolderName() As String
    NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Распоряжения, сформированные " & Get_Now)
    MkDir NewFolderName
End Function

Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Большое спасибо! Все заработало!
Заполнение документа Word из Excel + распечатка, Не печатает. Перепробовал разные варианты.
 
Без печати работает.
Код
Const ИмяФайлаШаблона = "шаблон.dot"
Const КоличествоОбрабатываемыхСтолбцов = 5
Const РасширениеСоздаваемыхФайлов = ".doc"

Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "A").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub

    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"

    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word

    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(1)) & "" & Trim$(.Cells(2)) & "" & Trim$(.Cells(3))
            Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов

            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents

            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i).Text)

                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True

                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: WD.Close False: DoEvents
            p = p + a
        End With
    Next row

    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit False: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub

Function NewFolderName() As String
    NewFolderName = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Распоряжения, сформированные " & Get_Now)
    MkDir NewFolderName
End Function

Function Get_Date() As String: Get_Date = Replace(Replace(DateValue(Now), "/", "-"), ".", "-"): End Function
Function Get_Time() As String: Get_Time = Replace(TimeValue(Now), ":", "-"): End Function
Function Get_Now() As String: Get_Now = Get_Date & " в " & Get_Time: End Function

Спасибо!
Разархиватор нескольких выбранных zip файлов в папку., Выбрать сразу несколько zip и все разархивировать в папку.
 
Спасибо большое. Завтра поэкспериментирую.
Там еще программу криптографии подтягивать с сертификатом ключа.
То есть расшифровать/подписать.
Разархиватор нескольких выбранных zip файлов в папку., Выбрать сразу несколько zip и все разархивировать в папку.
 
Спасибо добрый человек!
Я еще x = x + 1
          Wend
перенес, и оно реально заработало как надо, похоже.
В итоге имею:
Код
Sub Unzip()
    Dim FSO As Object
    Dim oApp As Object
    Dim Fname
    Dim FileNameFolder As Variant
    Dim DefPath As String
    Dim x As Integer

    Fname = Application.GetOpenFilename(filefilter:="Zip Files (*.zip), *.zip", _
                                        MultiSelect:=True)
    If TypeName(Fname) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
        'Папка назначения
        DefPath = "C:\test\"    ' Измените на свой путь
        If Right(DefPath, 1) <> "\" Then
            DefPath = DefPath & "\"
        End If
        x = 1
        While x <= UBound(Fname)
        FileNameFolder = DefPath
        
        'Извлеките файлы в папку Destination
        Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(Fname(x)).items
        x = x + 1
        Wend
        
        MsgBox "You find the files here: " & FileNameFolder
                
        On Error Resume Next
        Set FSO = CreateObject("scripting.filesystemobject")
        FSO.deletefolder Environ("Temp") & "\Temporary Directory*", True
    
End Sub
Разархиватор нескольких выбранных zip файлов в папку., Выбрать сразу несколько zip и все разархивировать в папку.
 
Ругается на переменную.
Код
Sub Unzip()
    Dim FSO As Object
    Dim oApp As Object
    Dim Fname
    Dim FileNameFolder As Variant
    Dim DefPath As String
    Dim x As Integer

    Fname = Application.GetOpenFilename(filefilter:="Zip Files (*.zip), *.zip", _
                                        MultiSelect:=True)
    If TypeName(Fname) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
        'Папка назначения
        DefPath = "C:\test\"    ' Измените на свой путь
        If Right(DefPath, 1) <> "\" Then
            DefPath = DefPath & "\"
        End If
        x = 1
        While x <= UBound(Fname)
        FileNameFolder = DefPath
        
        'Извлеките файлы в папку Destination
        Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(Fname).items
        
        MsgBox "You find the files here: " & FileNameFolder
        x = x + 1
        Wend
        
        On Error Resume Next
        Set FSO = CreateObject("scripting.filesystemobject")
        FSO.deletefolder Environ("Temp") & "\Temporary Directory*", True
    
End Sub
Разархиватор нескольких выбранных zip файлов в папку., Выбрать сразу несколько zip и все разархивировать в папку.
 
Вот нагуглил код, но он не позволяет выбрать/выделить сразу несколько zip файлов. Можно только по одному разархивировать.
А мне надо кучу зипов распаковывать в одну папку.
Может кто подскажет идею. Спасибо!
Код
Sub Unzip()
    Dim FSO As Object
    Dim oApp As Object
    Dim Fname As Variant
    Dim FileNameFolder As Variant
    Dim DefPath As String

    Fname = Application.GetOpenFilename(filefilter:="Zip Files (*.zip), *.zip", _
                                        MultiSelect:=False)
    If Fname = False Then
        'Do nothing
    Else
        'Destination folder
        DefPath = "C:\test\"    ' Change to your path / variable
        If Right(DefPath, 1) <> "\" Then
            DefPath = DefPath & "\"
        End If

        FileNameFolder = DefPath

        '        'Delete all the files in the folder DefPath first if you want
        '        On Error Resume Next
        '        Kill DefPath & "*.*"
        '        On Error GoTo 0

        'Extract the files into the Destination folder
        Set oApp = CreateObject("Shell.Application")
        oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(Fname).items

        MsgBox "You find the files here: " & FileNameFolder

        On Error Resume Next
        Set FSO = CreateObject("scripting.filesystemobject")
        FSO.deletefolder Environ("Temp") & "\Temporary Directory*", True
    End If
End Sub
Открытие файлов excel по стилям XSLT в макросе сборки нескольких файлов excel в один., Проблема открытия по стилям с помощью макроса.
 
Я решил свою задачу. Вот рабочий макрос с применением стилей XSLT.
Код
Sub Макрос_сборки()
    Dim FilesToOpen
    Dim x As Integer
 
    Application.ScreenUpdating = False  'отключаем обновление экрана для скорости
     
    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")
 
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
     
    'проходим по всем выбранным файлам
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.OpenXML(Filename:=FilesToOpen(x), _
        Stylesheets:=Array(1))
        Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        importWB.Close savechanges:=False
        x = x + 1
    Wend
 
    Application.ScreenUpdating = True
End Sub
А это Stylesheets:=Array(1) - ключ решения.
Открытие файлов excel по стилям XSLT в макросе сборки нескольких файлов excel в один., Проблема открытия по стилям с помощью макроса.
 
Попробовал вычислить фрагмент кода авто-записью макроса.
Получил:
Код
ChDir
"C:\Users\m.bolotov\Desktop\Сборка"

    Workbooks.OpenXML Filename:= _

       
"C:\Users\m.bolotov\Desktop\Сборка\MC04084_EQM13_003_040419_014925553.xml",
_

        Stylesheets:=Array(2)

   
Windows("Макрос сборки - копия.xlsm").Activate

Вот команда выбора в контекстном меню: Stylesheets:=Array(2). Если первую строку в меню выбрать, то будет: Stylesheets:=Array(1).

Может кто подскажет куда эту команду в макрос пристроить. Спасибо!

Открытие файлов excel по стилям XSLT в макросе сборки нескольких файлов excel в один., Проблема открытия по стилям с помощью макроса.
 
Не идет. Добавил файлы которые открывать/копировать пытаюсь. Макрос обработки.
Если бы он хотя бы тормозился при открытии каждого файла на диалоговом окне, чтобы вручную путь к схеме XSLT указывать.
Но он проходит/ копирует по умолчанию.
Страницы: 1 2 След.
Наверх