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

Страницы: 1
Вексельный калькулятор, Считалка формулами
 
Добрый день!
Этот вексельный калькулятор я взял на сайте Сбербанка, давно, сейчас его там нет.
Работал хорошо до какого-то года. Сейчас не считает. Макросов вроде нет. А какие там свойства файла установили я не знаю.
Вложил два файла. Отличие-год поставил 2014 и 2022. Один считает, другой нет.
Спасибо!
Извините, нашел, Сбер исправил, вложил. Но не понимаю что там было, опять сломается.
Изменено: Сергей Смирнов - 28.09.2022 09:17:46
Фильтр в 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.Paste
'Закрываем книгу откуда мы скопировали данные
Workbooks("ActiveRateAverage.xls").Close
End Sub
Так не получилось:
Код
ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:= _
        False
Спасибо!
Заполнение документа 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 + распечатка, Не печатает. Перепробовал разные варианты.
 
Без печати работает.
Код
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 файлов. Можно только по одному разархивировать.
А мне надо кучу зипов распаковывать в одну папку.
Может кто подскажет идею. Спасибо!
Код
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 в один., Проблема открытия по стилям с помощью макроса.
 
Имеется макрос сборки нескольких файлов excel в один.
Код
Sub CombineWorkbooks()
    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.Open(Filename:=FilesToOpen(x))
        Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        importWB.Close savechanges:=False
        x = x + 1
    Wend
  
    Application.ScreenUpdating = True
End Sub
Но у меня файлы XML открываемые в excel по стилям XSLT. Стили лежат C:\MICEX\XSLT или на ftp.
При открытии выскакивает окошко выбора (точкой) применять/не применять стили, и путь к стилям.
И окошко согласия на открытие файла выскакивает.
Как бы этот замечательный макрос мне дописать.
Спасибо!
[ Закрыто] Открытие файлов excel по стилям XSLT в макросе сборки нескольких файлов excel в один., Проблема открытия по стилям с помощью макроса.
 
Имеется макрос сборки нескольких файлов excel в один.
Код
Sub CombineWorkbooks()
    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.Open(Filename:=FilesToOpen(x))
        Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        importWB.Close savechanges:=False
        x = x + 1
    Wend
 
    Application.ScreenUpdating = True
End Sub
Но у меня файлы XML открываемые в excel по стилям XSLT. Стили лежат C:\MICEX\XSLT или на ftp.
При открытии выскакивает окошко выбора (точкой) применять/не применять стили, и путь к стилям.
И окошко согласия на открытие файла выскакивает.
Как бы этот замечательный макрос мне дописать.
Спасибо!
[ Закрыто] Макрос заполнения Word из таблицы Excel не вставляет как текст., Макрос значение 3 августа 2018 г. вставит как 03.08.2018 г., в значении 172,20 потеряет ноль, а значение со знаком процент преобразует в числовое. Не вставляет как текст, как в таблице. Спасибо.
 
Const ИмяФайлаШаблона = "шаблон3.dot"
Const КоличествоОбрабатываемыхСтолбцов = 8
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))
           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))

               ' так почему-то заменяет не всё (не затрагивает таблицу)
               '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
Страницы: 1
Наверх