так, хорошо, обьясните мне на пальцах КАК эту хрень сделать. Я налекциях по информатике занимался чем угодно кроме информатики, так как ненавижу все эти офисные гадости, а сейчас пожинаю, так сказать, плоды -_-
» Excel VBA (часть 3)
aleksey0, открываешь MS Excel, в любой ячейке вводишь:
Код: =SumIf(
Код: =SumIf(
спасибо
Добрый день.
Очень нужна информация для решения проблемы с инициализацией (референсом) компонента Spreedsheet размещенного на пользовательской форме.
Я впервые использовал данный компонент, положил его на пользовательской форме проекта, подключил к SQL-базе и всё было хорошо, но после запуска этого проекта на чужом (пользовательском) компьютере узнал, что просто так он не заработает: при открытии файла получаю ошибку "Could not load an object because it is not available on this machine". Начал искать информацию в Сети, нашел пост http://forum.ru-board.com/topic.cgi?forum=33&topic=8273&start=3840, советы данные там были неполными и решения не имели. Что сможете посоветовать, как заставить мой проект работать на другой машине? Спасибо.
P.S. Применение именно Spreedsheet необходимо.
Очень нужна информация для решения проблемы с инициализацией (референсом) компонента Spreedsheet размещенного на пользовательской форме.
Я впервые использовал данный компонент, положил его на пользовательской форме проекта, подключил к SQL-базе и всё было хорошо, но после запуска этого проекта на чужом (пользовательском) компьютере узнал, что просто так он не заработает: при открытии файла получаю ошибку "Could not load an object because it is not available on this machine". Начал искать информацию в Сети, нашел пост http://forum.ru-board.com/topic.cgi?forum=33&topic=8273&start=3840, советы данные там были неполными и решения не имели. Что сможете посоветовать, как заставить мой проект работать на другой машине? Спасибо.
P.S. Применение именно Spreedsheet необходимо.
Господа (и дамы),
а есть ли такой макрос, который заменяет команды Excel на английском языке на их русские аналоги?
а есть ли такой макрос, который заменяет команды Excel на английском языке на их русские аналоги?
Andrew_Us, если я правильно понял, то на компах разные Офисы установлены? Иначе всё должно пахать. Чтобы сказать точно, надо моделировать именно ту среду, в которой вы пытаетесь это сделать. А так, на вскидку, можно лишь совет дать, попробовать добавить библу, которая лежит (при Офисе 2003) по адресу:
C:\Program Files\Common Files\Microsoft Shared\Web Components\11\OWC11.DLL
Может даже вместе с путями. И плюс ключ реестра:
GUID а в ветке реестра HKEY_CLASSES_ROOT\CLSID\
SpreadSheet11:
{0002E559-0000-0000-C000-000000000046}
C:\Program Files\Common Files\Microsoft Shared\Web Components\11\OWC11.DLL
Может даже вместе с путями. И плюс ключ реестра:
GUID а в ветке реестра HKEY_CLASSES_ROOT\CLSID\
SpreadSheet11:
{0002E559-0000-0000-C000-000000000046}
Valentino10
Если изначально выгрузка производится в текст (как очень часто бывает), то можно из этого файла легко выбрать скриптом wsh строки, где содержится искомый город (во всей строке или в определённом месте строки). И нет ограничения на количество строк (как до 2003 Экселя). Скрипт простой, писал десяток вариантов под разные задачи, если интересно - посмотрю на работе, сейчас писать заново лениво... да может и не надо уже...
Если изначально выгрузка производится в текст (как очень часто бывает), то можно из этого файла легко выбрать скриптом wsh строки, где содержится искомый город (во всей строке или в определённом месте строки). И нет ограничения на количество строк (как до 2003 Экселя). Скрипт простой, писал десяток вариантов под разные задачи, если интересно - посмотрю на работе, сейчас писать заново лениво... да может и не надо уже...
Maximus777
Компы разные, но Офис везде 2003 Standard. Проблема в следующем: из-за наличия на пользовательской форме (появляется по клику на кнопке) компонента Spreedsheet другой комп начинает ругаться что этого у него нет и загрузить эту форму со SpreedSheet он не может. Если в Excel вызвать режим VBA и добавить на тулбокс-панель компонент Spreedsheet из библиотеки Microsoft Office Web Component v11.0 (вы правильно говорили, это - OWC11.exe) и закрыть ошибочно отработанный ныне открытый проект, а потом снова его загрузить и нажать кнопку для открытия формы со Spreedsheet, то всё равно появится ошибка и ... пустая форма, без Spreedsheet. Если теперь взять и заново (как когда-то при проектировании) га эту форму снова положить Spreedsheet, то сохранив проект и открыв его снова можно радоваться - ошибки больше нет, впрочем как и всех нюансов и настроек, которые были у той первой Spreedsheet. Код макросов начинает сыпаться и трещать: то лист Spreedsheet не так называется, то еще что-то в таком духе, а производить все эти настройки заново, да еще не на одном, а на нескольких компах! - сами понимаете занятие малопривлекательное. Пробовал я в Private Sub Workbook_Open вставлять строчки кода для прописывания референса как это делал Drazhar (см. http://forum.ru-board.com/topic.cgi?forum=33&topic=8273&start=3840), но максимум чего я добился (тут еще знание синтаксиса хромает) это то что теперь при открытии формы на другом компе мне сообщается что данная библиотека (или ссылка, точно не запомнил) является какой-то битой. Смотрю в референсах (Tools ->Referens..) - там в списках задействованных библиотек появилась строчка "MISSING:Microsoft Office Web Component v11.0". Если здесь в Referens нажать кнопку "Обзор" и вручную указать путь к OWC11.exe, то слово MISSING исчезает и выглядит Referens хорошо, безошибочно, но проект всё равно не работает. Т.е. видимо мой путь верен, но чего-то не хватает. Я писал так:
Private Sub Workbook_Open()
Dim id As Object
Dim bibldir As String
bibldir = "C:\Program Files\Common Files\Microsoft Shared\Web Components\11\OWC11.DLL"
Set id = VBProject.References.AddFromFile(bibldir)
Буду очень признателен если совет будет оформлен в виде кода, т.е. в виде синтаксически правильно написанных команд. Еще раз спасибо за то что откликнулись.Очень рассчитываю на помощь опытных VBA-программистов.
P.S. Выше вы писали совет про реестр и GUID, но как это делается программно - напишите, пожалуйста - буду пробовать.
Компы разные, но Офис везде 2003 Standard. Проблема в следующем: из-за наличия на пользовательской форме (появляется по клику на кнопке) компонента Spreedsheet другой комп начинает ругаться что этого у него нет и загрузить эту форму со SpreedSheet он не может. Если в Excel вызвать режим VBA и добавить на тулбокс-панель компонент Spreedsheet из библиотеки Microsoft Office Web Component v11.0 (вы правильно говорили, это - OWC11.exe) и закрыть ошибочно отработанный ныне открытый проект, а потом снова его загрузить и нажать кнопку для открытия формы со Spreedsheet, то всё равно появится ошибка и ... пустая форма, без Spreedsheet. Если теперь взять и заново (как когда-то при проектировании) га эту форму снова положить Spreedsheet, то сохранив проект и открыв его снова можно радоваться - ошибки больше нет, впрочем как и всех нюансов и настроек, которые были у той первой Spreedsheet. Код макросов начинает сыпаться и трещать: то лист Spreedsheet не так называется, то еще что-то в таком духе, а производить все эти настройки заново, да еще не на одном, а на нескольких компах! - сами понимаете занятие малопривлекательное. Пробовал я в Private Sub Workbook_Open вставлять строчки кода для прописывания референса как это делал Drazhar (см. http://forum.ru-board.com/topic.cgi?forum=33&topic=8273&start=3840), но максимум чего я добился (тут еще знание синтаксиса хромает) это то что теперь при открытии формы на другом компе мне сообщается что данная библиотека (или ссылка, точно не запомнил) является какой-то битой. Смотрю в референсах (Tools ->Referens..) - там в списках задействованных библиотек появилась строчка "MISSING:Microsoft Office Web Component v11.0". Если здесь в Referens нажать кнопку "Обзор" и вручную указать путь к OWC11.exe, то слово MISSING исчезает и выглядит Referens хорошо, безошибочно, но проект всё равно не работает. Т.е. видимо мой путь верен, но чего-то не хватает. Я писал так:
Private Sub Workbook_Open()
Dim id As Object
Dim bibldir As String
bibldir = "C:\Program Files\Common Files\Microsoft Shared\Web Components\11\OWC11.DLL"
Set id = VBProject.References.AddFromFile(bibldir)
Буду очень признателен если совет будет оформлен в виде кода, т.е. в виде синтаксически правильно написанных команд. Еще раз спасибо за то что откликнулись.Очень рассчитываю на помощь опытных VBA-программистов.
P.S. Выше вы писали совет про реестр и GUID, но как это делается программно - напишите, пожалуйста - буду пробовать.
Valentino10
Передумал - это макрос VBA.
Может пригодится, можно диалог ввода города навесить:
Код: Option Explicit
Sub CopyFromFile2File()
Dim strValue$
Dim t As Single
t = Timer
Open "c:\input.txt" For Input As #1
Open "c:\output.txt" For Output As #2
While Not EOF(1)
Input #1, strValue
If InStr(strValue, "MOSCOW") Then
Print #2, strValue
End If
Wend
Close #1
Close #2
MsgBox "Ready in " & Timer - t
End Sub
Передумал - это макрос VBA.
Может пригодится, можно диалог ввода города навесить:
Код: Option Explicit
Sub CopyFromFile2File()
Dim strValue$
Dim t As Single
t = Timer
Open "c:\input.txt" For Input As #1
Open "c:\output.txt" For Output As #2
While Not EOF(1)
Input #1, strValue
If InStr(strValue, "MOSCOW") Then
Print #2, strValue
End If
Wend
Close #1
Close #2
MsgBox "Ready in " & Timer - t
End Sub
Здравствуйте! я только начинаю программировать в VBA Excel. Меня интересует простая задачка -- нарисовать на форме линию (в крайнем случае -- на листе). Замучился уже искать в нете ответ на этот вопрос. Подскажите, пожалуйста, если не сложно, хотя бы где искать.
Заранее спасибо!
Заранее спасибо!
vaulin, не надо мучиться: включив макрорекордер , узнаете, как выглядит код создания линии на листе.
С рисованием на форме сложнее: нужен контрол, поддерживающий такую возможность. Среди стандартных в VBA (Label, TextBox, List, ComboBox и др.) такого нет.
С рисованием на форме сложнее: нужен контрол, поддерживающий такую возможность. Среди стандартных в VBA (Label, TextBox, List, ComboBox и др.) такого нет.
vlth
Цитата:
Кажется, я так уже пробовал, но что-то не получилось (у меня office 2007). Я делал следующим образом: на панели Разработчик нажал Запись макроса. Потом дал ему название. Далее на панели Вставка в Иллюстрации выбрал Фигуры - линия. Нарисовал линию. Остановил запись. Открыл код, но там было пусто
Что-то не так?
Спасибо за ответ!
Цитата:
vaulin, не надо мучиться: включив макрорекордер , узнаете, как выглядит код создания линии на листе.
Кажется, я так уже пробовал, но что-то не получилось (у меня office 2007). Я делал следующим образом: на панели Разработчик нажал Запись макроса. Потом дал ему название. Далее на панели Вставка в Иллюстрации выбрал Фигуры - линия. Нарисовал линию. Остановил запись. Открыл код, но там было пусто
Что-то не так?
Спасибо за ответ!
vaulin, всё вроде так... про 2007 не могу сказать наверняка, в чём дело ( у меня 2003)
Вот что даёт запись макроса (прямая линия):
Код: ActiveSheet.Shapes.AddLine(96#, 63.75, 191.25, 114#).Select
Вот что даёт запись макроса (прямая линия):
Код: ActiveSheet.Shapes.AddLine(96#, 63.75, 191.25, 114#).Select
Спасибо, vlth
Цитата:
Попробовал вставить твой код в тот пустой макрос, который я создал описанным выше способом, действительно, нарисовалась линия. Спасибо!
И всё-таки, очень хочется порисовать на форме.
Про
Цитата:
можно поподробнее? У меня лицензионный office, полная версия. Должна же быть в нем такая возможность? Нужно что-то доустановить?
Добавлено:
p.s.: странно, почему-же у меня не получилось в 2007 то же проделать? видимо, нужно в настройках копаться ...
Цитата:
vaulin, всё вроде так... про 2007 не могу сказать наверняка, в чём дело ( у меня 2003)
Вот что даёт запись макроса (прямая линия):
Код:
ActiveSheet.Shapes.AddLine(96#, 63.75, 191.25, 114#).Select
Попробовал вставить твой код в тот пустой макрос, который я создал описанным выше способом, действительно, нарисовалась линия. Спасибо!
И всё-таки, очень хочется порисовать на форме.
Про
Цитата:
нужен контрол, поддерживающий такую возможность
можно поподробнее? У меня лицензионный office, полная версия. Должна же быть в нем такая возможность? Нужно что-то доустановить?
Добавлено:
p.s.: странно, почему-же у меня не получилось в 2007 то же проделать? видимо, нужно в настройках копаться ...
vaulin
Цитата:
так прошол код
Код: ActiveSheet.Shapes.AddLine(96#, 63.75, 191.25, 114#).Select
Цитата:
можно поподробнее? У меня лицензионный office, полная версия. Должна же быть в нем такая возможность? Нужно что-то доустановить?
так прошол код
Код: ActiveSheet.Shapes.AddLine(96#, 63.75, 191.25, 114#).Select
Цитата:
Нужно что-то доустановить?vaulin, Toolbox (Controls), щёлкаем правой клавишей по его панели, ->Additional Controls...
Выбираем из списка тот, который нужен. А вот где его взять, чтобы зарегить в системе, вопрос второй. Но не последний по значимости.
Цитата:
проходит в 2007 или нет?
да, NJCorp, прошел, всё рисует.
Цитата:
Toolbox (Controls), щёлкаем правой клавишей по его панел
vlth, захожу в пункте меню "View" среды VBA, а там строка Toolbox не активна, т.е. бледно-серым цветом. Ее нельзя ни включить ни выключить. Как ее активизировать?
Цитата:
В зависимости от того, для чего тебе линия
нет, я говорю о произвольной линии, да вообще о произольном рисовании на форме.
Цитата:
Как ее активизировать?Создать пользовательскую форму.
да, появилось, спасибо; но, щелкнув по ней правой клавишей мыши, не нашел Additional Controls..., щелкать, оказывается, нужно было по движку слайдера. Похоже, что это тоже не то, т.к. я имел в виду программное рисование, т.е. на уровне кода. Нашел одну ссылочку: http://forum.sources.ru/index.php?showtopic=287841&hl=%CD%C0%D0%C8%D1%CE%C2%C0%D2%DC в которой приводится код программы, с выводом линий и текста на форму, но код слишком большой для начинающих, не смог в нем разобраться.
Странно всё это, задача, вроде, примитивнейшая, а решить ее, похоже, не так-то просто
Странно всё это, задача, вроде, примитивнейшая, а решить ее, похоже, не так-то просто
vaulin, по приведённой Вами ссылке:
Код: Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
(ByVal hDC As Long, ByVal X As Integer, ByVal Y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
(ByVal hWnd As Long) As Long
Private Sub Draw()
Dim hForm As Long, hDC As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
hDC = dwGetDC(hForm)
Call dwLineTo(hDC, 150, 200)
End Sub
Private Sub UserForm_Click()
Draw
End Sub
Код: Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
(ByVal hDC As Long, ByVal X As Integer, ByVal Y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
(ByVal hWnd As Long) As Long
Private Sub Draw()
Dim hForm As Long, hDC As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
hDC = dwGetDC(hForm)
Call dwLineTo(hDC, 150, 200)
End Sub
Private Sub UserForm_Click()
Draw
End Sub
Ура, vlth, получилось. Спасибо!
Только я немного изменил предложенный Вами код:
Код:
Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
(ByVal hdc As Long, ByVal X As Integer, ByVal Y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
(ByVal hWnd As Long) As Long
Private Declare Function dwReleaseDC Lib "user32" Alias "ReleaseDC" _
(ByVal hWnd As Long, ByVal hdc As Long) As Long
Private Function Draw()
Dim hForm As Long, hdc As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
hdc = dwGetDC(hForm)
Call dwLineTo(hdc, 150, 200)
Call dwReleaseDC(hForm, hdc)
End Function
'получение контекста устройства для рисования
Private Sub UserForm_Click()
Draw
End Sub
Только я немного изменил предложенный Вами код:
Код:
Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
(ByVal hdc As Long, ByVal X As Integer, ByVal Y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
(ByVal hWnd As Long) As Long
Private Declare Function dwReleaseDC Lib "user32" Alias "ReleaseDC" _
(ByVal hWnd As Long, ByVal hdc As Long) As Long
Private Function Draw()
Dim hForm As Long, hdc As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
hdc = dwGetDC(hForm)
Call dwLineTo(hdc, 150, 200)
Call dwReleaseDC(hForm, hdc)
End Function
'получение контекста устройства для рисования
Private Sub UserForm_Click()
Draw
End Sub
vaulin, обратите внимание: я уже удалил вызов dwReleaseDC, ну и, само-собой, её объявление: она здесь лишняя.
Ок, vlth, вот конечный вариант:
Код: Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwMoveTo Lib "gdi32" Alias "MoveToEx" _
(ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _
ByVal lpPoint As Long) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
(ByVal hdc As Long, ByVal x As Integer, ByVal y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
(ByVal hWnd As Long) As Long
Private Function Draw()
Dim hForm As Long, hdc As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
hdc = dwGetDC(hForm)
Call dwMoveTo(hdc, 10, 40, 0)
Call dwLineTo(hdc, 150, 100)
End Function
Private Sub UserForm_Click()
Draw
End Sub
Код: Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwMoveTo Lib "gdi32" Alias "MoveToEx" _
(ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _
ByVal lpPoint As Long) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
(ByVal hdc As Long, ByVal x As Integer, ByVal y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
(ByVal hWnd As Long) As Long
Private Function Draw()
Dim hForm As Long, hdc As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
hdc = dwGetDC(hForm)
Call dwMoveTo(hdc, 10, 40, 0)
Call dwLineTo(hdc, 150, 100)
End Function
Private Sub UserForm_Click()
Draw
End Sub
Цитата:
Интересно, а как нарисовать окружность?
Код: Private Declare Function dwEllipse Lib "gdi32" Alias "Ellipse" _
(ByVal HDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Sub Draw3()
Dim hForm As Long, HDC As Long
hForm = FindWindow("ThunderDFrame", Me.Caption)
HDC = dwGetDC(hForm)
Call dwEllipse(HDC, 50, 50, 150, 150)
End Sub
vlth, суппер!
ты где нашел эту функцию dwEllipse? я в нете не смог найти даже dwLineTo
ты где нашел эту функцию dwEllipse? я в нете не смог найти даже dwLineTo
Цитата:
vlth, суппер!
ты где нашел эту функцию dwEllipse? я в нете не смог найти даже dwLineTo
Да порылся вот в своих архивах
Код: Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long
Declare Function MoveToExNull Lib "gdi32" Alias "MoveToEx" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpPointNull As Long) As Long
Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Цитата:
Да порылся вот в своих архивах
что за архивы, если не секрет ?
Только не помню, откуда это у меня.
Доброе время суток.
Необходима помощь в функции архивирования файлов больших объемов с целью их дальнейшей отправки по почте. Пока использовался следующий код
Код: Open ActiveWorkbook.Path & "\db.zip" For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1 'Этим создаем ЗИП
Set oApp = CreateObject("Shell.Application")
i = 1
oApp.Namespace(ActiveWorkbook.Path & "\db.zip\").CopyHere ActiveWorkbook.Path & "\db.mdb"
Необходима помощь в функции архивирования файлов больших объемов с целью их дальнейшей отправки по почте. Пока использовался следующий код
Код: Open ActiveWorkbook.Path & "\db.zip" For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1 'Этим создаем ЗИП
Set oApp = CreateObject("Shell.Application")
i = 1
oApp.Namespace(ActiveWorkbook.Path & "\db.zip\").CopyHere ActiveWorkbook.Path & "\db.mdb"
Drazhar
Код: Shell "C:\Program Files\WinRAR\WinRAR.exe a db.rar " & ActiveWorkbook.Path & "\db.mdb", vbHide
Код: Shell "C:\Program Files\WinRAR\WinRAR.exe a db.rar " & ActiveWorkbook.Path & "\db.mdb", vbHide
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
Предыдущая тема: VS 2010
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.