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

Страницы: 1 2 След.
Как заставить элемент управления формы (переключатель) работать на защищенном листе?
 
Листы защищены таким макросом:

Код
Sub Protection()
    Dim ws As Worksheet
    ActiveWorkbook.Protect Password:=123, Structure:=True
    For Each ws In Worksheets
        ws.Protect Password:=123, UserInterfaceOnly:=True: ws.EnableSelection = xlNoRestrictions
    Next
End Sub


В своствах переключателей снята отметка "Защищаемый объект".
При защите листа выбор переключателя не работает.
Возможно ли макросом сохранить новую книгу на исходную?
 
Собственно, задача - затереть исходный файл.    

Код
Sub replace()
    fname = ThisWorkbook.Path + "\" + ThisWorkbook.Name
   
        ' как-то разорвать связь исходника с диском, чтоб иметь возможность записать поверх.
     
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=fname, FileFormat _
        :=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    ActiveWindow.Close
End Sub
Как отправить email через CDO?
 
Добрый день.
Пытаюсь отправить почу этим макросом, но получаю ошибку "Отказ сервера SMTP". Какая может быть причина?

Код
Sub sendMail()
    Const CDO_Cnf = "http://schemas.microsoft.com/cdo/configuration/"
    Dim oCDOCnf As Object, oCDOMsg As Object
    Dim SMTPserver As String, sUsername As String, sPass As String, sMsg As String
    Dim sTo As String, sFrom As String, sSubject As String, sBody As String, sAttachment As String
    On Error Resume Next
    'sFrom – как правило совпадает с sUsername
    SMTPserver = "smtp-relay.gmail.com"    ' SMTPServer
    sUsername = "email_01@gmail.com"    ' Учетная запись на сервере
    sPass = "*****"    ' Пароль к почтовому аккаунту
 
    If Len(SMTPserver) = 0 Then MsgBox "Не указан SMTP сервер", vbInformation, "www.Excel-VBA.ru": Exit Sub
    If Len(sUsername) = 0 Then MsgBox "Не указана учетная запись", vbInformation, "www.Excel-VBA.ru": Exit Sub
    If Len(sPass) = 0 Then MsgBox "Не указан пароль", vbInformation, "www.Excel-VBA.ru": Exit Sub
 
    sTo = "email_02@gmail.com"    'Кому
    sFrom = "email_01@gmail.com"    'От кого
    sSubject = "Автоотправка"    'Тема письма
    sBody = "Проверка отправки"    'Текст письма
    sAttachment = "C:/Temp/Книга1.xls"    'Вложение(полный путь к файлу)
 
    'Назначаем конфигурацию CDO
    Set oCDOCnf = CreateObject("CDO.Configuration")
    With oCDOCnf.Fields
        .Item(CDO_Cnf & "sendusing") = 2
        .Item(CDO_Cnf & "smtpauthenticate") = 1
        .Item(CDO_Cnf & "smtpserver") = SMTPserver
        'если необходимо указать SSL
        .Item(CDO_Cnf & "smtpserverport") = 465 'для Gmail 465
        .Item(CDO_Cnf & "smtpusessl") = True
        '=====================================
        .Item(CDO_Cnf & "sendusername") = sUsername
        .Item(CDO_Cnf & "sendpassword") = sPass
        .Update
    End With
    'Создаем сообщение
    Set oCDOMsg = CreateObject("CDO.Message")
    With oCDOMsg
        Set .Configuration = oCDOCnf
        .BodyPart.Charset = "koi8-r"
        .From = sFrom
        .To = sTo
        .Subject = sSubject
        .TextBody = sBody
        'Проверка наличия файла по указанному пути
        If Len(sAttachment) > 0 Then
            If Dir(sAttachment, 16) <> "" Then
                .AddAttachment sAttachment
            End If
        End If
        .Send
    End With
 
    Select Case Err.Number
    Case -2147220973: sMsg = "Нет доступа к Интернет"
    Case -2147220975: sMsg = "Отказ сервера SMTP"
    Case 0: sMsg = "Письмо отправлено"
    Case Else: sMsg = "Ошибка номер: " & Err.Number & vbNewLine & "Описание ошибки: " & Err.Description
    End Select
    MsgBox sMsg, vbInformation, "www.Excel-VBA.ru"
    Set oCDOMsg = Nothing: Set oCDOCnf = Nothing
