PDA

Просмотр полной версии : VBA (Visual Basic for Applicaton)


Sk4
16.04.2006, 16:51
Вообщем кто программирует на VBA (Visual Basic for Applicaton) в Office 2000,XP,2003 отзавитесь. Нужны доки по VBA (Visual Basic for Applicaton) по построению диаграмм и разработке приложений с помощью VBA (Visual Basic for Applicaton) для Excel. Можно на англицком. Нужен програмист который программирует на VBA для консультаций.

1
16.04.2006, 17:07
...по построению диаграмм и разработке приложений с помощью VBA (Visual Basic for Applicaton) для Excel...
Нет ничего проще: записывай макрос, читай код, понять его несложно, применяй к поставленной задаче.

Нужен програмист который программирует на VBA для консультаций.
За вознаграждение или бескорыстно? ;)

Sk4
16.04.2006, 17:24
Нет ничего проще: записывай макрос, читай код, понять его несложно, применяй к поставленной задаче.

Это мало что дает, я это уже пробовал. Нужна подробная инфа со всеми тонкостями.

За вознаграждение или бескорыстно?

Если чел реально спец в VBA и нет ему равных в Чебоксарах, то за вознагрождение, а если программист широкого профиля и узкими знаниями, то бескорыстно. Поскольку сляпать простую вещь любой может, а вот по серьезнее со всеми тонкостями разработки уже еденицы.

Sk4
16.04.2006, 17:28
Может кто нибудь видел в Чебоксарах литературу по VBA не менее чем с 1000 страниц. Если да, то где? Надо срочно.

1
16.04.2006, 17:28
Это мало что дает, я это уже пробовал. Нужна подробная инфа со всеми тонкостями.
Приведи пример конкретной задачи, которую тебе не удалось решить с помощью промотра кода макроса, помогу чем смогу.

Sk4
17.04.2006, 13:38
Приведи пример конкретной задачи, которую тебе не удалось решить с помощью промотра кода макроса, помогу чем смогу.

Случайно не знаешь:
1) Как сделать чтобы UserForm в Excel при открытии файла запускалась автоматически и на весь экран монитора.
2) Как в Image загнать диаграмму. Забыл как все это делается.

1
17.04.2006, 20:03
Случайно не знаешь:
1) Как сделать чтобы UserForm в Excel при открытии файла запускалась автоматически и на весь экран монитора.
2) Как в Image загнать диаграмму. Забыл как все это делается.
1. в среде VBA в окне Projeсt находишь объект "Эта книга" и в его коде набираешь следующее:
Private Sub Workbook_Activate()
* UserForm1.Show
End Sub
Сохраняешь, запускаешь - форма отображается (макросы должны быть разрешены разумеется)
На всякий случай вот проект:
ftp://rygred.cheb.ru/Upload/VBA.xls
2. Допустим, диаграмму создаёшь в коде, пишешь вот эту строчку ActiveChart.CopyPicture и её изображение копируется в буфер, остаётся его оттуда вытащить и вставить в Image (объект Clipboard что-то в Excel'e не работает :-/).

Sk4
18.04.2006, 14:56
1. в среде VBA в окне Projeсt находишь объект "Эта книга" и в его коде набираешь следующее:
Код:Private Sub Workbook_Activate()
UserForm1.Show
End Sub
Сохраняешь, запускаешь - форма отображается (макросы должны быть разрешены разумеется)
Форма то запускается при открытии это да, но у меня там есть кнопки которые выполняют определенную задачу. При нажатии на кнопку код выполняется без ошибок его резултат работы выходит на Лист1 и выскакивает ошибка вот здесь
Код:Private Sub Workbook_Activate()
-> UserForm1.Show
End Sub
В чем ошибка не понял. Если без UserForm1.Show запускаю форму вручную из VBA все работает. А как UserForm на весь экран развернуть или его масштаб менялся в зависимости от разрешения экрана.

2. Допустим, диаграмму создаёшь в коде, пишешь вот эту строчку ActiveChart.CopyPicture и её изображение копируется в буфер, остаётся его оттуда вытащить и вставить в Image (объект Clipboard что-то в Excel'e не работает ).
Этот метод мне не подходит так как я вид диаграммы меняю из выпадающего списка динамически. Захотел изменить вид диаграммы выбрал другой все изменилось. А твой метод только копирует изображене диаграммы. Нужно что-то типа внутри изменялось как будто типа через OLE-контейнер работаешь.

1
18.04.2006, 17:56
Форма то запускается при открытии это да, но у меня там есть кнопки которые выполняют определенную задачу. При нажатии на кнопку код выполняется без ошибок его резултат работы выходит на Лист1 и выскакивает ошибка вот здесь
Код:Private Sub Workbook_Activate()
-> * UserForm1.Show
End Sub
В чем ошибка не понял. Если без UserForm1.Show запускаю форму вручную из VBA *все работает. А как UserForm на весь экран развернуть или его масштаб менялся в зависимости от разрешения экрана.
Тогда попробуй так:
Private Sub Workbook_Open()
* UserForm1.Show
End Sub
Чтобы определить разрешение экрана используй WinAPI:
Option Explicit
*
* Private Type RECT
* * *Left As Long
* * *Top As Long
* * *Right As Long
* * *Bottom As Long
* End Type
*
* Private Declare Function GetDesktopWindow Lib _
* * *"user32" () As Long
* Private Declare Function GetWindowRect Lib "user32" _
* * *(ByVal hWnd As Long, lpRect As RECT) As Long
*
* Public Function ScreenWidth() As Single
* * *Dim R As RECT
* * *GetWindowRect GetDesktopWindow(), R
* * *ScreenWidth = R.Right * Screen.TwipsPerPixelX
* End Function
*
* Public Function ScreenHeight() As Single
* * *Dim R As RECT
* * *GetWindowRect GetDesktopWindow(), R
* * *ScreenHeight = R.Bottom * Screen.TwipsPerPixelY
* End Function
Правда объект Screen в VBA почему-то не работает, так что подставь вместо Screen.TwipsPerPixelX и Screen.TwipsPerPixelY, константы, значения которых посмотри, выполнив в VB
MsgBox Screen.TwipsPerPixelX
MsgBox Screen.TwipsPerPixelY
мне кажется, всё равно будет работать так как надо; узнав разрешение, устанавливаешь размеры формы под размеры экрана.


Этот метод мне не подходит так как я вид диаграммы меняю из выпадающего списка динамически. Захотел изменить вид диаграммы выбрал другой все изменилось. А твой метод только копирует изображене диаграммы. Нужно что-то типа внутри изменялось как будто типа через OLE-контейнер работаешь.
Почему же не подходит: пользователь выбирает вид диаграммы, она меняется на листе, затем копируешь её в буфер и вставляешь в Image, если пользователь опять изменит тип диаграммы - проделываешь эти действия снова.

Sk4
28.05.2006, 16:13
Все что хотел сделал, нашел в книжках. Спасибо за помощь.