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

Страницы: 1
Макрос для сохранения листов в книге в отдельные файлы
 
Я в excel по 10 часов в день. Мне допустим не нужны данные только в значениях. Я предположил что нужно убрать именно формулы, а не оставить голый лист. Поэтому добавил сохранение форматов, которые можно убрать комментированием в функции.
У Вас макрос исключительно для одной книги, у меня сделан в виде надстройки для любой книги
Функции, которые убирают алерты и прочее использую постоянно, поэтому менять не стал(оставил как есть).
Оба макроса выполняют одно и тоже, только мой написан для разных книг, Ваш написан для одной

P.S. Пересмотрел Ваш код. По поводу форматов я загнул :D  
Изменено: Евгений Корнилов - 12.10.2024 09:19:49
Макрос для сохранения листов в книге в отдельные файлы
 
Цитата
написал:
Видать неправильно задали запрос боту...
Может добавите конкретики? Что лишнего, что неправильно или чего не хватает?
Макрос для сохранения листов в книге в отдельные файлы
 
Код
Sub SaveSheetsAsValues()
    Dim wb As Workbook
    Dim wsName As Worksheet
    Dim wsSource As Worksheet
    Dim newBook1 As Workbook
    Dim newBook2 As Workbook
    Dim i As Integer
    
    
    AccelerateBegin
    ' Указать активную книгу Excel с помощью надстройки
    Set wb = ActiveWorkbook
    
    ' Указать второй лист для извлечения названий
    Set wsName = wb.Sheets(2)
    
    ' Получить название для новых книг
    Dim fileName1 As String
    Dim fileName2 As String
    fileName1 = wsName.Range("A1").Value
    fileName2 = wsName.Range("B1").Value
    
    ' Создать новые книги Excel для четвертого и пятого листов
    Set newBook1 = Workbooks.Add
    Set newBook2 = Workbooks.Add
    
    With wb
        ' Сохранить третий лист в первую новую книгу на первый лист с сохранением форматов и ширин столбцов
        Set wsSource = .Sheets(3)
        CopyRangeWithFormat wsSource.UsedRange, newBook1.Sheets(1).Range("A1")
        newBook1.Sheets(1).Name = wsSource.Name
        
        ' Сохранить четвертый лист во вторую новую книгу на первый лист с сохранением форматов и ширин столбцов
        Set wsSource = .Sheets(4)
        CopyRangeWithFormat wsSource.UsedRange, newBook2.Sheets(1).Range("A1")
        newBook2.Sheets(1).Name = wsSource.Name
        
        ' Добавить второй лист во вторую новую книгу
        newBook2.Sheets.Add After:=newBook2.Sheets(1)
        
        ' Сохранить пятый лист во вторую новую книгу на второй лист с сохранением форматов и ширин столбцов
        Set wsSource = .Sheets(5)
        CopyRangeWithFormat wsSource.UsedRange, newBook2.Sheets(2).Range("A1")
        newBook2.Sheets(2).Name = wsSource.Name
    End With
    
    ' Сохранить новые книги
    newBook1.SaveAs wb.Path & "\" & fileName1 & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    newBook2.SaveAs wb.Path & "\" & fileName2 & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    
    ' Закрыть новые книги
    newBook1.Close False
    newBook2.Close False
    
    AccelerateEnd
End Sub

Private Sub CopyRangeWithFormat(rngSource As Range, rngDestination As Range)
    rngSource.Copy
    rngDestination.PasteSpecial Paste:=xlPasteValues
    rngDestination.PasteSpecial Paste:=xlPasteColumnWidths
    rngDestination.PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
End Sub

Private Sub AccelerateBegin()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
    Application.DisplayStatusBar = False
    Application.DisplayAlerts = False
    Application.AskToUpdateLinks = False
End Sub

Private Sub AccelerateEnd()
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.DisplayStatusBar = True
    Application.DisplayAlerts = True
    Application.AskToUpdateLinks = True
End Sub

Это сохранить в виде надстройки.
Учет двойных строк без задвоения итоговой суммы
 
Добрый день.
Если правильно понял
почему отключились макросы и пустой список макросов, хотя они есть?
 
Покажите параметры безопасности ActiveX
VBA. Динамический диапазон для цикла
 
Если я правильно понял, то попробуйте вот так
Код
Option Explicit


Sub Кнопка1_Щелчок()
    Dim rGame       As Range
    Dim aGame()
    Dim Dic As Object, Dic2 As Object
    Dim FinalDate    As Date
    Dim i As Long, n As Long, k As Long
    Dim sIgrok      As String
    Dim col
    
    Set rGame = ActiveSheet.ListObjects(1).DataBodyRange
    aGame = rGame.Value
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        .CompareMode = 1
        For i = 1 To UBound(aGame)
            sIgrok = aGame(i, 1)
            If Not .exists(sIgrok) Then .Add sIgrok, CreateObject("Scripting.Dictionary")
            .Item(sIgrok).Item(i) = aGame(i, 2)

        Next
    End With

    For i = 1 To UBound(aGame, 1)
        Set Dic2 = Dic.Item(aGame(i, 1))
        FinalDate = aGame(i, 2) - 60
        n = 0
        k = 0
        For Each col In Dic2.Items
            If CDate(col) <= aGame(i, 2) Then k = k + 1
            If CDate(col) <= aGame(i, 2) And CDate(col) > FinalDate Then n = n + 1

        Next
        aGame(i, 4) = n
        aGame(i, 3) = k
    Next
    rGame.Value = aGame
    Set Dic = Nothing
    Beep
    MsgBox "Пересчет закончен"
