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

Страницы: 1 2 След.
Режим работы сутки через трое. Даты смен на 2 месяца., Вывод списком в столбец дат смен.
 
все конечно красиво, но повторюсь-мы работаем по 12 часов, а не сутками и в рабочие дни только в ночь, т.е. днем работает учреждение.  а в выходные получается полностью, сменяем  без прерывно уже.
Изменено: бухарик - 28.01.2025 01:08:59
Режим работы сутки через трое. Даты смен на 2 месяца., Вывод списком в столбец дат смен.
 
Цитата
написал:
. Посмотрите файл, возможно это то что вы искали. Возможно.
там 4 смены, у нас три чела, три смены
Режим работы сутки через трое. Даты смен на 2 месяца., Вывод списком в столбец дат смен.
 
у нас смены в будние дни начало 17-30 до 07-00 следующего дня, следующий чел заступает тоже на ночь.  если  выпадает суббота воскресенье или нерабочий праздничный день то по 12 часов смены с 7-00 до 19-00.   вот тут как график составить?  работаем втроем, ночные сторожа.  А вдобавок нужно еще количество часов регулировать чтоб особо не было большой разбежки между работниками.
Изменено: бухарик - 19.01.2025 08:13:10
Макросы Visual Basic для приложения (VBA) в данной книге повреждены и были удалены
 
проблема один в один. только открываю в ноуте где Win11, а переношу из PC Win7.  как всетаки решили?
ошибка 1004 при открытии книги
 
Не бейте сильно, вопрос чайника. Возникает это при открытии книги-ошибка инициализации библиотек (1004), что надо сделать.
Просмотрел 10 страниц по поиску на форуме-ничего не понял, да и там както по-другому ситуации
[ Закрыто] изменить код
 
Задолбал меня чат-бот, или я его. Есть код который надо подправить, это макрос известный сбора листов из разных книг в одну пытаюсьь вразумить его что мне надо-а никак,, начинает сам путаться. А все что осталось-это ширина столбцов D,E,F  по максимальной ширине содержимого ячеек ниже 10 строки..  может людской мозг всетаки лучше?  подскажет кто?
Код
Sub Consolidated_Range_of_Books_and_Sheets()
    Dim iBeginRange As Object, lCalc As Long, lCol As Long
    Dim oAwb As String, sCopyAddress As String, sSheetName As String
    Dim lLastrow As Long, lLastRowMyBook As Long, li As Long, iLastColumn As Integer
    Dim wsSh As Object, wsDataSheet As Object, bPolyBooks As Boolean, avFiles
    Dim wbAct As Workbook
    Dim bPasteValues As Boolean
    Dim maxWidthD As Double, maxWidthE As Double, maxWidthF As Double
    Dim cell As Range
    
    On Error Resume Next
    'Выбираем диапазон выборки с книг
    Set iBeginRange = Range("A1") 'диапазон указывается нужный
    'Если диапазон не выбран - завершаем процедуру
    If iBeginRange Is Nothing Then Exit Sub
    'Указываем имя листа
    If sSheetName = "" Then sSheetName = "*"
    On Error GoTo 0
    'Запрос - вставлять на результирующий лист все данные
    'или только значения ячеек (без формул и форматов)
    bPasteValues = False 'Вставляем и значения, и все остальное
    'Запрос сбора данных с книг(если Нет - то сбор идет с активной книги)
    avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выбор файлов", "E:\", True)
    If VarType(avFiles) = vbBoolean Then Exit Sub
    bPolyBooks = True
    lCol = 1
    'отключаем обновление экрана, автопересчет формул и отслеживание событий
    'для скорости выполнения кода и для избежания ошибок, если в книгах есть иные коды
    With Application
        lCalc = .Calculation
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    'создаем новый лист в книге для сбора
    Set wsDataSheet = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
    'очищаем первый столбец на новом листе
    wsDataSheet.Columns(1).ClearContents
    'цикл по книгам
    For li = LBound(avFiles) To UBound(avFiles)
        If bPolyBooks Then
            Set wbAct = Workbooks.Open(Filename:=avFiles(li))
        Else
            Set wbAct = ThisWorkbook
        End If
        oAwb = wbAct.Name
        'цикл по листам
        For Each wsSh In wbAct.Sheets
            If wsSh.Name Like sSheetName Then
                'Если имя листа совпадает с именем листа, в который собираем данные
                'и сбор идет только с активной книги - то переходим к следующему листу
                If wsSh.Name = wsDataSheet.Name And bPolyBooks = False Then GoTo NEXT_
                With wsSh
                    Select Case iBeginRange.Count
                    Case 1 'собираем данные начиная с указанной ячейки и до конца данных
                        lLastrow = .Cells(1, 1).SpecialCells(xlLastCell).Row
                        iLastColumn = .Cells.SpecialCells(xlLastCell).Column
                        sCopyAddress = .Range(.Cells(iBeginRange.Row, iBeginRange.Column), .Cells(lLastrow, iLastColumn)).Address
                    Case Else 'собираем данные с фиксированного диапазона
                        sCopyAddress = iBeginRange.Address
                    End Select
                    lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + 1
                    'вставляем имя книги, с которой собраны данные
                    If lCol Then wsDataSheet.Cells(lLastRowMyBook, 1).Resize(Range(sCopyAddress).Rows.Count).Value = oAwb
                    If bPasteValues Then 'если вставляем только значения
                        .Range(sCopyAddress).Copy
                        wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues
                    Else
                        .Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol)
                    End If
                End With
            End If
