В документе MS Word - находится множество рамок, в которых есть различное содержимое (либо текст, либо рисунки ) Эти рамочные элементы - VBA называет Frames.
Задача - вынести это содержимое из рамок. Использую код:
Код
Sub Макрос1()
Dim fr As Frame
For Each fr In ThisDocument.Frames
fr.Delete
Next fr
End Sub
Этот код удаляет рамки, но содержимое рамок - просто вываливает в документ word - в хаотическом порядке (перемешивая их в кучу). Хотя нужен именно порядок размещения, а не просто удаление Frames.
Как макросом составить изначальную последовательность Frames в документе (снизу вверх, в том порядке как они отображаются в документе), а затем удалить Frames и расставить содержимое рамок в построенной последовательности ?
Microsoft Office обнаружил возможное нарушение безопасности. Корпорация Майкрософт заблокировала запуск макросов, так как источник этого файла не является доверенным
Здравствуйте. Кто-нибудь сталкивался с таким странным поведением экселя ?
"Microsoft Office обнаружил возможное нарушение безопасности. Корпорация Майкрософт заблокировала запуск макросов, так как источник этого файла не является доверенным"
Макрос писал я сам - но майкрософ не разрешает мне запустить свой собственный макрос.
Добрый день. Помогите решить вопрос. Есть таблица AH:AS, которая фильтрует таблицу P1:AA1 по трем столбцам (U,W,Y), а затем сортирует ее от большего к меньшему.
Как поменять формулу в этой таблице, чтобы она фильтровала данные только по двум столбцам (U,W), если в ячейке Y1 - стоит "1" ?
(То есть ячейка Y1 - как бы отключает фильтр по столбцу Y. И после этого отображаться в AH:AS будут строки у которых 1 - в столбцах U и W. Иными словами наличие "1" в Y1 - ослабляет фильтр и в таблице AH:AS отобразится больше строк , а если в Y1 будет 0 - это наоборот ужесточит фильтр и в таблице AH:AS отобразится меньше позиций)
На листе находится таблица P2:AA170. В ней есть столбцы Первый, Второй, Третий, Четвертый, Пятый, Шестой, Седьмой - с текстовыми значениями. Для некоторых столбцов - есть дополнительные столбцы (заполненные числами) для удобства анализа таблицы.
Как для этой таблицы сделать сортировку из нескольких условий ?
1 - Если встретится строка-дубликат (в столбце ПЕРВЫЙ), то эта строка исключается (остается только одна строка из двух идентичных). 2 - Если для столбца СЕДЬМОЙ - нет 1 в желтом столбце, то эта строка исключается 3 - Если в столбцах ЧЕТВЕРТЫЙ,ПЯТЫЙ и ШЕСТОЙ - нет хотя бы одной 1, то эта строка исключается. Остаются только те строки, у которых во всех этих столбцах - стоит по 1. 4 - Среди тех строк которые прошли предыдущие фильтры - нужно провести сортировку "по-убыванию" (от большего к меньшему) - по столбцу ТРЕТИЙ (по числам в яркозеленом столбце).
Как формулой, без дополнительных столбцов сделать такую сортировку ?
Здравствуйте. Подскажите как запретить экселю - автоматически переводить дроби с точкой - в дату ? То есть эта дробь - должна вставится как текст, а не как дата. Например сейчас я вставляю в эксель дробь - "1.7391" а это тут же отображается как "янв.91"
Как заставить эти дроби вставляться так, как они выглядят - без перевода в дату ?
Здравствуйте. Подскажите почему гиф-проигрывание на листе Excel2021 спустя какое-то время само собой останавливается (примерно спустя 30 сек) ? В чем причина ?
Как сделать так, чтобы оно проигрывалось бесконечно ?
Здравствуйте. Подскажите - как в ЭКСЕЛЬ включить поддержку открытия файлов с длинной пути более 259 символов ?
У меня куча файлов экселя, но при открытия пишется что слишком длинный путь. Сократить путь - не вариант. Как заставить эксель открывать файлы с длинными путями ?
Здравствуйте. У меня на листе стоят абсолютные файлы на ячейки другой книги эксель. Но эта другая книга - всегда лежит в той же папке, что и основная книга. Сейчас все ссылки на ячейки другой книги - всегда отображаются как абсолютные.
Как вместо абсолютных ссылок на ячейки другой книги - прописать относительные ссылки ?
(чтобы можно было перемещать каталог с обеими книгами в другое место - и чтобы они все равно открывались)
На листе находится таблица A5:M20. Поиск в этой таблице - нужен по столбцам A и B. В ячейке A1 - находится число , по которому ищется ближайшее подходящее БОЛЬШЕЕ число - по столбцу A5:A20 В ячейке B1 - находится число , по которому ищется подходящее число с ТОЧНЫМ СОВПАДЕНИЕМ - по столбцу B5:B20 Нужно из таблицы, формулой - по данным из ячеек A1 и B1 - найти нужную строку в таблице и выписать ее в C1:M1.
Как формулой - без дополнительных столбцов - найти подходящее по таблице значение ?
У меня есть документ, в который надо делать записи - и на работе и дома. Открывать в googl sheets мне этот документ не нужно. Нужно что-то вроде ярлыка, по щелчку на который - этот xlsb скачивается с гуглдиска и открывается на компьютере. И при сохранении - он сохраняется в том числе и на гуглдиск.
Есть таблица и в ней можно отсортировать значения для произвольного столбца - с помощью инструмента "Сортировка".
Как провести сортировку по столбцам - при помощи макроса, щелчком по кнопке, которая находится на одном из столбцов ? (чтобы макрос определил - в какой ячейке находится щелкнутая кнопка - и провел от этой кнопки - сортировку)
Есть макрос, который конкретные, строго определенные диапазоны (вместе с шейпами) - сохраняет как jpg - в строго определенную папку.
Как изменить этот макрос, чтобы он сохранял только шейпы - в выделенной курсором произвольной области - рядом с той книгой, в которой эта область выделена ?
У меня такой вопрос. На листе много шейпов. Некоторые из них сгруппированы. Как выделив диапазон ячеек - разгруппировать те группы (или группу) шейпов, которые полностью входят в этот выделенный диапазон ?
Здравствуйте, товарищи. Помогите с непростым вопросом.
В столбце D есть текстовая формула (это просто текст, разделенный дефисами). Каждый текст - учтен в таблице. В зависимости от того - какой это текст - на его замену подбирается тот или иной шейп.
В общем эту текстовую последовательность - нужно представить в виде шейпов, разделенных шейпами в виде плюса. Если в конце текстовой записи - идет число, то его нужно разместить над шейпом.
Как макросом провести такую замену (текста на шейпы) ?
Помогите поправить макрос. Макрос сейчас расстанавливает иконки по листу, но мне кажется, что делает он это медленно.
Как заставить макрос использовать "словарь" в виде столбца адресов файлов ? (Чтобы он не просматривал все названия файлов при каждом нажатии на кнопку, а смотрел уже в готовые адреса, выписанные в желтый столбец). Мне кажется, что так он быстрее будет расставлять иконки.
Есть макрос, который расставляет иконки по таблице G13:BI54. Он находит нужное слово в этой таблице - и размещает по правую сторону от этой ячейки - иконку. Макрос размещает только png и ищет файлы во всех подпапках рядом с книгой. И как-то макрос сейчас использует таблицу BQ7:BR Сейчас этот макрос как-то подтормаживает и плохо работает, зависает (хотя если по одному столбцу будет расставлять иконки - то быстро расставляет).
Как поменять макрос, чтобы он не ссылался на таблицу BQ7:BR, а сразу искал иконки (не только png, но и jpg) в конкретной папке "Картинки\" - по тем названиям которые записаны в синих ячейках ? То есть нужно чтобы поиск картинок велся в конкретной папке "Картинки\" и поиск слов нужен только в синих ячейках (а не по всему большому диапазону G13:BI54).
Как макросом создать два хоткея (Alt+B Объединить,при повторном нажатии разъединить выделенные ячейки) (Alt+A обвести границы выделенных ячеек, при повторном нажатии убрать границы выделенных ячеек) Точнее не создать, а заставить работать.
Добрый день, уважаемые форумчане. Помогите с макросом.
На листе находится таблица F6:Q38, в ней есть некоторый текст, который записан через дефис.
Как макросом удалить из таблицы F6:Q38 записи, части которых которые записаны в столбец AA:AA, переместив их каждый в свой диапазон (диапазоны и листы где они располагаются записаны в AB:AC) (я эти записи подсветил зеленым цветом) ? И добавить в ячейку по правую сторону от места размещения - число из столбца AD. Размещать нужно не весь текст целиком, а только то что написано по правую сторону от дефиса.
Если в указанном диапазоне уже есть такое слово, то просто происходит прибавление числа для соседней ячейки Если в указанном диапазоне нет такого слова, то в самой верхней пустой ячейке это слово добавляется (и происходит прибавление числа для соседней ячейки).
Я показал стрелками, куда будут добавляться слова - для данного примера.
Здравствуйте. С Новым годом. Помогите поправить макрос.
Нашел в интернете макрос, который расставляет иконки по ячейкам. И в нем диапазон в котором он действует (K11:U37) - задан просто числами (номер столбца и номер строки). Это очень неудобно. Я например хочу сменить диапазон - и мне приходится высчитывать и отмерять какой по счету должен быть столбец в новом диапазоне, который мне требуется.
Как задать в начале этого макроса диапазон в обычном численно-буквенном виде K11:U37 (чтобы было проще менять диапазон) ?
Код
Option Explicit
Dim sl
Sub Расстановка_иконок()
ОчисткаТаблицы2
Dim R, lr, k, pat, I, f
Dim m() As Variant
Dim myPic As Shape
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set sl = CreateObject("Scripting.Dictionary")
pat = ActiveWorkbook.Path
Search2 fso.GetFolder(pat)
k = sl.keys
With ActiveSheet
lr = Cells(Rows.Count, 25).End(xlUp).Row
ReDim m(lr - 6)
m = .Range(.Cells(7, 24), .Cells(lr, 24)).Value
Dim rw&, co&
For rw = 11 To 37 Step 3
For co = 11 To 21 Step 1
For R = 1 To UBound(m)
If Cells(rw, co) = m(R, 1) Then ' если ячейка содержит один из кодов столбца Х
For I = 0 To UBound(k)
If InStr(1, k(I), m(R, 1) & ".", vbTextCompare) > 0 Then 'исправлено, если в столбце X код совпадает с именем файла, рисуем картинку
pat = sl(k(I))
With .Cells(rw, co)
Set myPic = ActiveSheet.Shapes.AddPicture( _
Filename:=pat, _
linktofile:=msoFalse, _
savewithdocument:=msoCTrue, _
Left:=.Offset(0, 0).Left + 1, _
Top:=.Offset(0, -1).Top + 1, _
Width:=.Offset(0, -1).Width - 2, _
Height:=.Offset(0, -1).Height * 3 - 2)
myPic.LockAspectRatio = msoFalse
End With
' картинка нарисована, выходим из цикла по i в цикл по r
GoTo next_r ' исправлено
Else 'если в столбце X код не совпадает с именем файла, рисуем картинку
End If
Next I
End If
next_r:
Next R
Next co
Next rw
End With
End Sub
Function Search2(Fold As Object)
Dim SubFold As Object, Fil As Object
For Each SubFold In Fold.SubFolders
Search2 SubFold
Next SubFold
For Each Fil In Fold.Files
If InStr(1, Fil.Name, ".png", vbTextCompare) > 0 Then
sl(Fil.Name) = Fil.Path
End If
Next Fil
End Function
Sub ОчисткаТаблицы2() 'Очищает таблицу от картинок, чтобы они не наслаивались при каждом срабатывании
Dim pic As Shape
ActiveSheet.Unprotect
For Each pic In ActiveSheet.Shapes
If pic.Type = msoPicture Then
If Not Application.Intersect(pic.TopLeftCell, Range("K11:U40")) Is Nothing Then
pic.Delete
End If
End If
Next pic
End Sub
Как при каждом открытии экселя - произвести добавку чисел из красных столбцов таблицы в желтые (как это показано на рисунке), но только один раз в день ?
Событие здесь - открытие книги экселя. В синей ячейке нужно записать - в какую дату макрос запускался в последний раз. В зеленой ячейке записана ТДАТА().
То есть макрос запускается и смотрит на зеленую ячейку. Если в ней дата больше чем в синей ячейке - то значения красных столбцов нужно прибавить к желтым. А содержимое зеленой ячейки скопировать в синюю.
Добрый день. Помогите макросом провести операцию копирования. Там такая ситуация. На листе есть диапазон ячеек в котором и обычные формулы и объединенные. Нужно определенный диапазон перенести на лист "S356-1" в определенное место и запустить определенный макрос. Но название макроса и название диапазона - не задано четко, а зависит от положения маленькой черной кнопки на листе. Под самой кнопкой - в ячейку вписан диапазон, который нужно скопировать (AI6:AN11). Под этой ячейкой - записан лист и адрес диапазона, куда нужно скопированное вставить (S356-1!E32:J37). Исходный диапазон и конечный диапазон - по размеру всегда одинаковы. А в верхней ячейке - записано название макроса, который нужно запустить после копирования (Макрос1)
То есть макрос будет действовать только тогда, когда в ячейке под кнопкой - находится диапазон для копирования, ниже - адрес для вставки, а выше макрос который нужно по окончании запустить. Если же под кнопкой пусто или там какой-то другой текст - то просто ничего не запустится.
Как это сделать макросом ?
Копировать там надо - значения (не формулы, которые в ячейках находятся, а их результаты, Value).
У меня в файле - в диапазоне D5:L12 находится несколько фигур-прямоугольников. Как макросом - сдвинуть их по горизонтали друг к другу - впритык, так чтобы не было свободного расстояния между ними ?
На листе находится несколько фигур и в некоторые ячейки вокруг них - вписан текст. В желтой ячейке O6 - вписано название определенной фигуры.
Как макросом - выписать в диапазон O8:O13 - содержимое трех ближайших к указанной в желтой ячейке фигуре - ячеек ? (ячейки с нулями (0) и с пробелами (" ") - должны игнорироваться)
Для выполнения данной операции нужно использовать вот этот алгоритм:
Код
Private Type CellPoint
X As Single
Y As Single
vl As Variant
End Type
Sub Test()
Dim X As Single, Y As Single, t() As CellPoint, paralast As Long
Dim Sh As Worksheet
Set Sh = ActiveSheet
paralast = -1
ReDim ListPoint(0)
For Each cel In Sh.UsedRange.Cells
If Not (Trim(cel.Value) = "" Or Trim(cel.Value) = 0) Then
paralast = paralast + 1
ReDim Preserve ListPoint(paralast)
X = cel.Left + cel.Width / 2
Y = cel.Top + cel.Height / 2
ListPoint(paralast).X = X
ListPoint(paralast).Y = Y
ListPoint(paralast).vl = Trim(cel.Value)
End If
Next
For Each Shap In Sh.Shapes
If Shap.AutoShapeType = msoShapeOval Then
With Shap.DrawingObject.ShapeRange
X = .Left + .Width / 2
Y = .Top + .Height / 2
Name_ = .Name
Debug.Print Name_, X, Y
End With
End If
Next
End Sub
Столкнулся с проблемой, что на некоторых, нагруженных всевозможными фигурами листах - перестает функционировать функция "переместить назад". работает только функция - "переместить на задний план". Хотя на ненагруженных фигурами листах - эта функция работает нормально.
Подскажите - как макросом, при нажатии на кнопку, - "надежно" переместить выделенную в настоящий момент фигуру - "назад" ? (Не на задний план, а на одну позицию назад)
Добрый вечер, специалисты по экселю. Помогите с решением.
Пытаюсь сделать скрипт - открывающий по щелчку кнопки - некоторые листы экселя - как окна - в определенных координатах монитора с определенными размерами. Но что-то не получается.
Подскажите - как заставить окна книги эксель - открываться в определенных координатах с определенными размерами окна ?
Код
Sub Макрос1()
Sheets("Лист2").Select
ActiveWindow.NewWindow
With Application
.Left = 100
.Top = 150
.Width = 400
.Height = 400
End With
Windows("3498765.xls:1").Activate
Windows("3498765.xls:2").Activate
Windows("3498765.xls:1").Activate
Sheets("Лист3").Select
ActiveWindow.NewWindow
With Application
.Left = 700
.Top = 600
.Width = 400
.Height = 400
End With
Windows("3498765.xls:3").Activate
Sheets("Лист1").Select
End Sub