Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 71.


VBNet VBMania
Голосование:

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.
Новости сайта IgorykSoft и советы по программированию


Рассылки Subscribe.Ru
Старые игры

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Kirill

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Новый выпуск...
    Читайте!


    Содержание выпуска




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

    Эта книга была задумана как одна из первых книг о.NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

    Эта книга является вводным курсом по изучению языка программирования Visual Basic .NET. Даны основные принципы объектно-ориентированного программирования в контексте языка VB .NET, поскольку без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET.
    Изложены азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




    Остальные книги о VB можно найти
    здесь.

    наверх


    VBNet CD

       Внимание!!! Вы можете приобрести уникальный компакт диск от VBNet.Ru. Он содержит:

    • Сайт VBNet.Ru – Самый большой в сайт о VB в рунете.
    • Service Pack 3 – Service Pack содержит обновления для MS Visual Studio.
    • Коллекция ActiveX контролов – Более двадцати ActiveX контролов и библиотек.
    • Утилиты – Более десяти различных утилит.
    • Personal Web Server – Веб-сервер от Microsoft. Предназначен для операционных систем Windows 9x/Me.
    • Архивы рассылок о VB – Архивы популярных почтовых рассылок о Visual Basic.
    • Книги – Несколько книг о Visual Basic в электронном виде.
    • Справочники – Несколько справочников по Visual Basic и Windows API.
    • И многое другое...


       Цена компакт диска - 60 рублей + 35 рублей за почтовые расходы = 95 рублей.
       Диск распространяется по почте нложенным платежом.
       Вы можете заказать диск в разделе "Магазин" сайта VBNet.Ru, либо заполнив следующую форму:

    Ваш заказ: VBNet CD
    Стоимость: 95 рублей
    Фамилия:
    Имя:
    Отчество:
    E-mail:
    Почтовый индекс:
    Область (край):
    Город:
    Улица, дом, квартира:


    наверх


    Как заблокировать сочетания клавиш 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() строковое значение в скобках и нажав после запуска программы на кнопку, вы измените заголовки всех окон.

    Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

    Public Sub WindowCaptionChangeAll(NewText As String)
    For nI = 1 To 10000
    Call SetWindowText(nI, NewText)
    Next
    End Sub

    Private Sub Command1_Click()
    WindowCaptionChangeAll ("GARIK")
    End Sub

    наверх


    Поиск установленных приложений из пакета 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-Dos

    Documents.Open FileName:="C:\Мои документы\1.txt", Format:=FileConverters("MS-DOS Text with Layout").OpenFormat

    наверх


    VBA | Excel

    Выбор произвольной ячейки от текущей

    К примеру, вам необходимо переместиться вправо от текущей ячейки на три ячейчки. Для этого существует функция Offset:

    ActiveCell.Offset(0, 3).Activate

    Синтаксис функции: expression.Offset(RowOffset, ColumnOffset), где RowOffset - перемещение по вертикали, ColumnOffset - перемещение по горизонтали. Если RowOffset, ColumnOffset положительные числа - перемещение идет вниз/влево, если RowOffset, ColumnOffset отрицательные - перемещение идет вверх/вправо.

    Подсчет количества заполненных ячеек

    К примеру, у вас есть выделенный диапазон ячеек от 1 до 10. В 11-ой ячейке вам надо вывести цифру, сколько ячеек заполнено какой-либо информацией. Вызов функции(в 11-ой ячейке): =ScetE(B4:H4), где B4:H4 - диапазон подсчитываемых ячеек.

    Function ScetE(Ran As Range) As Long
    Dim cell As Object
    ScetE = 0 'обнуляем счетчик
    For Each cell In Ran 'для всех ячеек в выбранном диапазоне
    If (Not (IsEmpty(cell.Value))) Then 'Если ячейка не пустая
    ScetE = ScetE + 1 'добавляем единицу
    Else
    If IsNumeric(cell.Value) Then 'проверяем не числовое ли значение номер строки 1
    If (Not (cell.Value = 0)) Then ' а не равна ли она 0
    ScetE = ScetE + 1 'добавляем единицу
    End If
    End If ' номер строки 2
    End If
    Next cell
    End Function

    Функция для создания файла xls

    Вызов функции: Call CreateExcelFile

    Function CreateExcelFile() As Long
    On Error GoTo CatchErr
    Const LF_SYMBOL As Byte = &HA
    Const TAB_SYMBOL As Byte = &H9
    Dim szFilePath As String
    Dim szFileName As String
    Dim szDefaultBuffer As String
    Dim lFieldCount As Long
    Dim lRowCount As Long
    Dim ltempCount As Long
    Dim ltempCount2 As Long
    szFilePath = App.Path
    If Right(szFilePath, 1) <> "\" Then szFilePath = szFilePath & "\"
    szFileName = "TestExcel"
    lFieldCount = 10
    lRowCount = 10
    Open szFilePath & szFileName & ".xls" For Append As #1
    szDefaultBuffer = ""
    'save field names
    ltempCount = 1
    Do While ltempCount <= lFieldCount
    If ltempCount = 1 Then
    szDefaultBuffer = "Field" & ltempCount
    Else
    szDefaultBuffer = szDefaultBuffer & Chr(TAB_SYMBOL) & "Field" & ltempCount
    End If
    ltempCount = ltempCount + 1
    Loop
    'can be skipped because Print put that symbol
    'szDefaultBuffer=szDefaultBuffer & chr(LF_SYMBOL)
    Print #1, szDefaultBuffer
    'save field values
    ltempCount = 1
    Do While ltempCount <= lRowCount
    szDefaultBuffer = ""
    ltempCount2 = 1
    Do While ltempCount2 <= lFieldCount
    If ltempCount2 = 1 Then
    szDefaultBuffer = "Value" & ltempCount & ":" & ltempCount2
    Else
    szDefaultBuffer = szDefaultBuffer & Chr(TAB_SYMBOL) & "Value" & ltempCount & ":" & ltempCount2
    End If
    ltempCount2 = ltempCount2 + 1
    Loop
    'can be skipped because Print put that symbol
    'szDefaultBuffer=szDefaultBuffer & chr(LF_SYMBOL)
    Print #1, szDefaultBuffer
    ltempCount = ltempCount + 1
    Loop
    Close 1
    CreateExcelFile = 0
    Exit Function
    CatchErr:
    CreateExcelFile = Err.Number
    End Function

    Выбор данных из ниспадающего списка

    Вопрос: Можно ли в Excel 97/2000 сделать так, чтобы в ячейке можно было выбрать только значения, хранящиеся в определенном столбце, например, в виде выпадающего списка?

    Ответ:
    1) Создаешь список значений
    2) Выделяешь ячейку (столбец или строку), где будет производиться
    подстановка из списка
    3) Данные -> Проверка -> Параметры
    - Тип данных: "Список"
    - Источник: <указываешь на созданный список>
    4) OK
    5) При выделении ячейки справа будет появляться стрелка выпадающего списка.



    наверх


    Проиграть 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 владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел