Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Код:
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 в 14:59.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.07.2019, 15:23   #7
aie.fineff
Пользователь
 
Регистрация: 02.07.2019
Сообщений: 25
По умолчанию

][QUOTE=aie.fineff;1786790]

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

Спасибо!

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

Цитата:
Сообщение от 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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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