End Sub
Как внести изменения макросом в файл с аттрибутом "Только чтение"
 
Добрый день.
Есть файл с аттрибутом "Только чтение", хочу внести в него изменения и сохранить.
Макрос снимает аттрибут "Только чтение" (этот видно в Свойствах по правому клику на файле), но изменения не сохраняет и при ручном сохранении говорит, что "Файл только для чтения и т.д."
Как "разблокировать" открытый файл и сохранить его макросом?

Код
Sub checkAccess()
    
    ThisWorkbook.RemovePersonalInformation = 0
    
    Dim XMLHTTP As Object
    Dim URL$
    
    URL = "https://somelink"
    
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", URL, False
    On Error Resume Next
    XMLHTTP.send
        If XMLHTTP.Status = 200 Then
            MsgBox "Ссылка доступна."
        Else
            MsgBox XMLHTTP.Status & " - Ссылка НЕ доступна."
            SetAttr ThisWorkbook.Path + "\" + ThisWorkbook.Name, vbReadOnly = False
            Cells(1, 1) = Time
            
            ThisWorkbook.Save ' Почему не сохраняет?
        End If
    Set XMLHTTP = Nothing
End Sub
Есть толковый форум по Google Sheets и AppScript?
 
Интересует хороший форум (аналогичный этому), где можно позадавать вопросы по макросам гугл таблиц. Шлаковерфлоу не предлагать, там ответа не дождешься.
И чтоб два раза не вставать, может здесь кто знает, как решить проблему.
У меня есть скрипт, который вставляет в гугл таблицу строку с несколькими значениями, затем суммирует эти строки по нескольким критериям.
Вставка значений на лист занимает 3-4 секунды, но скрипт суммирования уже начинает работать и суммирует пустые ячейки.

Код
function add_1() {
  var ss = SpreadsheetApp.getActive();

    ss.getActiveSheet().insertRowsBefore(9, 1);

    ss.getRange('A9').setValue(new Date());
    ss.getRange('B9').setValue(ss.getRange('B3').getValue())
    ss.getRange('C9').setValue(ss.getRange('C3').getValue())
    ss.getRange('D9').setValue(ss.getRange('D3').getValue())
    ss.getRange('E9').setValue(ss.getRange('E3').getValue())
    
    ss.getRange('D3').clearContent();

    summary()

};


Как дождаться обновления листа и затем продолжить выполнение?
Изменено: Михаил - 24.04.2024 23:37:30
Шифрование данных на листе, Есть простой скрипт, или это авторские/платные вещи?
 
По мотивам  данной темы хотел найти простой скрипт шифровки/дешифровки данных, но не удалось нагуглить ничего полезного.
Есть вариант найти что-то простое для среднего пользователя?
Можно ли объединенные ячейки выровнять по высоте текста (макросом)?
 
В одной ячейке это решается  переносом текста.
Можно ли как-то выровнять объединенную ячейку?
Как макросом разделить выделенный диапазон (Selection) на ячейки?
 
Можно ли разделить выбранный диапазон на отдельные ячейки, для извлечения данных в разные  переменные?
Диапазон может  быть выбран на соседних ячейках (А1, А2) или через  Ctrl (A1, B3).

В результате хочу иметь переменные:
х = значение из А1
y = значение из А2 (или В3 по  второму варианту)
Изменено: Михаил - 16.11.2023 13:52:42
Как открыть книгу "только для чтения" по условию?
 
Есть один  пользователь с  правом редактирования книги, остальным нужен только просмотр. Иногда этот файл открывают одновременно, хочу сделать,  чтоб не мешали друг  другу, не сохраняли копии, не видели  лишних предлложений сохранить файл и т.д.
Можно ли  открыть книгу в режиме "только для чтения" по условию?
Что-то  типа:

