Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическое добавление текущей даты в ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Автоматическое добавление текущей даты в ячейку
elpotap Дата: Среда, 20.06.2012, 02:15 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Нашла в Инете, как автоматически проставлять дату.
Но вместе с датой вставляется и время.
Возможно ли убрать время, а оставить только дату?

Описание:

Quote

Предположим, у нас имеется таблица заказов, куда пользователь вводит номер заказа, имя клиента, сумму и т.д. Необходимо сделать так, чтобы при внесении номера заказа в столбец А - в столбце B напротив введенного заказа автоматически появлялись дата и время его занесения.
Для этого щелкните правой кнопкой мыши по ярлычку листа с таблицей и выберите в контекстном меню Исходный текст.
В открывшееся окно редактора Visual Basic скопируйте этот текст:

Quote

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
With Target(1, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
End Sub


При необходимости измените "чувствительный" диапазон "А2:А100" на свой собственный. Если необходимо вставлять дату не в соседний столбец, то подставьте в оператор Target(1,2) вместо двойки число побольше.
Закройте редактор Visual Basic и попробуйте ввести что-нибудь в диапазон А2:А100. В соседней ячейке тут же появится текущая дата-время!


Сообщение отредактировал elpotap - Среда, 20.06.2012, 02:16
 
Ответить
СообщениеНашла в Инете, как автоматически проставлять дату.
Но вместе с датой вставляется и время.
Возможно ли убрать время, а оставить только дату?

Описание:

Quote

Предположим, у нас имеется таблица заказов, куда пользователь вводит номер заказа, имя клиента, сумму и т.д. Необходимо сделать так, чтобы при внесении номера заказа в столбец А - в столбце B напротив введенного заказа автоматически появлялись дата и время его занесения.
Для этого щелкните правой кнопкой мыши по ярлычку листа с таблицей и выберите в контекстном меню Исходный текст.
В открывшееся окно редактора Visual Basic скопируйте этот текст:

Quote

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
With Target(1, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
End Sub


При необходимости измените "чувствительный" диапазон "А2:А100" на свой собственный. Если необходимо вставлять дату не в соседний столбец, то подставьте в оператор Target(1,2) вместо двойки число побольше.
Закройте редактор Visual Basic и попробуйте ввести что-нибудь в диапазон А2:А100. В соседней ячейке тут же появится текущая дата-время!

Автор - elpotap
Дата добавления - 20.06.2012 в 02:15
Gustav Дата: Среда, 20.06.2012, 06:40 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (elpotap)
Но вместе с датой вставляется и время.
Возможно ли убрать время, а оставить только дату?

Возможно. Замените Now на Date.

На заметку: вручную, без макросов текущую дату (только дату) в ячейку можно вставить клавиатурной комбинацией Ctrl+; , a только время - Shift+Ctrl+; . Вставить в одну ячейку и дату, и время можно, применив обе комбинации через пробел, причем в любом порядке.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 20.06.2012, 06:51
 
Ответить
Сообщение
Quote (elpotap)
Но вместе с датой вставляется и время.
Возможно ли убрать время, а оставить только дату?

Возможно. Замените Now на Date.

На заметку: вручную, без макросов текущую дату (только дату) в ячейку можно вставить клавиатурной комбинацией Ctrl+; , a только время - Shift+Ctrl+; . Вставить в одну ячейку и дату, и время можно, применив обе комбинации через пробел, причем в любом порядке.

Автор - Gustav
Дата добавления - 20.06.2012 в 06:40
Immortalist Дата: Вторник, 21.08.2012, 11:49 | Сообщение № 3
Группа: Гости
Добрый день.
Стоит такая задача.
Есть таблица из 7 столбцов. Когда в столбец A вносят данные, в столбце E проставляется соответсвующее время. Когда в столбец F заносят данные, в столбец g заносится свое время.
Вот такой код у меня:

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False

For Each cc In Target
If Not Intersect(cc, Range("A2:A100000")) Is Nothing Then
With cc(1, 5)
.Value = IIf(Trim(cc) = "", "", Now)
End With
End If
Next

For Each cc In Target
If Not Intersect(cc, Range("F2:F100000")) Is Nothing Then
With cc(1, 2)
.Value = IIf(Trim(cc) = "", "", Now)

End With
End If
Next

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
[/vba]

1. Необходимо чтобы при удалении и повторном внесении данных в столбцы A и F время не корректировалось. Оставалось такое же как при первом внесении.
2. Проблема, что пароль на редактирование столбцов А-D имеет один сотрудник, от столбца F - другой сотрудник, а на столбцах E и G - пароль админа. При таких наворотах макрос отказывается работать. Как бы это исправить, подскажите пожалуйста.
Заранее спасибо.
 
Ответить
СообщениеДобрый день.
Стоит такая задача.
Есть таблица из 7 столбцов. Когда в столбец A вносят данные, в столбце E проставляется соответсвующее время. Когда в столбец F заносят данные, в столбец g заносится свое время.
Вот такой код у меня:

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False

For Each cc In Target
If Not Intersect(cc, Range("A2:A100000")) Is Nothing Then
With cc(1, 5)
.Value = IIf(Trim(cc) = "", "", Now)
End With
End If
Next

For Each cc In Target
If Not Intersect(cc, Range("F2:F100000")) Is Nothing Then
With cc(1, 2)
.Value = IIf(Trim(cc) = "", "", Now)

End With
End If
Next

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
[/vba]

1. Необходимо чтобы при удалении и повторном внесении данных в столбцы A и F время не корректировалось. Оставалось такое же как при первом внесении.
2. Проблема, что пароль на редактирование столбцов А-D имеет один сотрудник, от столбца F - другой сотрудник, а на столбцах E и G - пароль админа. При таких наворотах макрос отказывается работать. Как бы это исправить, подскажите пожалуйста.
Заранее спасибо.

Автор - Immortalist
Дата добавления - 21.08.2012 в 11:49
Gustav Дата: Вторник, 21.08.2012, 13:25 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Замените строку (точнее, строкИ)
[vba]
Code

.Value = IIf(Trim(cc) = "", "", Now)
[/vba]
на строку
[vba]
Code

If IsEmpty(.Value) Then .Value = Now
[/vba]
и будет Вам счастье.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 21.08.2012, 13:26
 
Ответить
СообщениеЗамените строку (точнее, строкИ)
[vba]
Code

.Value = IIf(Trim(cc) = "", "", Now)
[/vba]
на строку
[vba]
Code

If IsEmpty(.Value) Then .Value = Now
[/vba]
и будет Вам счастье.

Автор - Gustav
Дата добавления - 21.08.2012 в 13:25
Alex_ST Дата: Вторник, 21.08.2012, 13:31 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Зачем там у Вас цикл по ячейкам Target'a я не понял...
Попробуйте так:[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
       With Target.Offset(0, 4)
          .Value = IIf(IsDate(.Value), .Value, Now)
       End With
    End If
    If Not Intersect(Target, Range("F:F")) Is Nothing Then
       With Target.Offset(0, 1)
          .Value = IIf(IsDate(.Value), .Value, Now)
       End With
    End If
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 21.08.2012, 13:33
 
Ответить
СообщениеЗачем там у Вас цикл по ячейкам Target'a я не понял...
Попробуйте так:[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
       With Target.Offset(0, 4)
          .Value = IIf(IsDate(.Value), .Value, Now)
       End With
    End If
    If Not Intersect(Target, Range("F:F")) Is Nothing Then
       With Target.Offset(0, 1)
          .Value = IIf(IsDate(.Value), .Value, Now)
       End With
    End If
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 21.08.2012 в 13:31
Immortalist Дата: Вторник, 21.08.2012, 15:44 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Большое спасибо за Ваши!
Код отредактировал - первая проблема решилась! biggrin
А вот с защитой листов проблема осталась. Все так же при попытке занести данные ругается Run-time error '1004': Aplication-defined or object-defined error.
Возможно ли найти какое-то решение?

Заранее прошу прощения, плохо знаю Visual Basic...
 
Ответить
СообщениеБольшое спасибо за Ваши!
Код отредактировал - первая проблема решилась! biggrin
А вот с защитой листов проблема осталась. Все так же при попытке занести данные ругается Run-time error '1004': Aplication-defined or object-defined error.
Возможно ли найти какое-то решение?

Заранее прошу прощения, плохо знаю Visual Basic...

Автор - Immortalist
Дата добавления - 21.08.2012 в 15:44
Alex_ST Дата: Вторник, 21.08.2012, 15:53 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
А как Вы вообще умудрились дать разные права доступа к разным диапазонам листа разным пользователям?
В Excel-2003 с управлением правами доступа было плохо.
Как в 2007/2010 - не знаю (не люблю я их и потому практически не юзаю из-за долбанутого риббон-интерфейса, который настроить под себя очень трудно)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА как Вы вообще умудрились дать разные права доступа к разным диапазонам листа разным пользователям?
В Excel-2003 с управлением правами доступа было плохо.
Как в 2007/2010 - не знаю (не люблю я их и потому практически не юзаю из-за долбанутого риббон-интерфейса, который настроить под себя очень трудно)

Автор - Alex_ST
Дата добавления - 21.08.2012 в 15:53
Immortalist Дата: Вторник, 21.08.2012, 15:57 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

В том и дело, что на работе 2010 офис, а там с этим проблем нет.
Рецензирование - Разрешение изменений диапазонов - Впринципе готово. =)) В открывшемся окне просто создаем правила из серии название правила, пароль, диапазон. После того как все правила прописаны включаем защиту листа и все готово. Определенный диапазон под определенным паролем. =))
 
Ответить
СообщениеВ том и дело, что на работе 2010 офис, а там с этим проблем нет.
Рецензирование - Разрешение изменений диапазонов - Впринципе готово. =)) В открывшемся окне просто создаем правила из серии название правила, пароль, диапазон. После того как все правила прописаны включаем защиту листа и все готово. Определенный диапазон под определенным паролем. =))

Автор - Immortalist
Дата добавления - 21.08.2012 в 15:57
Alex_ST Дата: Вторник, 21.08.2012, 16:03 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
К стати, а как Вы идентифицируете юзеров?
Если по имени пользователя Офиса, так его элементарно просто и быстро поменять.
А вот если у Вас пользователи - во внутренней сети, то можно идентифицировать по сетевым именам, которые так просто уже не изменишь.
Вот Вам на всякий случай презент:[vba]
Code
Function Net_UserName$()
      Net_UserName = CreateObject("Wscript.Network").UserName
End Function
[/vba]
Тогда можно по этим именам при открытии файла программно запрещать редактировать на листах всё кроме разрешённых пользователю ячеек.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 21.08.2012, 16:05
 
Ответить
СообщениеК стати, а как Вы идентифицируете юзеров?
Если по имени пользователя Офиса, так его элементарно просто и быстро поменять.
А вот если у Вас пользователи - во внутренней сети, то можно идентифицировать по сетевым именам, которые так просто уже не изменишь.
Вот Вам на всякий случай презент:[vba]
Code
Function Net_UserName$()
      Net_UserName = CreateObject("Wscript.Network").UserName
