чего-то в голову ударило, написал еще вот такой изврат [vba]
Код
Public Sub rr() Dim arr(), i& With CreateObject("ScriptControl") .Language = "JScript" .AddCode "function a(b){return b.replace(/[А-ЯЁ]/gm,function(c){return c.toLowerCase()})}" arr = Selection.Value For i = LBound(arr) To UBound(arr) If Len(arr(i, 1)) Then arr(i, 1) = .Run("a", arr(i, 1)) Next Selection.Value = arr End With End Sub
[/vba]
чего-то в голову ударило, написал еще вот такой изврат [vba]
Код
Public Sub rr() Dim arr(), i& With CreateObject("ScriptControl") .Language = "JScript" .AddCode "function a(b){return b.replace(/[А-ЯЁ]/gm,function(c){return c.toLowerCase()})}" arr = Selection.Value For i = LBound(arr) To UBound(arr) If Len(arr(i, 1)) Then arr(i, 1) = .Run("a", arr(i, 1)) Next Selection.Value = arr End With End Sub
Sub gg() Dim strPath$ With ActiveWorkbook .Sheets(Array("Лист1", "Лист2")).Copy strPath = .Path End With Sheets().Select: Cells.Select: With Selection .Copy: .PasteSpecial xlPasteValues, xlNone End With ActiveCell.Select: ActiveSheet.Select Application.DisplayAlerts = 0 With ActiveWorkbook .SaveAs strPath & "\xxx.xls", 56 .Close End With Application.DisplayAlerts = 1 End Sub
[/vba]
lordua, попробуйте так [vba]
Код
Sub gg() Dim strPath$ With ActiveWorkbook .Sheets(Array("Лист1", "Лист2")).Copy strPath = .Path End With Sheets().Select: Cells.Select: With Selection .Copy: .PasteSpecial xlPasteValues, xlNone End With ActiveCell.Select: ActiveSheet.Select Application.DisplayAlerts = 0 With ActiveWorkbook .SaveAs strPath & "\xxx.xls", 56 .Close End With Application.DisplayAlerts = 1 End Sub
Sub Перенос() Dim rng As Range, strFile$, OutApp As Object, bool As Boolean strFile$ = Environ("tmp") & "\последняя строка.xls" With ThisWorkbook.Sheets("Отчет за сутки") On Error Resume Next Set rng = .Range("A2:j" & Application.Max(.Cells(.Rows.Count, 1).End(xlUp).Row, 2)).SpecialCells(2) If rng Is Nothing Then MsgBox "Нет данных для переноса!" Exit Sub End If Application.DisplayAlerts = False rng.Copy Sheets("Отчет за 2016 г.").Range("A" & .Rows.Count).End(xlUp)(2) .Copy With ActiveWorkbook With .Sheets(1) .Rows(2).Resize(rng.Rows.Count - 1).Delete .Range(.Rows(3), .Rows(3).End(xlDown)).Delete .SaveAs strFile$, 56: .Parent.Close End With End With Set OutApp = GetObject(, "Outlook.Application") Err.Clear If OutApp Is Nothing Then Set OutApp = CreateObject("Outlook.Application") bool = True End If With OutApp.CreateItem(0) .To = Join(Array("пупкин@mail.ru", "васичкин@mail.ru"), ";") .Subject = "Статистика" .Body = "Во вложении отчет" .Attachments.Add strFile .Send End With Kill strFile If bool Then OutApp.Quit Set OutApp = Nothing rng.ClearContents: .Parent.Save MsgBox ("Внесено в отчет за 2016 год, отправлено Пупкину и Васичкину!") End With Application.DisplayAlerts = True End Sub
[/vba]
Controler, попробуйте так [vba]
Код
Sub Перенос() Dim rng As Range, strFile$, OutApp As Object, bool As Boolean strFile$ = Environ("tmp") & "\последняя строка.xls" With ThisWorkbook.Sheets("Отчет за сутки") On Error Resume Next Set rng = .Range("A2:j" & Application.Max(.Cells(.Rows.Count, 1).End(xlUp).Row, 2)).SpecialCells(2) If rng Is Nothing Then MsgBox "Нет данных для переноса!" Exit Sub End If Application.DisplayAlerts = False rng.Copy Sheets("Отчет за 2016 г.").Range("A" & .Rows.Count).End(xlUp)(2) .Copy With ActiveWorkbook With .Sheets(1) .Rows(2).Resize(rng.Rows.Count - 1).Delete .Range(.Rows(3), .Rows(3).End(xlDown)).Delete .SaveAs strFile$, 56: .Parent.Close End With End With Set OutApp = GetObject(, "Outlook.Application") Err.Clear If OutApp Is Nothing Then Set OutApp = CreateObject("Outlook.Application") bool = True End If With OutApp.CreateItem(0) .To = Join(Array("пупкин@mail.ru", "васичкин@mail.ru"), ";") .Subject = "Статистика" .Body = "Во вложении отчет" .Attachments.Add strFile .Send End With Kill strFile If bool Then OutApp.Quit Set OutApp = Nothing rng.ClearContents: .Parent.Save MsgBox ("Внесено в отчет за 2016 год, отправлено Пупкину и Васичкину!") End With Application.DisplayAlerts = True End Sub
зачем? в чем собственно проблема? Страница 1 - это первый диапазон, Страница 2 - это второй, выбрали 1 - получили сводную только из первого, 2 - только из второго, все - оба диапазона в одной сводной. А зачем пусто не понятно ... Что вы ожидаете получить выбрав этот пункт (если бы он был)? В поле Страница консолидированной сводной из нескольких диапазонов пункта пусто никогда не было и, имхо, никогда не будет
зачем? в чем собственно проблема? Страница 1 - это первый диапазон, Страница 2 - это второй, выбрали 1 - получили сводную только из первого, 2 - только из второго, все - оба диапазона в одной сводной. А зачем пусто не понятно ... Что вы ожидаете получить выбрав этот пункт (если бы он был)? В поле Страница консолидированной сводной из нескольких диапазонов пункта пусто никогда не было и, имхо, никогда не будетkrosav4ig