NEXT_:
        Next wsSh
        If bPolyBooks Then wbAct.Close False
    Next li
    'устанавливаем ширину столбцов D, E и F по максимальной длине текста в строках начиная с 11
    maxWidthD = 0
    maxWidthE = 0
    maxWidthF = 0
    For Each cell In wsDataSheet.Range("D11:D" & wsDataSheet.Cells(wsDataSheet.Rows.Count, "D").End(xlUp).Row)
        If Len(Trim(cell.Value)) > maxWidthD Then maxWidthD = Len(Trim(cell.Value))
    Next cell
    For Each cell In wsDataSheet.Range("E11:E" & wsDataSheet.Cells(wsDataSheet.Rows.Count, "E").End(xlUp).Row)
        If Len(Trim(cell.Value)) > maxWidthE Then maxWidthE = Len(Trim(cell.Value))
    Next cell
    For Each cell In wsDataSheet.Range("F11:F" & wsDataSheet.Cells(wsDataSheet.Rows.Count, "F").End(xlUp).Row)
        If Len(Trim(cell.Value)) > maxWidthF Then maxWidthF = Len(Trim(cell.Value))
    Next cell
    wsDataSheet.Columns("D").ColumnWidth = maxWidthD * 1.2
    wsDataSheet.Columns("E").ColumnWidth = maxWidthE * 1.2
    wsDataSheet.Columns("F").ColumnWidth = maxWidthF * 1.2
    'автоподбор высоты строк
    wsDataSheet.Rows.AutoFit
    'очищаем первый столбец на новом листе
    wsDataSheet.Columns("A").ClearContents
    With Application
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = lCalc
    End With
End Sub
Изменено: бухарик - 15.07.2024 09:48:53
копирование листа с выпадающим списком
 
Цитата
написал:
Я б в такое завернул
а куда заворачивать?  вроде бы уже предложили такое в модуль вставить,, иди это другое
копирование листа с выпадающим списком
 
Цитата
написал:
при прорсмотре свойств элемента ActivX - прекращается работа Exel,  как это победить подскажите
вот с этим бы еще разобраться...
копирование листа с выпадающим списком
 
ё-маё,  а ларчик-то просто открывался))) , вялiзнае дзякуй!
копирование листа с выпадающим списком
 
Цитата
написал:
а данные для него откуда берутся?
как понимаю-отсюда (скрин),  только пробовал в новом листе вставить, не работает всеравно, слабо в этом понимаю к сожалению
копирование листа с выпадающим списком
 
Цитата
написал:
При копировании листа объект копируется вместе с ним, и всеми свойствами что у исходного.
так вот этого как я понимаю и не происходит. приложу-ка  файл ,  поле где список с выбором месяца,, на Лист2 оно пустое.  А еще проблема при прорсмотре свойств элемента ActivX - прекращается работа Exel,  как это победить подскажите
Изменено: бухарик - 16.04.2024 08:15:02
копирование листа с выпадающим списком
 
может ктото подскажет, на листе имеется выпадающий список,  использовано "Поле со списком (элемент ActiveX)". Если копировать лист то в новом листе уже не работает выбор значений и поле выбора значений пустое.  Что нужно сделать чтобы в новом листе все работало?
Почему не перемещается лист
 
Меня смутило что в меню что опция называется "Защитить лист" а не "Снять защиту листа". как сняли защиту поделитесь секретом, там же пароль которого я не знаю. почти все способы перепробовал, ничего не получилось
 
Почему не перемещается лист
 
Доброго дня всем и с Наступающим!
Подскажите как решить проблему файла-пытаюсь перенести лист в др.книгу , но указанная опция недоступна как и многие другие,  хотя защита листа отсутствует. Заранее благодарен.
в чем состоит зависимость ячейки?
 
вот спасибо что подсказали что по стрелке щелкать))) век живи и век учись. дальше уж сам наверное разберусь, там и впрямь на др.листы тянет
в чем состоит зависимость ячейки?
 
щелкал, листик исчезает а в ячейке появляется курсор за введенным числом 11,04.  и я же не зря сбросил скриншоты-в ячейках этих нет формул..  
в чем состоит зависимость ячейки?
 