End Function
[/vba]
Тогда можно по этим именам при открытии файла программно запрещать редактировать на листах всё кроме разрешённых пользователю ячеек.

Автор - Alex_ST
Дата добавления - 21.08.2012 в 16:03
Gustav Дата: Вторник, 21.08.2012, 17:11 | Сообщение № 10
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Alex_ST)
Зачем там у Вас цикл по ячейкам Target'a я не понял...

If Target.Count > 1 Then Exit Sub

А если сразу в несколько ячеек копи-пастнут? Я бы оставил цикл...


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (Alex_ST)
Зачем там у Вас цикл по ячейкам Target'a я не понял...

If Target.Count > 1 Then Exit Sub

А если сразу в несколько ячеек копи-пастнут? Я бы оставил цикл...

Автор - Gustav
Дата добавления - 21.08.2012 в 17:11
Alex_ST Дата: Вторник, 21.08.2012, 17:15 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
А может лучше попробовать для обеспечения большей достоверности вводимых данных запретить пастить больше чем в одну ячейку?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА может лучше попробовать для обеспечения большей достоверности вводимых данных запретить пастить больше чем в одну ячейку?

Автор - Alex_ST
Дата добавления - 21.08.2012 в 17:15
Gustav Дата: Вторник, 21.08.2012, 17:39 | Сообщение № 12
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
В общем, моё предложение такое. Таймштамп пишется в колонки E и G на Лист3, который скрыт c Visible = xlSheetVeryHidden, чтобы юзера его не увидели (доступ к проекту VBA закрыт паролем: 123).

На основном Листе1 в колонки E и G помещены формулы, выводящие значения из аналогичных ячеек Листа3: =ЕСЛИ(ЕПУСТО(Лист3!E1 );"";Лист3!E1). При желании формулы можно скрыть (признаться, запамятовал, как это делается), чтобы от Листа3 не было никаких явных следов на Листе1.

Коду придал следующий вид:
[vba]
Code

Private Sub Worksheet_Change(ByVal Target As Range)
        
Dim cc As Range
        
