Да. Просто выберите Экспорт файла ... из окна инструментов Project Explorer :
Если вы используете Rubberduck (отказ от ответственности: я управляю этим проектом OSS ), вы также можете сделать это из окна инструментов Code Explorer :
Для использования экспортированных модулей в других проектах VBA, вам нужно импортировать обратно. Вы можете сделать это по одному файлу за раз с помощью Project Explorer VBE или сразу за всеми файлами с помощью проводника кода Rubberduck .
Или вы можете просто перетащить файлы в Project Explorer .
Стандартные модули будут иметь расширение .bas; Модули класса будут иметь .cls; Модули UserForm будут иметь файл .frm и, вероятно, двоичный файл .frx, который должен находиться в той же папке, что и .frm, чтобы правильно импортировать обратно.
Модули документов (например, модули рабочих книг и рабочих листов, такие как Sheet1
и ThisWorkbook
) не могут быть импортированы, но вы можете экспортировать их как файлы .cls из Project Explorer или как. файлы документов из Rubberduck.
Причина, по которой Rubberduck экспортирует модули документов с другим расширением файла, заключается в том, что они не могут быть импортированы обратно, поэтому атрибуты модуля и члена (которые можно обнаружить только при открытии экспортированных файлов в текстовом редакторе, например Notepad ++) могут ' не могут быть изменены так же, как обычные классовые модули.
Зарегистрированные сессии являются единственным способом предотвратить двойное мошенничество с результатами голосования, но так как Вы явно просите способ зарегистрировать IP-адрес, можно достигнуть это через:
HttpContext.Current.Request.UserHostAddress;
или
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
Должно быть достаточно легко сохранить к DB и проверке, если IP уже существует на каждом опросе.
Вы можете только garuantee, что у каждого пользователя есть одно голосование, если можно аутентифицировать пользователя. Таким образом, Вам будет нужен механизм аутентификации, который позволит Вам препятствовать тому, чтобы пользователь регистрировал несколько учетных записей.
Я могу только видеть эту работу в среде, где пользователь инвестировал что-то в свою учетную запись, как подписчик для интернет-газеты или системы репутации как на StackOverflow.
IP-адреса не будут работать на миллионы людей, которые работают позади прокси также.
Cookie являются частичным решением, но голосующие роботы не могли просто отправить cookie.
Вы не можете ограничить единственное голосование одному IP-адресу. IP-адрес не равняется отдельному пользователю. IP-адрес представляет одного или несколько пользователей.
Если у Вас есть список зарегистрированных пользователей, пошлите им электронное письмо, содержащее уникальную ссылку, которая сгенерирована содержащий гуид (например), запишите GUID в базе данных и соответствии на голосовании.
Если Вы говорите об обычно публично доступном и безопасном, то IP-адрес самостоятельно не достаточен (Google электронное избирательное голосование за многие проблемы, связанные с безопасным голосованием общественности).
Вы думали об использовании одного из бесплатных избирательных сервисов?
Имейте регистрацию, которая требует электронного письма с подтверждением регистрации, и удостоверьтесь, что адрес электронной почты является уникальным столбцом в DB среди Ваших пользователей. Затем свяжите голосование адресу электронной почты. Это не полностью предотвратит куклу из носка, у кого есть несколько адресов электронной почты, но это, по крайней мере, сделает его не стоящим усилия для большинства.
Я соглашаюсь, что один единственный IP-адрес не соответствует отдельному пользователю, но я думаю, что это - самый безопасный способ поддержать одно голосование на человека. Я обычно использую cookie для отслеживания, кто голосовал. Конечно, это - легкий взлом, где можно просто удалить cookie и затем голосовать снова. Если голосование является просто некоторым случайным материалом затем, я действительно не забочусь. Если корректные голоса действительно имеют значение для Вашего приложения, затем используют IP-адрес.
Комбинация IP и useragent может дать Вам разумное решение.