Помогите понять сей ребус (скрины прилагаю). Ячейку выделяю I85, смотрю зависимости - стрелка показывает зависимость от нее значения в ячейке G83. Но ведь нету никаких формул в них!!!  и что означает маленький значек типа таблица или чтото похожее в ячейке G83?
Изменено: бухарик - 20.12.2023 06:40:57
Сбор листов с разных книг в одну VBA, подкорректировать уже готовый макрос
 
Последовал вашему совету
Не помогает просто True, - всеравно вставляет только значения....  что не так?

Изменено: бухарик - 16.11.2023 10:14:05
Сбор листов с разных книг в одну VBA, подкорректировать уже готовый макрос
 
Пришлосьь воспользоваться Штирлицем, помогает однако))
- Выкладываю Весь код, чтото решил для себя, а не решена проблема чтобы "вставлять значения и форматы" (вроде и меняю bPasteValues = vbYes  но что No что Yes вствляет только значения)
- и не знаю как отредактировать чтобы сбор листов сразу начинался с директории к примеру диска D/
Код
Sub Consolidated_Range_of_Books_and_Sheets()
    Dim iBeginRange As Object, lCalc As Long, lCol As Long
    Dim oAwb As String, sCopyAddress As String, sSheetName As String
    Dim lLastrow As Long, lLastRowMyBook As Long, li As Long, iLastColumn As Integer
    Dim wsSh As Object, wsDataSheet As Object, bPolyBooks As Boolean, avFiles
    Dim wbAct As Workbook
    Dim bPasteValues As Boolean
    
    On Error Resume Next
    'Выбираем диапазон выборки с книг
    'Set iBeginRange = Application.InputBox("Выберите диапазон сбора данных." & vbCrLf & _
                                           "1. При выборе только одной ячейки данные будут собраны со всех листов начиная с этой ячейки. " & _
                                           vbCrLf & "2. При выделении нескольких ячеек данные будут собраны только с указанного диапазона всех листов.", Type:=8)
    'для указания диапазона без диалогового окна:
    'Set iBeginRange = Range("A1:A10") 'диапазон указывается нужный
    Set iBeginRange = Range("A1") 'диапазон указывается нужный //06/07/2023
    'Если диапазон не выбран - завершаем процедуру
    If iBeginRange Is Nothing Then Exit Sub
    'Указываем имя листа
    'Допустимо указывать в имени листа символы подставки ? и *.
    'Если указать только * то данные будут собираться со всех листов
    'sSheetName = InputBox("Введите имя листа, с которого собирать данные(если не указан, то данные собираются со всех листов)", "Параметр")
    'Если имя листа не указано - данные будут собраны со вех листов
    'If sSheetName = "" Then sSheetName = "*"
     If sSheetName = "" Then sSheetName = "*"
    On Error GoTo 0
    'Запрос - вставлять на результирующий лист все данные
    'или только значения ячеек (без формул и форматов)
    'bPasteValues = (MsgBox("Вставлять только значения?", vbQuestion + vbYesNo, "Excel-VBA") = vbYes)  // григорян
    bPasteValues = vbYes
    'Запрос сбора данных с книг(если Нет - то сбор идет с активной книги)
    'If MsgBox("Собрать данные с нескольких книг?", vbInformation + vbYesNo, "Excel-VBA") = vbYes Then  // григорян
        avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выбор файлов", , True)
        If VarType(avFiles) = vbBoolean Then Exit Sub
        bPolyBooks = True
        lCol = 1
    'Else
     '   avFiles = Array(ThisWorkbook.FullName)
    'End If
    'отключаем обновление экрана, автопересчет формул и отслеживание событий
    'для скорости выполнения кода и для избежания ошибок, если в книгах есть иные коды
    With Application
        lCalc = .Calculation
        .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual
    End With
    'создаем новый лист в книге для сбора
    Set wsDataSheet = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
    'если нужно сделать сбор данных на новый лист книги с кодом
    'Set wsDataSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    'цикл по книгам
    For li = LBound(avFiles) To UBound(avFiles)
        If bPolyBooks Then
            Set wbAct = Workbooks.Open(Filename:=avFiles(li))
        Else
            Set wbAct = ThisWorkbook
        End If
        oAwb = wbAct.Name
        'цикл по листам
        For Each wsSh In wbAct.Sheets
            If wsSh.Name Like sSheetName Then
                'Если имя листа совпадает с именем листа, в который собираем данные
                'и сбор идет только с активной книги - то переходим к следующему листу
                If wsSh.Name = wsDataSheet.Name And bPolyBooks = False Then GoTo NEXT_
                With wsSh
                    Select Case iBeginRange.Count
                    Case 1 'собираем данные начиная с указанной ячейки и до конца данных
                        lLastrow = .Cells(1, 1).SpecialCells(xlLastCell).Row
                        iLastColumn = .Cells.SpecialCells(xlLastCell).Column
                        sCopyAddress = .Range(.Cells(iBeginRange.Row, iBeginRange.Column), .Cells(lLastrow, iLastColumn)).Address
                    Case Else 'собираем данные с фиксированного диапазона
                        sCopyAddress = iBeginRange.Address
                    End Select
                    lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + 1
                    'вставляем имя книги, с которой собраны данные
                    If lCol Then wsDataSheet.Cells(lLastRowMyBook, 1).Resize(Range(sCopyAddress).Rows.Count).Value = oAwb
                    If bPasteValues Then 'если вставляем только значения
                        .Range(sCopyAddress).Copy
                        wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues
                    Else
                        .Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol)
                    End If
                End With
            End If
NEXT_:
        Next wsSh
        If bPolyBooks Then wbAct.Close False
    Next li
    With Application
        .ScreenUpdating = True: .EnableEvents = True: .Calculation = lCalc
    End With
End Sub
Сбор листов с разных книг в одну VBA, подкорректировать уже готовый макрос
 
копирую из VBA - меняет кодировку
Сбор листов с разных книг в одну VBA, подкорректировать уже готовый макрос
 
Код
абракадабру какуюто вставляет..

Изменено: бухарик - 12.10.2023 19:39:02
Сбор листов с разных книг в одну VBA, подкорректировать уже готовый макрос
 
так это уже есть, заредактировал  выполнение запросов,  выдает ошибку
Сбор листов с разных книг в одну VBA, подкорректировать уже готовый макрос
 
спрошу сюда, хоть тема и заезженная, но я пока учусь, потому и не все получается.
Как убрать эти запросы чтобы сразу работало выбор Нет (не только значений) и собирались данные с нескольких книг 9т.е. кнопака ДА) ?

'Запрос - вставлять на результирующий лист все данные
   'или только значения ячеек (без формул и форматов)
   bPasteValues = (MsgBox("Вставлять только значения?", vbQuestion + vbYesNo, "Excel-VBA") = vbYes)
   'Запрос сбора данных с книг(если Нет - то сбор идет с активной книги)
   If MsgBox("Собрать данные с нескольких книг?", vbInformation + vbYesNo, "Excel-VBA") = vbYes Then
       avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выбор файлов", , True)
       If VarType(avFiles) = vbBoolean Then Exit Sub
       bPolyBooks = True
       lCol = 1
   Else
       avFiles = Array(ThisWorkbook.FullName)
   End If
не знаю к екому и куда обратиться с помощью, конвертация файлов
 
Цитата
написал:
2. отключил в оригинале "Выбор папки"... сейчас обоабатывает все файлы из текущей папки
это конечно сугубо мое мнение-но лучше когда есть диалог выбора директории. у меня эти файлы хранятся в строго отведенной папке для хранения. бухгалтерия ведется совершенно в другой,  но у др.конечно может быть и по другому...
не знаю к екому и куда обратиться с помощью, конвертация файлов
 
Цитата
написал:
Прикрепленные файлы
JackF.rar  (37.12 КБ)
судя по наименованию архива... кто делал всетаки, кому было не интересно?  )))
не знаю к екому и куда обратиться с помощью, конвертация файлов
 
архив поврежден...это так специально для чайников делается?  хотя проблема решаема по-другому..  
Изменено: бухарик - 02.06.2023 07:43:45
Импорт из текстового файла в таблицу
 
Цитата
написал:
У каждого файла первая строка заголовок, последующие строки данные.Склеить их в один... потерять всю структуру. Надо обрабатывать каждый отдельно.
совершенно верно подмечено
не знаю к екому и куда обратиться с помощью, конвертация файлов
 
Цитата
написал:
Ну и надеемся, что к решению подключится Jack Famous...
а он подключится бесплатно? я понимаю что все хотят заработать, но ведь ничто человеческое нам не чуждо и альтруизм хорошая черта все-таки, да и Земля круглая кстати)))
Изменено: бухарик - 01.06.2023 14:26:53
не знаю к екому и куда обратиться с помощью, конвертация файлов
 
а еще бы хотелось видеть этот свод в таком виде как я внес изменения в шаблон-выделенное красным не нужно, а синим желательно взамен.
Хотя не совсем понимаю для чего шаблон-ведь данные берутся из *210,  и наверняка можно формат ячеек сразу подогнать макросом в этом же листе.
Изменено: бухарик - 01.06.2023 14:25:58
не знаю к екому и куда обратиться с помощью, конвертация файлов
 
и вот файлики. кстати даже ругается на неверное расширение 210, к чему это? на том форуме без проблем.
Страницы: 1 2 След.
Наверх