Вот макрос достающие - MAC-adress от компьютера [vba]
Код
Private Sub SpecificationsNet() strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colBIOS = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter") For Each objBIOS In colBIOS Debug.Print "MAC-adress: " & objBIOS.MACAddress If Not IsNull(objBIOS.MACAddress) Then Range("A1") = objBIOS.MACAddress Next End Sub
[/vba]
Вот макрос достающие - MAC-adress от компьютера [vba]
Код
Private Sub SpecificationsNet() strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colBIOS = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter") For Each objBIOS In colBIOS Debug.Print "MAC-adress: " & objBIOS.MACAddress If Not IsNull(objBIOS.MACAddress) Then Range("A1") = objBIOS.MACAddress Next End Sub
Enix, пока вы устраняете замечание модератора, просто из общего. Первый скрипт выдаст набор MAC адресов, по числу сетевых адаптеров на ПК. Вы для чего это затеваете, если для удобства - ОК, если для безопасности, то сомнительно. Ну и конечно да, такой скрипт написать можно.
Enix, пока вы устраняете замечание модератора, просто из общего. Первый скрипт выдаст набор MAC адресов, по числу сетевых адаптеров на ПК. Вы для чего это затеваете, если для удобства - ОК, если для безопасности, то сомнительно. Ну и конечно да, такой скрипт написать можно.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Enix, Задача на мой взгляд более широкая, чем просто вопрос на форуме. Проверку МАС можно вести в коде основной программы и смотреть по всему списку какие MAC адреса есть или просто проверять есть ли нужный Две функции ниже. Вот что далее делать с этим в основном коде - зависеть от того что вы хотите получить, где и как хранить соответствие разрешений идентификаторам (в данном случае MAC адресам)
[vba]
Код
Private Function GetMACAddreses() As Variant strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set GetMACAddreses = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter") End Function
Private Function CheckMACAddres(ByVal strMAC As String) As Boolean strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objMACAddreses = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter where MACAddress = '" & strMAC & "'") CheckMACAddres = (objMACAddreses.Count <> 0) End Function
Sub test() For Each objMac In GetMACAddreses Mac = objMac.MACAddress Next End Sub
Sub test1() Debug.Print CheckMACAddres("00:0A:F7:32:F7:D4") Debug.Print CheckMACAddres("00:0A:F7:32:F7:D5") End Sub
[/vba]
В данном случае все это защита от дурака. так как например Лист8.Visible = xlSheetVeryHidden сделает лист очень скрытым, но для того кто не сможет открыть его не стандартным образом. А если откроет это все в Libre или Open Calc то и это не потребуется там это обычный Hide. Значит надо защищать книгу и.т.д.
Enix, Задача на мой взгляд более широкая, чем просто вопрос на форуме. Проверку МАС можно вести в коде основной программы и смотреть по всему списку какие MAC адреса есть или просто проверять есть ли нужный Две функции ниже. Вот что далее делать с этим в основном коде - зависеть от того что вы хотите получить, где и как хранить соответствие разрешений идентификаторам (в данном случае MAC адресам)
[vba]
Код
Private Function GetMACAddreses() As Variant strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set GetMACAddreses = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter") End Function
Private Function CheckMACAddres(ByVal strMAC As String) As Boolean strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objMACAddreses = objWMIService.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter where MACAddress = '" & strMAC & "'") CheckMACAddres = (objMACAddreses.Count <> 0) End Function
Sub test() For Each objMac In GetMACAddreses Mac = objMac.MACAddress Next End Sub
Sub test1() Debug.Print CheckMACAddres("00:0A:F7:32:F7:D4") Debug.Print CheckMACAddres("00:0A:F7:32:F7:D5") End Sub
[/vba]
В данном случае все это защита от дурака. так как например Лист8.Visible = xlSheetVeryHidden сделает лист очень скрытым, но для того кто не сможет открыть его не стандартным образом. А если откроет это все в Libre или Open Calc то и это не потребуется там это обычный Hide. Значит надо защищать книгу и.т.д.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Enix, Без конкретики и привязки к конкретному файлу, задача тенет на платный раздел. Судя по вопросам, то что будет сделано, вы не сможете адаптировать под свои нужны, а значит надо предусматривать настройку и прочее... вам решать, но сделаю я вам пример, который будет открываться только на машине с моим MAC адресом, чем он вам поможет? .
Enix, Без конкретики и привязки к конкретному файлу, задача тенет на платный раздел. Судя по вопросам, то что будет сделано, вы не сможете адаптировать под свои нужны, а значит надо предусматривать настройку и прочее... вам решать, но сделаю я вам пример, который будет открываться только на машине с моим MAC адресом, чем он вам поможет? .bmv98rus
Замечательный Временно просто медведь , процентов на 20.
bmv98rus, Для защиты, если можно давайте попробовать макрос который будет открываться только на машине с вашего MAC адресом или определенного MAC адреса, Заранее спасибо за помощь с макросом .
bmv98rus, Для защиты, если можно давайте попробовать макрос который будет открываться только на машине с вашего MAC адресом или определенного MAC адреса, Заранее спасибо за помощь с макросом .Enix
Без конкретики и привязки к конкретному файлу, задача тенет на платный раздел
В данном случае вопрос более широк чем в изначальном топике. Дам подсказку. Перед сохранением скрывать листы, ставить защиту на книгу, а после валидации ПК её снимать и открывать листы. Сам проект VBA тоже защитить паролем. При отключенных макросах "бедолага" получит один лист доступный с надписью. "не входить убьет". Все это чуть усложнит "взлом". Да, и про черный вход надо не забыть, а то получится однажды, что никто не может открыть.
Без конкретики и привязки к конкретному файлу, задача тенет на платный раздел
В данном случае вопрос более широк чем в изначальном топике. Дам подсказку. Перед сохранением скрывать листы, ставить защиту на книгу, а после валидации ПК её снимать и открывать листы. Сам проект VBA тоже защитить паролем. При отключенных макросах "бедолага" получит один лист доступный с надписью. "не входить убьет". Все это чуть усложнит "взлом". Да, и про черный вход надо не забыть, а то получится однажды, что никто не может открыть.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Пятница, 15.12.2017, 08:58
bmv98rus, Вы можете совмещать две макросы "Private Sub Workbook_Open()" в одну книгу (файл) например ваша LockByMAC-wrong и Лист WARNING Выставляю файл Лист WARNING.
bmv98rus, Вы можете совмещать две макросы "Private Sub Workbook_Open()" в одну книгу (файл) например ваша LockByMAC-wrong и Лист WARNING Выставляю файл Лист WARNING.Enix
Private Sub Workbook_Open() Dim wsSh As Worksheet Dim strMAC As String strMAC = "02:05:85:7F:EB:80" If GetObject("winmgmts:\\.\root\cimv2").ExecQuery _ ("SELECT MACAddress FROM Win32_NetworkAdapter where MACAddress = '" & strMAC & "'").Count = 0 Then MsgBox "Идентификация не пройдена!" Me.Close (False) End If For Each wsSh In ThisWorkbook.Sheets wsSh.Visible = -1 Next wsSh ThisWorkbook.Sheets("WARNING").Visible = 2 End Sub
[/vba]
Enix, ну поменяйте в _WARNING.xls
[vba]
Код
Private Sub Workbook_Open() Dim wsSh As Worksheet Dim strMAC As String strMAC = "02:05:85:7F:EB:80" If GetObject("winmgmts:\\.\root\cimv2").ExecQuery _ ("SELECT MACAddress FROM Win32_NetworkAdapter where MACAddress = '" & strMAC & "'").Count = 0 Then MsgBox "Идентификация не пройдена!" Me.Close (False) End If For Each wsSh In ThisWorkbook.Sheets wsSh.Visible = -1 Next wsSh ThisWorkbook.Sheets("WARNING").Visible = 2 End Sub
bmv98rus, можно ли добавить еще в макрос следующие задачу Например, в листе ячеек J2 написано "2018" то файл открываются если в листе J2 написано "2017" то лист закрываются При запуске файла макрос проверяют МАС адрес и соответствующий ячеек J2, например, календарный значение "2018"
bmv98rus, можно ли добавить еще в макрос следующие задачу Например, в листе ячеек J2 написано "2018" то файл открываются если в листе J2 написано "2017" то лист закрываются При запуске файла макрос проверяют МАС адрес и соответствующий ячеек J2, например, календарный значение "2018"Enix
bmv98rus, не получил ос можно пример с одной задачкой "в листе ячеек J2 написано "2018" то файл открываются если в листе J2 написано "2017" то лист закрываются"
bmv98rus, не получил ос можно пример с одной задачкой "в листе ячеек J2 написано "2018" то файл открываются если в листе J2 написано "2017" то лист закрываются"Enix