For Each cc In Target
        
      If Not Intersect(Target, Range("A:A")) Is Nothing Then
      With [Лист3].Cells(cc.Row, cc.Column).Offset(0, 4)
          If IsEmpty(.Value) And Not IsEmpty(cc.Value) Then
              .Value = Now
          End If
      End With
      End If
         
      If Not Intersect(Target, Range("F:F")) Is Nothing Then
      With [Лист3].Cells(cc.Row, cc.Column).Offset(0, 1)
          If IsEmpty(.Value) And Not IsEmpty(cc.Value) Then
              .Value = Now
          End If
      End With
      End If
Next
        
End Sub

[/vba]

P.S. "запамятовал" - освежился: Ctrl+1 \ Защита \ Скрыть формулы.
К сообщению приложен файл: Immortalist_01.xls (52.0 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 21.08.2012, 18:33
 
Ответить
СообщениеВ общем, моё предложение такое. Таймштамп пишется в колонки E и G на Лист3, который скрыт c Visible = xlSheetVeryHidden, чтобы юзера его не увидели (доступ к проекту VBA закрыт паролем: 123).

На основном Листе1 в колонки E и G помещены формулы, выводящие значения из аналогичных ячеек Листа3: =ЕСЛИ(ЕПУСТО(Лист3!E1 );"";Лист3!E1). При желании формулы можно скрыть (признаться, запамятовал, как это делается), чтобы от Листа3 не было никаких явных следов на Листе1.

Коду придал следующий вид:
[vba]
Code

Private Sub Worksheet_Change(ByVal Target As Range)
        
Dim cc As Range
        
For Each cc In Target
        
      If Not Intersect(Target, Range("A:A")) Is Nothing Then
      With [Лист3].Cells(cc.Row, cc.Column).Offset(0, 4)
          If IsEmpty(.Value) And Not IsEmpty(cc.Value) Then
              .Value = Now
          End If
      End With
      End If
         
      If Not Intersect(Target, Range("F:F")) Is Nothing Then
      With [Лист3].Cells(cc.Row, cc.Column).Offset(0, 1)
          If IsEmpty(.Value) And Not IsEmpty(cc.Value) Then
              .Value = Now
          End If
      End With
      End If
Next
        
End Sub

[/vba]

P.S. "запамятовал" - освежился: Ctrl+1 \ Защита \ Скрыть формулы.

Автор - Gustav
Дата добавления - 21.08.2012 в 17:39
Immortalist Дата: Четверг, 23.08.2012, 11:24 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Прошу прощения, что долго не отвечал, забегался.
Огромное Вам спасибо Gustav, просто то что нужно было!!!! Немного подредактировал под себя, получилось если не идеально, то очень близко к этому!!! Спасибо еще раз всем большое, если что обращусь за помощью!!
Хорошего всем дня!!
 
Ответить
СообщениеПрошу прощения, что долго не отвечал, забегался.
Огромное Вам спасибо Gustav, просто то что нужно было!!!! Немного подредактировал под себя, получилось если не идеально, то очень близко к этому!!! Спасибо еще раз всем большое, если что обращусь за помощью!!
Хорошего всем дня!!

Автор - Immortalist
Дата добавления - 23.08.2012 в 11:24
pinguindell Дата: Суббота, 23.02.2013, 08:39 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Добрый день уважаемые форумчане.

Подскажите как мне решить следующий вопрос.
Для автоматического добавления даты в ячейку использую следующий код (добавлен в исходный текст листа).

[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
   Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Cells.Count > 1 Then Exit Sub
          If Not Intersect(Target, Range("A1:A1000000")) Is Nothing Then
              With Target(1, 2)
                  .Value = Now
                  .EntireColumn.AutoFit
              End With
          End If
End Sub
[/vba]

Все работает прекрасно, но в тоже время если в столбец А просто вставить данные путем копирования (Ctrl+V) из другого файла - то в столбце В даты не отображаются, по сути добавление значений в ячейку это и есть изменение значений ?

Можно ли как-то решить данную проблему ?
К сообщению приложен файл: Example.xlsm (15.1 Kb)


Сообщение отредактировал pinguindell - Суббота, 23.02.2013, 08:41
 
Ответить
СообщениеДобрый день уважаемые форумчане.

Подскажите как мне решить следующий вопрос.
Для автоматического добавления даты в ячейку использую следующий код (добавлен в исходный текст листа).

[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
   Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Cells.Count > 1 Then Exit Sub
          If Not Intersect(Target, Range("A1:A1000000")) Is Nothing Then
              With Target(1, 2)
                  .Value = Now
                  .EntireColumn.AutoFit
              End With
          End If
End Sub
[/vba]

Все работает прекрасно, но в тоже время если в столбец А просто вставить данные путем копирования (Ctrl+V) из другого файла - то в столбце В даты не отображаются, по сути добавление значений в ячейку это и есть изменение значений ?

Можно ли как-то решить данную проблему ?

Автор - pinguindell
Дата добавления - 23.02.2013 в 08:39
AlexM Дата: Суббота, 23.02.2013, 12:21 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A10000"), Target) Is Nothing Then
For Each iCell In Target
iCell(1, 2) = Now
Next
End If
End Sub
[/vba]
К сообщению приложен файл: Example_new.xls (28.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A10000"), Target) Is Nothing Then
For Each iCell In Target
iCell(1, 2) = Now
Next
End If
End Sub
[/vba]

Автор - AlexM
Дата добавления - 23.02.2013 в 12:21
pinguindell Дата: Суббота, 23.02.2013, 12:56 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

AlexM, большое СПС, работает. Что мне нравится в данном коде, так это то, что он работает даже при выключенных макросах.
 
Ответить
СообщениеAlexM, большое СПС, работает. Что мне нравится в данном коде, так это то, что он работает даже при выключенных макросах.

Автор - pinguindell
Дата добавления - 23.02.2013 в 12:56
AlexM Дата: Суббота, 23.02.2013, 12:58 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (pinguindell)
он работает даже при выключенных макросах

Такого не должно быть



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (pinguindell)
он работает даже при выключенных макросах

Такого не должно быть

Автор - AlexM
Дата добавления - 23.02.2013 в 12:58
Serge_007 Дата: Суббота, 23.02.2013, 12:59 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (AlexM)
Такого не должно быть

Такого не МОЖЕТ быть wink


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (AlexM)
Такого не должно быть

Такого не МОЖЕТ быть wink

Автор - Serge_007
Дата добавления - 23.02.2013 в 12:59
RAN Дата: Суббота, 23.02.2013, 12:59 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата (pinguindell)
Что мне нравится в данном коде, так это то, что он работает даже при выключенных макросах.


Вас не Ганс Христиан зовут?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата (pinguindell)
Что мне нравится в данном коде, так это то, что он работает даже при выключенных макросах.


Вас не Ганс Христиан зовут?

Автор - RAN
Дата добавления - 23.02.2013 в 12:59
pinguindell Дата: Суббота, 23.02.2013, 13:06 | Сообщение № 20
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Цитата (AlexM)
Цитата (pinguindell писал(а)):
он работает даже при выключенных макросах
Такого не должно быть


точно, Вы правы, просто не на ту опцию посмотрел. Действительно при выключенных макросах не работает.

А Вы не знаете можно ли назначить событие, при открытии книги, чтобы выполнялся следующий макрос, который программно снимал ограничения Excel

Источник:http://excelvba.ru/code/Security

[vba]
Код
Sub Enable_AccessVBOM_and_Macro()
     On Error Resume Next
     Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
            "\Excel\Security\"

     ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"

     ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub
[/vba]

И вопрос в догонку, по коду видно что макрос создает ключ в реестре, поэтому как мне кажется будет проблема при запуске такого когда на компьютере с учетной записью обычного пользователя, а не админа ?
 
Ответить
Сообщение
Цитата (AlexM)
Цитата (pinguindell писал(а)):
он работает даже при выключенных макросах
Такого не должно быть


точно, Вы правы, просто не на ту опцию посмотрел. Действительно при выключенных макросах не работает.

А Вы не знаете можно ли назначить событие, при открытии книги, чтобы выполнялся следующий макрос, который программно снимал ограничения Excel

Источник:http://excelvba.ru/code/Security

[vba]
Код
Sub Enable_AccessVBOM_and_Macro()
     On Error Resume Next
     Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
            "\Excel\Security\"

     ' включаем программный доступ к объектной модели проекта VBA
    CreateObject("WScript.Shell").RegWrite Key$ & "AccessVBOM", 1, "REG_DWORD"

     ' ставим низкий уровень безопасности (применится после перезапуска Excel)
    CreateObject("WScript.Shell").RegWrite Key$ & "VBAWarnings", 1, "REG_DWORD"
End Sub
[/vba]

И вопрос в догонку, по коду видно что макрос создает ключ в реестре, поэтому как мне кажется будет проблема при запуске такого когда на компьютере с учетной записью обычного пользователя, а не админа ?

Автор - pinguindell
Дата добавления - 23.02.2013 в 13:06
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!