Код
Private Sub Workbook_Open()
     If  Environ("USERNAME") <> "admin" Then (открыть только для чтения)
End Sub
Как сделать массив доступный в другой процедуре (или передать его значение)?
 
Добрый день.
Как в таком коде сделать массив, видимый в процедуре "bbb" или передать туда его значения?

Код
Sub main()
    Call aaa
    Call bbb
End Sub

Sub aaa()
    ReDim arr(1 To 3, 1 To 3)
End Sub

Sub bbb()
    x = arr(1, 1)
End Sub
Почему сортировка создает ошибку в файле?
 
Добрый день.
Если открыть файл-пример, выполнить сортировку, сохранить и закрыть - при следующем открытии отображается ошибка и предложение восстановить файл. Сохранить его тоже не получается (поскольку файл восстановлен), а только "Сохранить как..."
В чем может быть причина? Офис 2010.

Код
Sub sort()

        'Сортировка по убыванию столбца J
        iLastrowI = Cells(Rows.Count, 9).End(xlUp).Row
        ActiveWorkbook.Worksheets(1).sort.SortFields.Add Key:=Range("J3"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal 'Order:=xlAscending - по возрастанию
    
    With ActiveWorkbook.Worksheets(1).sort
        .SetRange Range("I3:M" & iLastrowI)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
Изменено: Михаил - 21.05.2023 18:56:01
Формула суммы по выбранным критериям
 
Добрый день.
Подскажите формулу суммы по нескольким критериям.
Суммирование таблицы макросом по трем критериям
 
Добрый день.
Есть позиции на складе в виде первой таблицы.
Как просуммировать их (макросом, без формул) по трем критериям (название, наличие сертификата и плотность) и вывести сокращенную таблицу (где просуммированы штуки и масса одинаковых позиций)?

Подскажите, пожалуйста, алгоритм.
Как узнать свойство "Только для чтения" открытого файла?
 
Можно ли макросом узнать, открытый файл (Thisworkbook) разрешен к редактированию или открыт только для чтения?
Можно ли одним макросом внести изменение в другой?
 
Можно ли одним макросом внести изменение в другой?

Код
Sub aaa()
    ' найти в bbb() текст a = 5 и заменить на a = 10
End Sub

Sub bbb()
    a = 5 ' искомый текст, который хочу заменить
End Sub
Как изменить свойства кнопки Activex
 
Как макросом изменить свойства кнопки Activex? Запись макроса это действие не записывает.
Выборка строк с указанным количеством, без пустых строк
 
Добрый день!

Есть таблица товаров с указанием количества, возможно ли формулой сделать выборку строк во вторую таблицу, где количество больше нуля, без пустых строк?
Пример с желаемым результатом приложил.
Как отследить изменение ячейки на листе?
 
Добрый день!
Как отслеживать изменение значения в ячейке?
Нашел на форуме такой ответ, но он отслеживает ручное изменение, а на формулу не реагирует. Как отслеживать изменение полученного результата?

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
    MsgBox "B2 изменилось"
End Sub
Вставка рисунка на скрытый лист
 
Добрый день!

Как можно избавиться от Select -ов (листа, ячейки и фигуры) и работать с рисунком не раскрывая лист туда-сюда?

Код
Sub vstavka()

    Sheets("Лист1").Shapes("kvadrat").Copy
    
    Sheets("Печать").Visible = True
    
    Sheets("Печать").Select
    Range("B3").Select
    ActiveSheet.Paste
    Selection.ShapeRange.ScaleWidth 0.7, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.7, msoFalse, msoScaleFromTopLeft
    
    Sheets("Печать").Visible = False
    
End Sub
Изменено: Михаил - 01.11.2021 12:10:10
Не работает Application.ScreenUpdating = False
 
В продолжение "спортивной" темы :)
В модуле Userform моего "боевого" макроса не работает Application.ScreenUpdating = False. Вот где настоящие тормоза. Не связано ли это с Userform?
Изменено: Михаил - 21.10.2021 11:57:15
Выделить столбцы по их номерам
 
