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


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

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

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.


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

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

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

Ссылки:

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

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

       Поздравляю всех женщин с Международным женским днём!!!
    Читайте!


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




    Книги

    Занимательное программирование. Visual Basic

    Книга адресована школьникам 12-15 лет, желающим обучиться составлению программ для персонального компьютера. Прочитав ее, школьник узнает основные понятия программирования, поймет принципы хранения и преобразования данных, освоит стандартные приемы программирования. В качестве языка и среды программирования избрана система Visual Basic, как наиболее доступная и простая в изучении. Книга рассчитана на самостоятельную работу школьника, не имеющего преподавателя или опытного наставника. Авторы заранее предусмотрели ответы на вопросы, наиболее часто возникающие на ранних этапах обучения. Главная задача книги - увлечь читателя интересными примерами и подвести его к уровню, после которого он сможет расширять знания с помощью учебных и справочных пособий.


    Автор: Симонович С, Евсеев Г
    Издательство: АСТ-Пресс, Инфорком - Пресс
    Год издания: 2001
    Кол-во страниц: 320
    Стоимость: 61 р.
    Формат: 60x90/16
    Переплёт: твёрдый

    Информатика в задачах, примерах, алгоритмах/Visual Basic for Application

    Настоящий сборник задач представляет собой практическое пособие для учащихся средних и высших учебных заведений, изучающих информатику. Особенность сборника в том, что он позволяет научиться создавать собственные алгоритмы решения задач, а также дает возможность преподавателю информатики в процессе обучения использовать индивидуальный подход к ученикам без дополнительных затрат времени. Автор сознательно приводит в качестве ответов только численные значения, так как существует множество алгоритмов решения каждой задачи. Читатель может использовать в процессе работы с задачником любые языки программирования. В частности, решение задач из сборника поможет приобрести практические навыки написания макросов в приложениях `Microsoft Office` на языке Visual Basic Application.


    Автор: Алиев В
    Издательство: Солон - Р
    Год издания: 2001
    Кол-во страниц: 144
    Стоимость: 41 р.
    Формат: 60x88/16
    Переплёт: мягкий

    Использование Visual Basic 6. Специальное издание

    В книге описана новая версия популярной системы программирования Visual Basic 6. Изложение материала построено по принципу `от простого к сложному`. Первые главы этой книги адресованы новичкам, из которых они смогут почерпнуть основы языка Visual Basic и описание его стандартных компонентов. Для подготовленных пользователей будет интересен раздел, посвященный специальным методам программироваия с использованием стандартных компонентов Windows, элементов управления ActiveX, ADO, RDO и др. В отдельную часть вынесены вопросы, связанные с разработкой приложений баз данных на Visual Basic и работе в Internet. Автор не обошел также вниманием различные версии языка Visual Basic - VRA и VBScript. В приложениях приведен обзор интегрированной среды разработки Visual Basic, а также краткий справочник по SQL. Книга рассчитана на широкий круг читателей.


    Автор: Брайан Сайлер, Джефф Споттс
    Издательство: Вильямс
    Год издания: 2000
    Кол-во страниц: 832
    Стоимость: 280 р.
    Формат: 70x100/16
    Переплёт: твёрдый

    Обработка баз данных на Visual Basic 6 (+ CD - ROM)

    Сердцем многих приложений, работающих в сфере бизнеса, являются базы данных. Своим широким распространением они обязаны возможности централизованного доступа к информации, который характеризуется последовательностью, эффективностью и относительной простотой создания и поддержки. В книге «Обработка баз данных на Visual Basic 6» описываются все технологии доступа к базам данных с помощью Visual Basic. Приведенные в этой книге примеры взяты из реальной жизни, поэтому, ознакомившись с ними, вы узнаете, как можно использовать базы данных для принятия решений в сфере бизнеса. Если вы еще не готовы перейти к версии Visual Basic 6, это вовсе не значит, что данная книга вам не подходит. Практически 95% материала этой книги удовлетворит в равной степени пользователей как пятой, так и шестой версии Visual Basic. Книга рассчитана на программистов средней и высокой квалификации.


    Автор: Джеффри П. Мак - Манус
    Издательство: Вильямс
    Год издания: 2001
    Кол-во страниц: 672
    Стоимость: 330 р.
    Формат: 70x100/16
    Переплёт: твёрдый

    Практика программирования: Бейсик, Си, Паскаль (+ дискета). Самоучитель

    Содержится более 130 готовых к исполнению программ, большинство из которых представлено на трех алгоритмических языках - Бейсике, Си и Паскале. Все разделы предваряются описанием соответствующих конструкций каждого алгоритмического языка. При этом особое внимание обращается на общность языковых средств рассматриваемых систем программирования - QBasic, Turbo С (Borland C++) и Turbo Pascal. Текстам программ предшествуют советы по их разработке с учетом специфики того или иного алгоритмического языка и описание наиболее характерных особенностей.


    Автор: Кетков Александр, Кетков Юлий
    Издательство: БХВ - Петербург
    Год издания: 2001
    Кол-во страниц: 480
    Стоимость: 131 р.
    Формат: 70x100/16
    Переплёт: мягкий


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

    наверх


    Получить размер файла

    Получить размер файлаРазмер файла можно определить двумя путями:

    1. Если файл можно открыть функцией OPEN, то можно воспользоваться функцией LOF

    Dim FileFree As Integer
    Dim FileSize As Long
    FileFree = FreeFile
    Open "C:\WIN\GENERAL.TXT" For Input As FileFree
    FileSize = LOF(FileFree)
    Close FileFree

    2. Используя функцию FileLen

    Dim lFileSize As Long
    FileSize = FileLen("C:\WIN\GENERAL.TXT")

    3. Используя FileSystemObject

    Для использования этого примера установите ссылку на Microsoft Scripting Runtime через меню Project | References.

    Dim FSys As New FileSystemObject
    Private Sub Command1_Click()
    'Не забудьте установить ссылку на свой файл
    Set qn = FSys.GetFile("D:\2\attributes\FileAtribs2.vbp")
    MsgBox "Размер файла " & qn.Size / 1024 & " килобайт"
    End Sub

    наверх


    Сравнить два файла на идентичность

    Private Sub Form_Load()
    'замените пути файлов, которые вы хотите сравнить
    Open "C:\1\convert1bmp.htm" For Binary As #1
    Open "C:\1\convert2bmp.htm" For Binary As #2
    issame% = True
    If LOF(1) <> LOF(2) Then
    issame% = False
    Else
    whole& = LOF(1) \ 10000
    part& = LOF(1) Mod 10000
    buffer1$ = String$(10000, 0)
    buffer2$ = String$(10000, 0)
    start& = 1
    For X& = 1 To whole&
    Get #1, start&, buffer1$
    Get #2, start&, buffer2$
    If buffer1$ <> buffer2$ Then
    issame% = False
    Exit For
    End If
    start& = start& + 10000
    Next
    buffer1$ = String$(part&, 0)
    buffer2$ = String$(part&, 0)
    Get #1, start&, buffer1$
    Get #2, start&, buffer2$
    If buffer1$ <> buffer2$ Then issame% = False
    End If
    Close
    If issame% Then
    MsgBox "Файлы идентичны", 64, "Info"
    Else
    MsgBox "Файлы НЕ идентичны", 16, "Info"
    End If
    End Sub

    наверх


    Копирование, перемещение, удаление файла

    'Копирование файла

    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

    Private Sub Form_Load()
    'Этот пример скопирует файл 'C:\1\conv.htm' в директорию 'C:\1\2\'.
    'Если файл существует, то он будет перезаписан новым файлом.
    'Если вы хотите, чтобы новый файл не записывался на место старого, замените 'False' на 'True'
    A = CopyFile("C:\1\conv.htm", "C:\1\1\conv.htm", False)
    If A Then
    MsgBox "Файл скопирован"
    Else
    MsgBox "Ошибка. Файл НЕ скопирован"
    End If
    End Sub

    'Перемещение файла

    Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
    Private Sub Command1_Click()
    'перемещение файла из одной папки в другую
    MoveFile "C:\1\conv.htm", "C:\1\1\conv.htm"
    End Sub

    'Удаление файла

    Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
    Private Sub Command1_Click()
    DeleteFile "C:\1\1\conv.htm"
    End Sub

    наверх


    Как получить имя файла или его расширение, зная полный путь файла

    Использование функции простое. В качестве переменной sFullPath задается полный путь файла, в качестве point задается разделитель: "\" - если вы хотите получить имя файла, "." - если вы хотите получить расширение файла.

    Private Function Spliting(sFullPath As String, point As String)
    Dim str1() As String
    str1 = Split(sFullPath, point)
    Spliting = str1(UBound(str1))
    End Function

    наверх


    Сохранение rtf-файла в htm-файл

    Расположите на форме элемент RichTextBox (подключается через меню Project | Components - Microsoft Rich Textbox Control 6.0) а также CommandButton.

    Private Sub Command1_Click()
    'присваиваем переменной содержимое RichTextBox1
    Dim txt As String
    txt = RichTextBox1.Text
    'переменная для хранения htm-файла
    Dim a As String
    a = "<html>" & vbCrLf & "<head>" & vbCrLf & "<title>Заголовок</title>" & vbCrLf & "</head>" & vbCrLf & "<body>"
    a = a & vbCrLf & "<pre>" & txt & "</pre>" & vbCrLf & "</body>" & vbCrLf & "</html>"
    'сохранение в htm-файл
    Dim FN As Integer
    FN = FreeFile
    Dim FName As String
    FName = "C:\index.htm"
    Open FName For Output As #FN
    Print #FN, a
    Close #FN
    End Sub
    Private Sub Form_Load()
    'загрузка файла
    RichTextBox1.FileName = "C:\Мои документы\1.rtf"
    End Sub

    наверх


    Изменение атрибутов файла

    Далее следуют несколько примеров с изменением атрибутов файла "Только чтение" и "Архивный".

    Переменная strFileName содержит полный путь к файлу

    'Очистить атрибут "Только чтение"

    SetAttr strFileName, GetAttr(strFileName) And (Not vbReadOnly)

    'Очистить атрибут "Архивный"

    SetAttr strFileName, GetAttr(strFileName) And (Not vbArchive)

    'Поставить атрибут "Только чтение"

    SetAttr strFileName, vbReadOnly

    'Поставить атрибут "Архивный"

    SetAttr strFileName, vbArchive

    наверх


    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Автор: Шатрыкин Иван. Соавтор: Павел Сурменок.

    наверх


    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса:
    Dmitriy S.

    Ответ ожидается по этому адресу

       У меня 2 вопроса:
    1.Подскажите, как на VB определить папку(путь), где стоит система?
    2.Можно ли на VB отключать яаставку Windows в свойствах экрана?


    Автор вопроса: Саша

    Ответ ожидается по этому адресу

       Где взять книгу по API функциям Или хороший материалл с примерами хорошо бы все это на русском языке


    Автор вопроса: Лозовой Александр

    Ответ ожидается по этому адресу

       Как с помощью API функций определить текущую(не 14400,28600 или 33600, а именно точную) скорость интернета?


    Автор вопроса: A.C.

    Ответ ожидается по этому адресу

       Создается удаленная компонента ActiveX (сервер) Xserver, состоящая из одного класса Xclass, при инициализации которого создается ссылка на существующий экземпляр Excel(открытый пользователем файл) для "отлова" событий:

    Private WithEvents A As Excel.Application
    Private Sub Class_Initialize()
    Set A = GetObject(, "Excel.Application")
    End Sub

    Инициализация производится удаленно клиентом:

    Dim Obj As Object
    Private Sub Command1_Click()
    Set Obj = CreateObject(" Xserver.Xclass", "Myserver")
    End Sub

    На одном компе все без изменений работает!! Но при удаленной инициализации строка

    Set A = GetObject(, "Excel.Application")

    говорит "Error 91". Если к примеру, добавить перед ней

    Dim B As Excel.Application
    Set B = New Excel.Application

    то все в порядке, но не то, что нужно, т.к это ссылка на созданый нами экземпляр, а не на внешний! В чем проблема? Удаленный сервер не видит процесс Excel-я?
    Почему на одном компе все работает а в сети нет?


    Автор вопроса: Олег Веретенников

    Ответ ожидается по этому адресу

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


    Автор вопроса: CD

    Ответ ожидается по этому адресу

       Подскажите, как засунуть картинки в DLL и как с ними потом работать (т.е.выдёргивать из этой же DLL-ки).


    Автор вопроса: selja obltv

    Ответ ожидается по этому адресу

       Надо в MS Flex Grid сделать авто скрол (текущая позиция всегда видна).




    Ответы:


    Вопрос:

       Возможна ли одновременная работа в одной программе двух Winsock ,один работает на приём сообщений (так сказать в режиме ожидания сообщений)а второй на отправку сообщений ?

    Ответ:

    Автор ответа: Игорь

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


    Вопрос:

       Возможна ли одновременная работа в одной программе двух Winsock ,один работает на приём сообщений (так сказать в режиме ожидания сообщений)а второй на отправку сообщений ?

    Ответ:

    Автор ответа: Sergey Y. Tkachev

    Слушай, а что тебе мешает???
    Прочитай самое-самое начало любого выпуска рассылки. Там написано: Господа, читайте MSDN!!!

    Вот выдержка (Благополучно работают два сокета):

    To create a TCP server
    Create a new Standard EXE project.
    Change the name of the default form to frmServer.
    Change the caption of the form to "TCP Server."
    Draw a Winsock control on the form and change its name to tcpServer.
    Add two TextBox controls to the form. Name the first txtSendData, and the second txtOutput.

    Add the code below to the form.
    Private Sub Form_Load()
    ' Set the LocalPort property to an integer.
    ' Then invoke the Listen method.
    tcpServer.LocalPort = 1001
    tcpServer.Listen
    frmClient.Show ' Show the client form.
    End Sub

    Private Sub tcpServer_ConnectionRequest _
    (ByVal requestID As Long)
    ' Check if the control's State is closed. If not,
    ' close the connection before accepting the new
    ' connection.
    If tcpServer.State <> sckClosed Then _
    tcpServer.Close
    ' Accept the request with the requestID
    ' parameter.
    tcpServer.Accept requestID
    End Sub

    Private Sub txtSendData_Change()
    ' The TextBox control named txtSendData
    ' contains the data to be sent. Whenever the user
    ' types into the textbox, the string is sent
    ' using the SendData method.
    tcpServer.SendData txtSendData.Text
    End Sub

    Private Sub tcpServer_DataArrival _
    (ByVal bytesTotal As Long)
    ' Declare a variable for the incoming data.
    ' Invoke the GetData method and set the Text
    ' property of a TextBox named txtOutput to
    ' the data.
    Dim strData As String
    tcpServer.GetData strData
    txtOutput.Text = strData
    End Sub

    The procedures above create a simple server application. However, to complete the scenario, you must also create a client application.

    To create a TCP client Add a new form to the project, and name it frmClient. Change the caption of the form to TCP Client. Add a Winsock control to the form and name it tcpClient. Add two TextBox controls to frmClient. Name the first txtSend, and the second txtOutput. Draw a CommandButton control on the form and name it cmdConnect. Change the caption of the CommandButton control to Connect. Add the code below to the form. Important Be sure to change the value of the RemoteHost property to the friendly name of your computer.

    Private Sub Form_Load()
    ' The name of the Winsock control is tcpClient.
    ' Note: to specify a remote host, you can use
    ' either the IP address (ex: "121.111.1.1") or
    ' the computer's "friendly" name, as shown here.
    tcpClient.RemoteHost = "RemoteComputerName"
    tcpClient.RemotePort = 1001
    End Sub

    Private Sub cmdConnect_Click()
    ' Invoke the Connect method to initiate a
    ' connection.
    tcpClient.Connect
    End Sub

    Private Sub txtSendData_Change()
    tcpClient.SendData txtSend.Text
    End Sub

    Private Sub tcpClient_DataArrival _
    (ByVal bytesTotal As Long)
    Dim strData As String
    tcpClient.GetData strData
    txtOutput.Text = strData
    End Sub

    The code above creates a simple client-server application. To try the two together, run the project, and click Connect. Then type text into the txtSendData TextBox on either form, and the same text will appear in the txtOutput TextBox on the other form.


    Вопрос:

       КАК МОЖНО ПОМЕНЯТЬ КАРТИНКУ ПЕРЕЗАГРУЗКИ WINDOWS своей а ?

    Ответ:

    Автор ответа: Сергей Гуров

    За инфу не ручаюсь, не проверял
    Цитирую и даю ссылку:

    Анимированная картинка, которая выводится при загрузке Windows (на фоне голубых облачков написано Windows 95(98)), в Windows 95 находится в файле logo.sys в корневом каталоге, а в Windows 98 эта картинка, если не ошибаюсь, "вшита" в файл command.com Меняя этот файл (logo.sys) на любой файл формата BMP (соответствующих размеров и 256 цветов), можно поменять скушную картинку при загрузке. А в Windows 98 можно просто поместить файл logo.sys в корневой каталог - эффект тот же самый. Аналогично, в каталоге WINDOWS есть ещё 2 файла - logos.sys и logow.sys. Они "отвечают" за сообщения "Теперь питание..." и "Подождите, идет подготовка...". Формат тот же.
    Владимир Ротин (vovka@mail.tp.ru 2:5061/104.10@FidoNet)


    Вопрос:

       Как определить пояицию курсора в Windows?

    Ответ:

    Автор ответа: Kirill

    Можно воспользоваться Win32API:

    Public Type POINTAPI
             x As Long
             y As Long
    End Type
    Public Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long

    Соответственно в переменной типа POINTAPI вернутся текущие координаты курсора.


    Вопрос:

       Как определить пояицию курсора в Windows?

    Ответ:

    Автор ответа: Игорь

    Следующим образом:
    Объяви функцию и тип:

    Private Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
      
    Private Type POINTAPI
             x As Long
             y As Long
    End Type
    Dim A as POINTAPI

    Теперь вызови эту функцию

    GetCursorPos A
    MsgBox A.x & " " & A.y

    Значения будут возвращаться в поинтах (точках). Если тебе нужно в твипах, вызывай функцию так:

    GetCursorPos A
    MsgBox A.x * Screen.TwipsPerPixelX & " " & A.y * Screen.TwipsPerPixelY


    Вопрос:

       Как определить пояицию курсора в Windows?

    Ответ:

    Автор ответа: Владимир Капустин

    1. Создайте модуль и в нём запишите:
    Public Type POINTAPI
             x As Long
             y As Long
    End Type
    Public Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
    2. Создайте форму и таймер(интервал>0)
    Пример:
    Private Sub Timer1_Timer()
      Dim tmpPA As POINTAPI
      Dim tmpFR As Long
      tmpFR = GetCursorPos(tmpPA)
      Me.Caption = tmpPA.x & "," & tmpPA.y
    End Sub


    Вопрос:

       Как определить пояицию курсора в Windows?

    Ответ:

    Автор ответа: Ivan

    Позицию курсора можно определить с помощью API функции GetCursorPos
    Объявление:
      
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Type POINTAPI
            x As Long
            y As Long
    End Type
    Private g As Long' Любая переменная типа Long
    Private Position As POINTAPI ' Любая переменная типа POINTAPI
      
    Применение:
      
    Private Sub Form_Load()
    g = GetCursorPos(Position)
    MsgBox "Позиция по Х: " & Position.x
    MsgBox "Позиция по Y: " & Position.y
    End Sub


    Вопрос:

       Как сумировать ячейки в таблице Exel которые выделены к примеру красным цветом, тоесть не сама ячейка красная а шрифт?

    Ответ:

    Автор ответа: Kirill

    Можно использовать такую схему:

    ' отобранные ячейки для суммирования
    Dim sumRange As Range
    ' отдельная проверямая ячейка
    Dim rCell As Range

    ' просматриваем диапазон ячеек
    For Each rCell In Range("A1:D5").Cells
         ' проверяем цвет шрифта в ячейке
         If rCell.Font.Color = RGB(255, 0, 0) Then
             ' если набор ячеек еще не инициализирован
             If sumRange Is Nothing Then
                 ' инициализируем набор первой найденной ячейкой
                 Set sumRange = rCell
             Else
                 ' или добавляем очередную ячейку к уже найденным
                 Set sumRange = Union(sumRange, rCell)
             End If
         End If
    Next rCell

    ' записываем результат, используя для суммирования
    ' встроенную функцию Excel'я
    Range("A7").Value = Application.Sum(sumRange)


    Вопрос:

       Подскажите, как мне перемешать элементы на форме в раяличном порядке? (В Turbo Pascale есть функция Randomise, а в VB?)

    Ответ:

    Автор ответа: Игорь

    В VB есть функция Rnd. Она возвращает случайные значения. А для того, чтобы в произвольном порядке расположи на форме несколько элементов и вставь следующий код:

    Private Sub Form_Load()
    On Error Resume Next
    For Each obj In Me.Controls
    Randomize Timer
    RndLeft = Int((Me.Width - obj.Width) * Rnd(1))
    RndTop = Int((Me.Height - obj.Height) * Rnd(1))
    obj.Left = RndLeft
    obj.Top = RndTop
    Next
    End Sub


    Вопрос:

          Как мне из моей проги открыть excel, добавить в него новую таблицу, а в нее уже добавить некоторые данные (числа, текст).
       Я пока вишу только на добавлении новой таблицы - т.е. excel он мне открывает, но на этом все, дальше не могу. Вот мой исходник:

    Option Explicit

    Private exapp As Excel.Application

    Private Sub Комманда1_Click()
         Set exapp = New Excel.Application
    ' WordApp.Visible = True
         exapp.Visible = True
         'Set exapp = Nothing
    End Sub

       Дальше не знаю как - помогите ПЛЗ :)

    Ответ:

    Автор ответа: Иван

    Совета и ответ на вопрос про Ёксель

    1. Встаку таблицы данных лучше производить через
    приравнивание
    xo.activesheet.range(xo.cells(Row,Col), xo.cells(Row, Col))
    и вариантного двухмерного массива.
    Чтоб не пробегать циклом все ячейки.
    Получается намного быстрее!
    2.Самый полезный совет:
    Если не знаешь как что делать из ВБ в ёкселе или ворде, а читать MSDN неохота Запиши макрос в ёкселе/ворде где делаешь, что нужно (думаю проблем у тебя таких нет) потом посмотри получившийся код, и прибавь ко всем функциям в начале "exapp." и пользуйся!!!
    3.Читайте MSDN.
    4.Не забывайте про обработку ошибок
    ===============================
    Я использовал такие функции:
    (повырезал из своей рабочей проги)

    'запускал так, потому что типы excel не хотелось подключать
    'но разницы никакой нет
    Set exapp = CreateObject("Excel.Application")
    exapp.Visible = True

    'открыть новую книгу
    exapp.workbooks.Add

    'выйти
    exapp.Quit

    'загрузить книгу-шаблон
    exapp.workbooks.Open txtRepTemplate.Text

    'открыть лист в активной книге
    exapp.worksheets("Parameters").Activate

    'вытянуть значение из ячейки
    Value = exapp.cells(1, 2).Value

    'вставить данные в нужную ячейку активной книги
    exapp.cells(Row, Col) = value

    'вставка пустой строки
    exapp.Rows(CStr(Row1) & ":" & CStr(Row1)).Select
    exapp.Selection.Insert Shift:=-4121 'xlDown

    'вставка блока со сдвигом вниз
    exapp.activesheet.range(exapp.cells(Row1,Col1), exapp.cells(Row2, Col2)).Select
    exapp.Selection.Insert Shift:=-4121 'xlDown

    'сохранение под заданным именем
    exapp.workbooks(1).SaveAs FileName:=txtRepFile.Text

    'вставка нового листа в активную книгу
    exapp.worksheets.Add


    Вопрос:

          Как мне из моей проги открыть excel, добавить в него новую таблицу, а в нее уже добавить некоторые данные (числа, текст).
       Я пока вишу только на добавлении новой таблицы - т.е. excel он мне открывает, но на этом все, дальше не могу. Вот мой исходник:

    Option Explicit

    Private exapp As Excel.Application

    Private Sub Комманда1_Click()
         Set exapp = New Excel.Application
    ' WordApp.Visible = True
         exapp.Visible = True
         'Set exapp = Nothing
    End Sub

       Дальше не знаю как - помогите ПЛЗ :)

    Ответ:

    Автор ответа: Владимир Капустин

    Ответ немного не в тему.
    Не знаю как открывать документ Excel. Мне кажется это немного непрактичным. Есть другой вариант - открытие Excel как базы данных, используя контроль Data.


    Вопрос:

          Как мне из моей проги открыть excel, добавить в него новую таблицу, а в нее уже добавить некоторые данные (числа, текст).
       Я пока вишу только на добавлении новой таблицы - т.е. excel он мне открывает, но на этом все, дальше не могу. Вот мой исходник:

    Option Explicit

    Private exapp As Excel.Application

    Private Sub Комманда1_Click()
         Set exapp = New Excel.Application
    ' WordApp.Visible = True
         exapp.Visible = True
         'Set exapp = Nothing
    End Sub

       Дальше не знаю как - помогите ПЛЗ :)

    Ответ:

    Автор ответа: Kirill

    В принципе начало правильное, насколько я понимаю проблема в незнании объектов Excel VBA, но это как раз дело поправимое :)

    Option Explicit
      
    Private exapp As Excel.Application
      
    Private Sub Комманда1_Click()
          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 = True
          ' создаем новую таблицу
          Set wBook = exapp.Workbooks.Add
          ' издеваемся над созанной таблицей :)
          wBook.Sheets(1).Name = "MyResult"
          wBook.Sheets(1).Range("A1").Value = "это ячейка A1"
          wBook.Sheets("MyResult").Cell(4, 2).Value = InputBox("Впиши что хочешь", "текст для ячейки B4", "filled from VB")
          ' сохраняем таблицу
          wBook.Save "c:\my_table.xls"
          wBook.Close
          Set wBook = Nothing
          ' если Excel запускали мы, то надо бы его закрыть
          If StartedNew Then
              exapp.Quit
          End If
          Set exapp = Nothing
    End Sub


    Вопрос:

       Кто янает, ДЛЯ КАКОЙ цели в CommonDialog есть вояможность яадавать .Action = 1, 2, 3 ? Свойство .Action = 2 не работает, а только соядает ВИДИМОСТЬ Save As.
    Вопрос: А ЗАЧЕМ КОЗЕ БАЯН!? Или я не прав?

    Ответ:

    Автор ответа: Kirill

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


    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


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

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