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

Страницы: 1
Ссылки на именованные диапазоны
 
Здравствуйте!
Есть макрос копирующий лист книги в новую книгу. При этом нужно разорвать связи с исходным файлом, оставив локальные формулы (внутри листа). Проблема в том, что на листе есть ссылки на именованные диапазоны (некоторые динамические) и если удалять макросом сами именованные диапазоны, то пропадают значения. А вариант только с разрывом внешних связей не работает (excel просто отрубается). Пытался найти инфу можно ли перебрать все ячейки определенного диапазона листа на наличие ссылок на именованные диапазоны, и тогда преобразовать ячейку в значение, но ничего не нашел.

Вот сам код (компиляция из выложенных в инет):

Код
Sub ActSheetSave()
    Dim wb As Workbook
    Dim FolderName As String
    Dim fname As String
    Dim mName As String
    Dim n As Variant
        
    Application.ScreenUpdating = False

    BookPath = ActiveWorkbook.Path
    If BookPath = "" Then
        MsgBox "Сохраните файл!"
        Exit Sub
    End If
         
            mName = Replace_symbols([C2&"_"&C3&"_"&C4&"_"&H2])
           
            ActiveSheet.Copy
            Set wb = ActiveWorkbook
            
     For Each n In wb.Names:
        On Error Resume Next
        n.Delete:
    Next
    
      'WorkbookLinks = wb.LinkSources(Type:=xlLinkTypeExcelLinks)
        'If IsArray(WorkbookLinks) Then
            'For i = LBound(WorkbookLinks) To UBound(WorkbookLinks)
                'wb.BreakLink Name:=WorkbookLinks(i), Type:=xlLinkTypeExcelLinks
            'Next i
        'End If
                                  
    Application.DisplayAlerts = False
    fname = Application.GetSaveAsFilename(InitialFileName:=mName, _
                                          FileFilter:="Excel Files (*.xlsx), *.xlsx", _
                                          Title:="Сохранить файл")
    If VarType(fname) <> vbBoolean Then ActiveWorkbook.SaveAs fname
    Application.DisplayAlerts = True
            wb.Close False
    
   ActiveSheet.Select
      
End Sub
Вытянуть значения из двумерного массива
 
китин, спасибо, все работает, буду разбираться с формулами!
Вытянуть значения из двумерного массива
 
Добрый день!
Искал на просторах сети и на Планете варианты решения (возможно я неверно ставлю задачу для поиска...) - нашел только в Приемах похожий пример (Многоразовый ВПР), но с одномерным массивом.

Суть задачи:
Есть двумерный массив данных, по вертикали марки (допустим продукции), по горизонтали материалы. В массиве нормы расхода.
Необходимо с помощью выпадающего списка выбрать Марку, а в блок Материалов подтянулись бы необходимые материалы (только те, нормы расхода по которым заполнены), далее уже простым ГПРом подтянулись бы сами нормы.

Варианты решения приветствуются как средством формул, так и макросов.

Во вложении пример.
Спасибо за помощь!
Изменено: nerubian - 25.02.2016 17:26:05
Обработка данных с внешних книг и сборка в единую БД
 
Kuzmich, спасибо большое!
С заменой точки на запятую были проблемы, использовал другую конструкцию.

Пытался совместить макросы CombineWorkbooks и CollectInfo, чтобы не загружать все внешние листы в книгу, а вытягивать из них данные, не получилось...
Хотя, если быстрее будет сначала подгрузить все листы в книгу, затем вынуть оттуда данные и удалить их, то проблем нет.
Обработка данных с внешних книг и сборка в единую БД
 
Добрый день!
Пытаюсь создать единую базу данных с данными химанализа.
Нашел пару макросов, пытался их адаптировать.
Нужно одним макросом вызвать проводник и выбрать несколько таблиц, в них всего 1 лист с данными, их положение всегда одинаково.
Далее скопировать с этих таблиц данные в единую БД с накоплением. При этом:
1. в столбец А вставить первые символы до пробела из названия внешнего файла (либо из названия листа в этом файле);
2. в столбец С вставить символы справа от пробела (см.п.1)
т.е. если книга(лист) называется 02-28 СЧ10, то в столбец А пойдет 02-28, а в С - СЧ10. Разделителем у них может быть и "_" вместо пробела, если так удобнее.
3. в столбец В идет дата из ячейки В1 открываемых листов, но там просто строчка текста, из которой нужно выдернуть дату в формате дд:мм:гггг (функцию я нашел для этого, а как ее прикрутить не понимаю).
4. в столбец D вставить № измерения из ячеек А11, А12 открываемых листов и т.д. в виде 1, 2 и т.д., либо просто нумеровать от 1 до n кол-во измерений из каждого файла.
5. в столбцы Е:АН вставить данные (алгоритм уже есть в макросе). Единственное нужно заменить в них точки на запятые, "<" убрать и преобразовать в числовой формат... У меня это есть, но работает не корректно.

Заранее спасибо за помощь, если много хочу - пишите, пойму) буду сам дальше пытаться. Хотя бы что-нибудь подскажите из этого.
Изменено: nerubian - 25.05.2015 20:12:50
Печать листов по цвету ярлыков
 
И столкнулся с проблемами:
1. из-за отличий в кодах цвета в разных версиях Excel (в 2007 желтый - 13, в 2010 - 6), пришлось привязаться к конкретному листу.
2. Если скрыт хотя бы один "цветной" лист - то вылетает ошибка, хотелось бы сделать так, чтобы он не брал скрытые листы...
Печать листов по цвету ярлыков
 
Нашел по-итогу в качестве примера следующий макрос и подправил для себя:
Код
Sub SelectSheetsPrint()
    Dim a() As Integer, i As Integer, j As Integer
    ReDim a(1 To Sheets.Count) 
    j = 0 
        For i = 1 To Sheets.Count 
        If Sheets(i).Tab.ColorIndex = Sheets("Образец").Tab.ColorIndex Then
            j = j + 1 
            a(j) = Sheets(i).Index 
        End If
    Next
    ReDim Preserve a(1 To j) 
    Sheets(a).Select 
    Application.Dialogs(xlDialogPrint).Show
    Sheets("Оглавление").Select
End Sub
Печать листов по цвету ярлыков
 
Здравствуйте!
Пытаюсь сварганить макрос для печати листов по определенному цвету ярлыков. Пока что с помощью поиска сварганил следущее:
Код
Sub ColorSheet()
For i = 1 To Sheets.Count
If Sheets(i).Tab.ColorIndex = 13 Then Sheets(i).PrintOut From:=1, To:=Sheets(i).PageSetup.Pages.Count
Next
End Sub
Однако я хочу, чтоб листы выделялись по цвету и вызывалось окно печати выделенных листов. Пытался сварганить, но не работает:
Код
Sub ColorSheetDialog()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If sh.Tab.ColorIndex = 13 Then sh.Select False
Next sh
Application.Dialogs(xlDialogPrint).Show
End Sub
Что тут надо подправить, не подскажите? Спасибо.
Страницы: 1
Наверх