VBNet
VBMania
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Нет тем. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск...
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх VBNet CD Внимание!!! Вы можете приобрести уникальный компакт диск от VBNet.Ru. Он содержит:
Цена компакт диска - 60 рублей + 35 рублей за почтовые расходы = 95 рублей. Диск распространяется по почте нложенным платежом. Вы можете заказать диск в разделе "Магазин" сайта VBNet.Ru, либо заполнив следующую форму: Стоимость: 95 рублей наверх Как заблокировать сочетания клавиш Ctrl+Alt+Del и Alt+Tab 'ВАРИАНТ 1 Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long Private Const SPI_SCREENSAVERRUNNING = 97& Public Sub AllowKeys(bParam As Boolean) Dim lRetVal As Long, bOld As Boolean lRetVal = SystemParametersInfo(SPI_SCREENSAVERRUNNING, bParam, bOld, 0&) End Sub Private Sub Form_Load() Call AllowKeys(True) 'блокировка сочетаний End Sub Private Sub Form_Unload(Cancel As Integer) Call AllowKeys(False) 'разблокировка сочетаний End Sub 'ВАРИАНТ 2 'без дополнительной подпрограммы 'Добавьте два элемента CommandButton. Первая кнопка блокирует сочетание клавиш, вторая - разрешает. Const SPI_SCREENSAVERRUNNING = 97 Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _ (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long Private Sub Command1_Click() Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, "1", 0) End Sub Private Sub Command2_Click() Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, "1", 0) End Sub Private Sub Form_Unload(Cancel As Integer) Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, "1", 0) End Sub наверх Поменять заголовки всех активных окон Данный пример поменяет заголовки всех активных окон, представленных на панели задач. Расположите на форме элемент CommandButton.
Изменив в событии Command1_Click() строковое значение в
скобках и нажав после запуска программы на
кнопку, вы измените заголовки всех окон.
Поиск установленных приложений из пакета MS Office Иногда для работы вашего приложения требуется знать, какие программы из пакета Microsoft Office уже установлены на клиентском компьютере. Приведенный ниже пример показывает как это сделать средствами Visual Basic. Private Declare Function RegOpenKey Lib "advapi32" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, lpReserved As Long, lptype As Long, lpData As Any, lpcbData As Long) As Long Private Declare Function RegCloseKey& Lib "advapi32" (ByVal hKey&) Private Const REG_SZ = 1 Private Const REG_EXPAND_SZ = 2 Private Const ERROR_SUCCESS = 0 Const HKEY_CLASSES_ROOT = &H80000000 Function GetRegString(hKey As Long, strSubKey As String, strValueName As String) As String Dim strSetting As String Dim lngDataLen As Long Dim lngRes As Long If RegOpenKey(hKey, strSubKey, lngRes) = ERROR_SUCCESS Then strSetting = Space(255) lngDataLen = Len(strSetting) If RegQueryValueEx(lngRes, strValueName, ByVal 0, REG_EXPAND_SZ, ByVal strSetting, lngDataLen) = ERROR_SUCCESS Then If lngDataLen > 1 Then GetRegString = Left(strSetting, lngDataLen - 1) End If End If If RegCloseKey(lngRes) <> ERROR_SUCCESS Then MsgBox "RegCloseKey Failed: " strSubKey, vbCritical End If End If End Function Public Function IsAppPresent(strSubKey$, strValueName$) As Boolean IsAppPresent = CBool(Len(GetRegString(HKEY_CLASSES_ROOT, strSubKey, strValueName))) End Function Private Sub Form_Paint() Print "Access " & IsAppPresent("Access.Database\CurVer", "") Print "Excel " & IsAppPresent("Excel.Sheet\CurVer", "") Print "PowerPoint " & IsAppPresent("PowerPoint.Slide\CurVer", "") Print "Word " & IsAppPresent("Word.Document\CurVer", "") End Sub наверх VBA | Word Как вставить строковую переменную из макроса VBA в текущий документ?Selection.TypeText Text:=MyStrVar 'MyStrVar - в данном случае требуемая переменная Как автоматически открыть документ в формате MS-DosDocuments.Open FileName:="C:\Мои документы\1.txt",
Format:=FileConverters("MS-DOS Text with Layout").OpenFormat
VBA | Excel Выбор произвольной ячейки от текущейК примеру, вам необходимо переместиться вправо
от текущей ячейки на три ячейчки. Для этого
существует функция Offset: Подсчет количества заполненных ячеекК примеру, у вас есть выделенный диапазон ячеек
от 1 до 10. В 11-ой ячейке вам надо вывести цифру,
сколько ячеек заполнено какой-либо информацией.
Вызов функции(в 11-ой ячейке): =ScetE(B4:H4), где B4:H4 -
диапазон подсчитываемых ячеек. Функция для создания файла xlsВызов функции: Call CreateExcelFile Выбор данных из ниспадающего спискаВопрос: Можно ли в Excel 97/2000 сделать так, чтобы в
ячейке можно было выбрать только значения,
хранящиеся в определенном столбце, например, в
виде выпадающего списка? Проиграть Avi-файл в Picture Box Добавьте CommandButton и PictureBox на форму Private Declare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Private Declare Function mciGetErrorString Lib "winmm" Alias "mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long Const WS_CHILD = &H40000000 Sub PlayAVIPictureBox(FileName As String, ByVal Window As PictureBox) Dim RetVal As Long Dim CommandString As String Dim ShortFileName As String * 260 Dim deviceIsOpen As Boolean 'Retrieve short file name format RetVal = GetShortPathName(FileName, ShortFileName, Len(ShortFileName)) FileName = Left$(ShortFileName, RetVal) 'Open the device CommandString = "Open " & FileName & " type AVIVideo alias AVIFile parent " & CStr(Window.hWnd) & " style " & CStr(WS_CHILD) RetVal = mciSendString(CommandString, vbNullString, 0, 0&) If RetVal Then GoTo error 'remember that the device is now open deviceIsOpen = True 'Resize the movie to PictureBox size CommandString = "put AVIFile window at 0 0 " & CStr(Window.ScaleWidth / _ Screen.TwipsPerPixelX) & " " & CStr(Window.ScaleHeight / _ Screen.TwipsPerPixelY) RetVal = mciSendString(CommandString, vbNullString, 0, 0&) If RetVal <> 0 Then GoTo error 'Play the file CommandString = "Play AVIFile wait" RetVal = mciSendString(CommandString, vbNullString, 0, 0&) If RetVal <> 0 Then GoTo error 'Close the device CommandString = "Close AVIFile" RetVal = mciSendString(CommandString, vbNullString, 0, 0&) If RetVal <> 0 Then GoTo error Exit Sub error: 'An error occurred. 'Get the error description Dim ErrorString As String ErrorString = Space$(256) mciGetErrorString RetVal, ErrorString, Len(ErrorString) ErrorString = Left$(ErrorString, InStr(ErrorString, vbNullChar) - 1) 'close the device if necessary If deviceIsOpen Then CommandString = "Close AVIFile" mciSendString CommandString, vbNullString, 0, 0& End If 'raise a custom error, with the proper description Err.Raise 999, , ErrorString End Sub Private Sub Command1_Click() 'replace 'c:\myfile.avi' with the name of the AVI file you want to play PlayAVIPictureBox "C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Working.avi", Picture1 End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автор: Шатрыкин Иван. Соавтор: Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Саша Ответ ожидается по этому адресу Подскажите адрес где можно прочитать как делаются DLL на VB ? Автор вопроса: Саша Ответ ожидается по этому адресу Как уянать сколько яакаченно и полученное байтов при работе в интернет ? Автор вопроса: EL Ответ ожидается по этому адресу как в WebBrowser-e выполнить поиск в загруженном файле (аналогично InternetExploreru (Меню)->Правка->Найти на этой странице). И еще. Где найти "хороший" ActiveX - Zmodem??? Автор вопроса: Евгений Ответ ожидается по этому адресу Задача: Перехватывать сообщения формы или control'a VB. Моё решение таково. Заменить функцию окна формы на свою, а из своей вызвать заменённую. Подскажите, как вызвать функцию окна по тому, что вернула SetWidnowLong(GWL_WNDPROC....). Если просто использовать DefWindowProc форма становиться неживая, а control вешает VB. Если есть иные решения моей задачи, пишите. Буду рад. Автор вопроса: Rutshtein Alex Ответ ожидается по этому адресу Как перехватить нажатие клавишы, например Alt-F12, если окно программы неактивно? Автор вопроса: darknez@mail.kz Ответ ожидается по этому адресу Прочитал пример - добавления проги в автозапуск: "Private Sub Command1_Click() 'Запись в реестр Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Имя твоей проги", "Путь к твоей проге" End Sub Private Sub Command2_Click() 'Удаление из реестра Set Reg = CreateObject("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Имя твоей проги" End Sub" А кто нибудь знает что можно ещё делать теперь с переменной Reg и вообще с помощью объекта "WScript.Shell" Автор вопроса: Роман Ответ ожидается по этому адресу Кто знает как изменить форму или рисунок кнопки? Ответы: Вопрос: Пишу fileno1 = FreeFile Open file11 For Binary As fileno1 Do While Not EOF(fileno1) temp1 = String(1, " ") Get #fileno1, , temp1 Loop т.е. открываю файл для двоичного доступа (все как в букваре) стоит WinXP,OffieXP,VB6. При запуске выдается сообщение "Ошибка времени выполнения 458 : Переменная использует тип Автоматизации, не поддерживаемый в VB". Когда стояли Win98,Office2000,VB6 все работало. В чем прикол? И как это победить? Ответ: Автор ответа: Dmitry Gavrilov Фраза 'While not end of file' переводится Prompt'ом как 'В то время как не конец файла' Отсюда вывод, не убрать ли тебе цикл из кода? Вопрос: Как в DataReport выводить отчет на альбомный лист А4? Ответ: Автор ответа: Игорь Кузенков Есть такое свойство у объекта DataReport - .Orientation, которое можно установить почему-то только программно. Желательно перед перед методом .Show, конечно ;-) Вопрос: Как в DataReport выводить отчет на альбомный лист А4? Ответ: Автор ответа: Кононенко Роман Для этого есть контрол от самих мелкомягких , называется PageSet, там DLL, которую регистришь в системе, добавляешь в проэкт, и перед выводом отчёта исполняешь буквально две три строки кода. если нужно конкретно, пиши мылом. Вопрос: Подскажите как можно сделать маску ввода в TextBox например для даты рождения и потом в носить в баяу или маску для чего-нибудь еще. Ответ: Автор ответа: Sergey Y. Tkachev Используй лучше Microsoft MaskEdit Control. Он как раз для этого и предназначен. Вопрос: Подскажите пожалуйста, проблема такая, нужно чтоб данные записывались в файл в формате Excel, причем каждый раз данные должны добавляться в следующую колонку, я сделал так Option Explicit Private exapp As Excel.Application Dim a As String Private Sub Command1_Click() a = Text1.Text Dim wBook As Excel.Workbook ' чтобы обращаться к созданной таблице ' здесь я бы сделал не так: ' Set exapp = New Excel.Application ' а добавил бы возможность использовать запущенное приложение Dim StartedNew As Boolean ' поставим в True, если сами запустим Excel StartedNew = False On Error Resume Next Set exapp = GetObject(, "Excel.Application") If Err.Number <> 0 Then ' если нет запущенного Excel'я Set exapp = CreateObject("Excel.Application") StartedNew = True End If On Error GoTo 0 exapp.Visible = False ' создаем новую таблицу Set wBook = exapp.Workbooks.Add ' издеваемся над созанной таблицей :) wBook.Sheets(1).Name = "MyResult" wBook.Sheets(1).Range("A1").Value = "Общее количество выездов (всего)" wBook.Sheets(1).Range("A2").Value = a wBook.Sheets(1).Range("A3").Value = "3" wBook.Sheets(1).Range("B1").Value = "4" ' сохраняем таблицу wBook.SaveAs "c:\my_table.xls" wBook.Close Set wBook = Nothing ' если Excel запускали мы, то надо бы его закрыть If StartedNew Then exapp.Quit End If Set exapp = Nothing End Sub Но при этом предыдущие данные стираються. создается файл. и в следующий раз при закрытии файла всплывает вопрос, сохранить изменения? Мне нужно. что бы такого небыло, Короче данные добавились и файл закрылся, без лишних вопросов. Ответ: Автор ответа: Savchuk, Andrey xlApp.DisplayAlerts = False Вопрос: Подскажите пожалуйста, проблема такая, нужно чтоб данные записывались в файл в формате Excel, причем каждый раз данные должны добавляться в следующую колонку, я сделал так Option Explicit Private exapp As Excel.Application Dim a As String Private Sub Command1_Click() a = Text1.Text Dim wBook As Excel.Workbook ' чтобы обращаться к созданной таблице ' здесь я бы сделал не так: ' Set exapp = New Excel.Application ' а добавил бы возможность использовать запущенное приложение Dim StartedNew As Boolean ' поставим в True, если сами запустим Excel StartedNew = False On Error Resume Next Set exapp = GetObject(, "Excel.Application") If Err.Number <> 0 Then ' если нет запущенного Excel'я Set exapp = CreateObject("Excel.Application") StartedNew = True End If On Error GoTo 0 exapp.Visible = False ' создаем новую таблицу Set wBook = exapp.Workbooks.Add ' издеваемся над созанной таблицей :) wBook.Sheets(1).Name = "MyResult" wBook.Sheets(1).Range("A1").Value = "Общее количество выездов (всего)" wBook.Sheets(1).Range("A2").Value = a wBook.Sheets(1).Range("A3").Value = "3" wBook.Sheets(1).Range("B1").Value = "4" ' сохраняем таблицу wBook.SaveAs "c:\my_table.xls" wBook.Close Set wBook = Nothing ' если Excel запускали мы, то надо бы его закрыть If StartedNew Then exapp.Quit End If Set exapp = Nothing End Sub Но при этом предыдущие данные стираються. создается файл. и в следующий раз при закрытии файла всплывает вопрос, сохранить изменения? Мне нужно. что бы такого небыло, Короче данные добавились и файл закрылся, без лишних вопросов. Ответ: Автор ответа: Kirill Ты хотя бы мои комментарии убрал бы из кода :)) Если тебе нужно вводить данные в один и тот же файл, имя которого тебе заранее известно и известно, что файл этот никуда не денется и его не переименуют, то в коде процедуры вместо создания нового файла ' ... Set wBook = exapp.Workbooks.Add ' ... надо открывать имеющийся файл ' ... Set wBook = exapp.Workbooks.Open(<имя_файла>) ' добавляешь данные как тебе нужно ' чтоб Excel не выводил вообще никаких предупреждений exapp.DisplayAlerts = False wBook.Save ' сохраняем внесенные изменения wBook.Close ' можно вообще-то написать wBook.Close True ' т.е. сохранить внесенные изменения при закрытии файла exapp.DisplayAlerts = True ' вернем на место предупреждения ' ... Вообще в хелпе по Excel'ю все подробно описано и можно разобраться без чужих советов :) Вопрос: Застрял немного. на форме есть MSFlexGrid. На экране отображаются всего строк 10 - 20 остальные ниже. к примеру я в программе выделяю 31 строку, MSFG1.Row = 31, а как прокрутить скрол до этой строки. чтобы она была в числе видимых на экране? Ответ: Автор ответа: Данил Терновых Используйте свойство .TopRow Его как-то так запрятали, что мы тоже долго искали. :-) Вопрос: Застрял немного. на форме есть MSFlexGrid. На экране отображаются всего строк 10 - 20 остальные ниже. к примеру я в программе выделяю 31 строку, MSFG1.Row = 31, а как прокрутить скрол до этой строки. чтобы она была в числе видимых на экране? Ответ: Автор ответа: А. Малышев У MS FlexGrid есть свойство TopRow. (MSFlexGrid.TopRow=25) Вопрос: Застрял немного. на форме есть MSFlexGrid. На экране отображаются всего строк 10 - 20 остальные ниже. к примеру я в программе выделяю 31 строку, MSFG1.Row = 31, а как прокрутить скрол до этой строки. чтобы она была в числе видимых на экране? Ответ: Автор ответа: Real MSFlexGrid.TopRow устанавливает/возвращает видимую верхнюю строку флексгрида MSFlexGrid.LeftRow устанавливает/возвращает видимый левый столбец флексгрида Вопрос: Делаю отчет с помощью Datareport, но отчет широкий и его ориентацию нужно сменить на ландшафт. а как это сделать? у меня не получается Ответ: Автор ответа: Игорь Кузенков Есть такое свойство у объекта DataReport - .Orientation, которое можно установить почему-то только программно. Желательно перед перед методом .Show, конечно ;-) Вопрос: Не могу влить в TextBox текст большого объема (65кб).Текст меньшего объема вливает без проблемм. Ответ: Автор ответа: Rafis А в TextBox больше и нельзя! Используй RichTextBox, туда по идее можно скоко хош инфы слить. Вопрос: Не могу влить в TextBox текст большого объема (65кб).Текст меньшего объема вливает без проблемм. Ответ: Автор ответа: Sergey Y. Tkachev Это и есть абосолютно естественное ограничение для ТекстБокса. Для больших объемов текста Майкрософты говорят использовать RichEdit. Вопрос: Есть код работы с базой открытой таким образом Dim db1 As Database Dim rs1 As Recordset Dim strDBName1 As String Dim strRSName1 As String strDBName1 = App.Path & "\фигня.mdb" strRSName1 = "фигня1" Set db1 = DBEngine.OpenDatabase(strDBName1) Set rs1 = db1.OpenRecordset(strRSName1, dbOpenDynaset) таблица Фигня1 имеет пару полей Хочу чтобы при выборе в Combobox на форме значения, оно находилось в таблице и к другому числовому полю таблицы добавлялось число из текстбокса лежащего на форме Ответ: Автор ответа: alzhig Примерно так: 'Твое начало ..... WITH RS1 .FINDFIRST "[Value]=" & me.combo1 IF .NOMATCH THEN MSGBOX "Значение не найдено!" .... ELSE .EDIT !NEWValue=!NEWValue+ME.TXTBOX1 .UPDATE ENDIF END WITH 'Закрываем рекордсет и базу ..... 'Value-первое поле таблицы,где ищем значение 'NEWValue-второе поле таблицы,где меняем значение Вопрос: Подскажите пожалуйста, как проверить есть ли связь с интернет Ответ: Автор ответа: Шатрыкин Иван На сайте в разделе Примеры есть пример, который определяет это дело с помощью трех различных способов. Кроме того в Библиотеке кодов есть соответствующий раздел. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |