Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.07.2019, 14:36   #1
aie.fineff
Пользователь
 
Регистрация: 02.07.2019
Адрес: Москва
Сообщений: 11
Репутация: 10
По умолчанию Определить сетевое имя компьютера, с которого открыли файл Excel

Добрый день! Подскажите, пожалуйста, как с помощью VBA Excel определить сетевое имя компьютера, с которого открыли файл Excel?
aie.fineff вне форума   Ответить с цитированием
Старый 02.07.2019, 14:51   #2
aie.fineff
Пользователь
 
Регистрация: 02.07.2019
Адрес: Москва
Сообщений: 11
Репутация: 10
По умолчанию

Извините, по-другому задам вопрос.

Я открыл файл Excel. Хочу с помощью макроса в этом файле определить сетевое имя компьютера, с которого я его открыл.

Подскажите, пожалуйста, какой макрос мне надо написать.

Заранее благодарен.
aie.fineff вне форума   Ответить с цитированием
Старый 02.07.2019, 15:19   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,681
Репутация: 5617
По умолчанию

простите, если я чего-то не понимаю, но при чём здесь Excel и сетевое имя?
не проще ли запустить ipconfig /all и там посмотреть сетевое имя компьютера?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 02.07.2019, 15:40   #4
aie.fineff
Пользователь
 
Регистрация: 02.07.2019
Адрес: Москва
Сообщений: 11
Репутация: 10
По умолчанию

Суть в следующем.

Есть таблица на одном листе файла Excel (этот файл не в общем доступе). Данная таблица, грубо говоря, разбита на несколько блоков. Каждый из этих блоков должен заполняться разными сотрудниками.

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

Для решения этой задачи задумка предлагается следующая.

При открытии указанного файла макрос должен определить сетевое имя компьютера сотрудника, открывшего этот файл, и заблокировать на изменения блоки, относящиеся к другим сотрудникам.

Как макросом заблокировать другие блоки мне понятно. Но не понятно как определить сетевое имя компьютера.

Можете подсказать возможный вариант?

Буду очень признателен.
aie.fineff вне форума   Ответить с цитированием
Старый 02.07.2019, 15:52   #5
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,913
Репутация: 2242
По умолчанию

Цитата:
макрос должен определить сетевое имя компьютера сотрудника, открывшего этот файл, и заблокировать на изменения блоки, относящиеся к другим сотрудникам.
а ЕСЛИ ... сотрудник зашел(сел поработать) на другом компьютере ?
его компьютер сломался и запасного настроенного точь-в-точь (с тем же сетевым именем) нет и быть увы не может.
он будет редактировать данные другого пользователя?
и не сможет исправлять свои ?!

для этих целей существуют ПОЛЬЗОВАТЕЛЬ текущий (user current)
GetCurrentUser
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 02.07.2019, 15:54   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,681
Репутация: 5617
По умолчанию

банальное имя пользователя не устроит?

Код:
MsgBox "Current user is " & Application.UserName

Цитата:
Сообщение от aie.fineff Посмотреть сообщение
Есть таблица на одном листе файла Excel (этот файл не в общем доступе). Данная таблица, грубо говоря, разбита на несколько блоков. Каждый из этих блоков должен заполняться разными сотрудниками.
ох, я бы на вашем месте посмотрел в сторону сетевого решения (банальный веб-сервер + серверная часть + любая БД = решение вашей задачи).

можно и сетевое имя получить.

для Win-64
Код:
 
 Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As LongPtr) As Long
 
' Main routine to retrieve user name.
Function GetLogonName() As String
 
 ' Dimension variables
 Dim lpBuff As String * 255
 Dim ret As Long
 
 ' Get the user name minus any trailing spaces found in the name.
 ret = GetUserName(lpBuff, 255)
 
 If ret > 0 Then
 GetLogonName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
 Else
 GetLogonName = vbNullString
 End If
End Function

Последний раз редактировалось Serge_Bliznykov; 02.07.2019 в 15:59.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 02.07.2019, 16:23   #7
aie.fineff
Пользователь
 
Регистрация: 02.07.2019
Адрес: Москва
Сообщений: 11
Репутация: 10
По умолчанию

][QUOTE=aie.fineff;1786790]

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

Спасибо!

Последний раз редактировалось aie.fineff; 02.07.2019 в 16:26.
aie.fineff вне форума   Ответить с цитированием
Старый 02.07.2019, 16:24   #8
aie.fineff
Пользователь
 
Регистрация: 02.07.2019
Адрес: Москва
Сообщений: 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
банальное имя пользователя не устроит?

Код:
MsgBox "Current user is " & Application.UserName


ох, я бы на вашем месте посмотрел в сторону сетевого решения (банальный веб-сервер + серверная часть + любая БД = решение вашей задачи).

можно и сетевое имя получить.

для Win-64
Код:
 
 Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As LongPtr) As Long
 
' Main routine to retrieve user name.
Function GetLogonName() As String
 
 ' Dimension variables
 Dim lpBuff As String * 255
 Dim ret As Long
 
 ' Get the user name minus any trailing spaces found in the name.
 ret = GetUserName(lpBuff, 255)
 
 If ret > 0 Then
 GetLogonName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
 Else
 GetLogonName = vbNullString
 End If
End Function
Спасибо большое! Все работает!
aie.fineff вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл f,компоненты которого являются символами.Получить файл g,образованный из файла f заменой всех строчных букв на прописные qaguero11 Общие вопросы Delphi 1 05.07.2016 18:01
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные числ Anton94.by Паскаль 3 29.02.2012 17:30
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные... Anton94.by Паскаль 2 08.02.2012 19:23
Как определить каталог из которого запущен .exe файл sheva_ya Помощь студентам 16 18.02.2011 15:10
как мне сохранять файл EXCEL с именем часть которого я буду брать из области Edit а VALIK Общие вопросы Delphi 2 27.02.2007 22:51


01:54.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.