Добрый день!
Макрорекордер подсказывает, что можно выделить столбцы так:
Код
Columns("A:K").Select

Есть ли синтаксис для выделения столбцов по номерам?
Изменено: vikttur - 21.10.2021 15:23:27
Вставить символы в текстовую строку
 
Добрый день!
Есть переменная вида: d = "20102021"
Как вставить точки после 2-й и 4-й позиции, чтобы получить дату 20.10.2021 ?
Изменено: vikttur - 20.10.2021 12:29:25
Как выгрузить массив на лист без цикла?, по мотивам соседней темы
 
Есть массив на 500 элементов, выгружаю его циклом в столбцы от 1 до 500. Есть ли способ делать это быстрее, без цикла?
Как макросом скопировать диапазон из общего файла?
 
Добрый день!
Есть файл с данными в сетевой папке и локальный файл с формулами.
1. Как открыть занятый сетевой файл (для копирования диапазона), автоматически подтверждая сообщение "Открыть только для чтения"?
2. Как его закрыть, пропуская сообщение о сохранении и "В буфере обмена содержатся данные..."
Макрорекордер ничего не выдал.
Как скопировать рисунок на другой лист?
 
Добрый день!
Я уже задавал похожий вопрос, к сожалению, наиболее подходящий вариант не работает (копия вставляется на первый лист).
Как скопировать его на второй лист или удалить его на втором листе по условию?

Код
Sub Макрос3()
    If Range("A2") = "Да" Then
        Sheets("Лист1").Shapes("Рисунок 1").Copy
        Sheets("Лист2").Paste Destination:=Range("D10") 'Почему вставляется на первый лист?
    Else
        Sheets("Лист2").Shapes("Рисунок 1").Delete
    End If
End Sub
Проверить правильный ввод двух чисел со знаком умножения между ними
 
Добрый день!
Хочу создать регулярное выражение для проверки текста типа 125х250,3. Числа могут быть целые и дробные (с одним знаком после запятой), между ними "икс" или "х" (рус).
По теме RegExp написал такое:
Код
\d+[,]?\d?[xх]\d+[,]?\d+

Если в первом числе после запятой знаков больше одного - до запятой все отсекает. И вообще, хочу, чтоб больше одного знака после запятой считалось ошибкой.
Изменено: vikttur - 20.08.2021 16:05:46
Как взять данные с сайта макросом?
 
Добрый день!
Подскажите алгоритм получения данных с сайта, как написать макрос?
Интересует курс евро с https://finance.i.ua
Как скопировать рисунок с одного листа на другой, не активируя эти листы?
 
Добрый день!
Есть задача скопировать рисунок с одного листа на другой, макрорекордер выдал такое:
Код
Sub Макрос2()
    Sheets("Лист1").Select
    ActiveSheet.Shapes.Range(Array("Группа 1")).Select
    Selection.Copy
    Sheets("Лист2").Select
    Sheets("Лист2").Range("d10").Select
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft 183
    Selection.ShapeRange.IncrementTop 96
    Selection.ShapeRange.ScaleWidth 0.5, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleHeight 0.5, msoFalse, _
        msoScaleFromBottomRight
End Sub


Как сделать "тихое" копирование без тупой активации листов и рисунка? Пример в файле.
Как вставить =СЕГОДНЯ() в текст?
 
Добрый день!
Как вывести нормальный вид даты в такой строке?
Код
="Выписано " & СЕГОДНЯ()
Объединить элементы двух таблиц и просуммировать одинаковые
 
Добрый день!
Помогите придумать подходящую формулу.
Есть список названий (всего 4). Они могут быть выбраны выпадающим списком в двух желтых таблицах случайным образом.
Желаемый результат - вывести неповторяющийся список в голубую таблицу (порядок не важен) и просуммировать повторяющиеся названия.
Страницы: 1 2 След.
Наверх