End Sub

Изменено: Евгений Корнилов - 01.08.2022 17:50:11
Макрос поиска дубликатов с последующим сложением и удалением
 
Дальше вот ваша таблица, с подключением. Если не разберетесь, то напишите сюда.
Макрос поиска дубликатов с последующим сложением и удалением
 
Denchik1983, у Вас excel ниже 2016?
Макрос поиска дубликатов с последующим сложением и удалением
 
Вы хотите решить эту задачу именно макросом? Или нужно просто решить эту задачу? То что вы хотите сделать, делается в Power Query в несколько щелчков мыши
Макрос excel для получения файла из папки outlook
 
Еще нашел код в другом источнике, который поможет определить структуру папок в вашей почте
Код
Sub FindIncomingFolder()
    Dim objOutlApp As Object, oNSpace As Object, i As Long
    On Error Resume Next
    Set objOutlApp = GetObject(, "outlook.Application")
    If objOutlApp Is Nothing Then
        Set objOutlApp = CreateObject("outlook.Application")
    End If
    Set oNSpace = objOutlApp.GetNamespace("MAPI")
    For i = 1 To 100
        MsgBox i & " = " & oNSpace.GetDefaultFolder(i)
    Next
End Sub
Макрос excel для получения файла из папки outlook
 
Пока не подошли знающие этот вопрос идеально будем пробовать)
Я не вижу вашу папке, поэтому только предполагать могу. Возможно она находится по другому адресу почты? тогда попробуйте:
Set oIncoming = oNSpace.GetDefaultFolder(18).Folders("Адрес эл почты с общедоступными папками").Folders("ROC_Ros").Folders("Work")
Power Query. Обновляемая сводная таблица из файла, Не получается получить обновляемый отчет через подключение
 
Добрый день. Нужно всего лишь в  подключении правильно преобразовать тип данных. Десятичная дробь, используя локаль Английский(США).
Массовое изменение диаграмм по условию
 
Ігор Гончаренко, если у Вас есть решение лучше, то опишите его. Если нет , то не засоряйте тему
Массовое изменение диаграмм по условию
 
Попробуйте еще вот это.
В ячейке А1, B1 указываете даты ваших диаграмм и нажимаете кнопку внизу
Вставить пустые строки по условию
 
Код
Sub uuu()
    Dim rn          As Range
    Dim i As Long, lLastRow As Long

    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Set rn = Range(Cells(ActiveSheet.UsedRange.Row, 1), Cells(lLastRow, 1))


    For i = lLastRow To rn.Row Step -1
        If i > 1 Then If i = 3 And TypeName(Cells(i - 1, 1).Value) = "String" Then Rows(i - 1).EntireRow.Insert

        If i > 3 Then If TypeName(Cells(i, 1).Value) = "String" And Not TypeName(Cells(i - 3, 1).Value) = "String" Then Rows(i).EntireRow.Insert

    Next

End Sub
Изменено: Евгений Корнилов - 30.07.2022 18:45:43
Макрос excel для получения файла из папки outlook
 
Я не очень сильный пользователь outlook и нет возможности проверить макрос для сетевых папок. "Сетевая папка" это папка с общим доступом? Если да, то попробуйте

Set oIncoming = oNSpace.GetDefaultFolder(18).Folders("ROC_Ros").Folders("Work")

18 это Папка Все общедоступные папки в Exchange хранилище общедоступных папок. Доступна только для Exchange учетной записи.
Макрос excel для получения файла из папки outlook
 
Практически весь код взят с другого открытого источника
VBA. Создать уникальных значений массив из столбца, где значения могут повторяться
 
Когда то находил решение, возможно даже здесь.

Код
Sub uniq()
Dim varIn As Variant


varIn = Range("A1:A" & (Cells(Rows.Count, 1).End(xlUp).Row)) &#39;Диапазон для сбора значений

    ReDim varUnique(1 To UBound(varIn, 1) * UBound(varIn, 2))

    nUnique = 0
    For iInRow = LBound(varIn, 1) To UBound(varIn, 1)
        For iInCol = LBound(varIn, 2) To UBound(varIn, 2)

            isUnique = True
            For iUnique = 1 To nUnique
                If varIn(iInRow, iInCol) = varUnique(iUnique) Then
                    isUnique = False
                    Exit For
                End If
            Next iUnique

            If isUnique = True Then
                nUnique = nUnique + 1
                varUnique(nUnique) = varIn(iInRow, iInCol)
            End If

        Next iInCol
    Next iInRow

    ReDim Preserve varUnique(1 To nUnique)
    
    For Each sZnach In varUnique
        strUniq = strUniq & sZnach & ", "
    Next
    Cells(1, 2).Value = strUniq &#39; куда вывести массив
End Sub



Но потом перешел на словари
Изменено: БМВ - 29.07.2022 15:38:05
Страницы: 1
Loading...