Страница: 1 |
Страница: 1 |
Вопрос: Назрела целая куча вопросов:Прогам..., Знатокам, М
Добавлено: 24.01.06 13:13
Автор вопроса: Tsar
1.Как свернуть в Eсsel2003 нажатием кнопки' Cmd1(располженной на форме UserForm1) - 'к примеру (свернуть в в "Trey" открытый определенный лист- к примеру " Sheet2)) ???? - нужен код и пример'- это по VBA-и это срочно !!!!!:-)
2.(а). Как в Exсel2003 нажатием кнопки' Cmd1(располженной на форме UserForm1)- к примеру ( распечатать определенный лист(3) 'к примеру - далее выбираем необходимую страницу кнопками "OpttionButton1,-2 и т.д.("Sheet4"страница2,"Sheet7"страница5)) а далее их распечатываем ???? - нужен код и пример'- это по VBA - и это нужно срочно !!!!!:-)
3.Вопрос отпал так , как он вписался в вопрос2. :-)
P.S.1.Это Первая Моя большая программа - Автоматического составления материалов по Администратвной практике, сохранения данных в своеобразной базе их востановлению при первой необходимости, а так же многое другое все что, связано с работой дежурных частей ( т.е . пробный шаг её создания в Excel, паралельно в VB6.0, VB.net) - к чему это только приведет.... :-)))))
2. Все Ваши решения,варианты, дополнения, подсказки Я приму "во внимание" при разработке своей программы и дам ссылки на Ваши адреса!
4. На все вопросы почти есть готовые решения но нужны ваши варанты и очень мало располагаю свободным временем для решения этих вопросов.
5. Рад Всегда с Вами сотрудничать!!!!
Tsar.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #1
Добавлено: 26.01.06 03:08
страницы уже выбраны, я так понимаю?
далее я бы сделал так: создал массив номеров страниц, выбираешь страницу и.. печатаешь
.PrintArea = "" ' задаем область печати
' далее колонтитулы
.PrintTitleRows = ""
.PrintTitleColumns = ""
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
' далее задем поля
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False ' заголовки
.PrintGridlines = False ' сетка
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait ' книжная
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False ' здесь и так понятно
.Zoom = False
.FitToPagesWide = 3 ' в ширину на 3
.FitToPagesTall = 1 ' в высоту на 1
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' одна копия
End Sub
Номер ответа: 2
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #2
Добавлено: 26.01.06 03:14
минимизировать? могу помочь, а вот в трей...? думаю в ВБА это трудно
Номер ответа: 3
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #3
Добавлено: 26.01.06 07:25
Ну я невеликий знаток VBA, но можно же минимизировать, установить свойство Visible = False, а потом уже любимая Shell_NotifyIcon.
Номер ответа: 4
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #4
Добавлено: 28.01.06 09:14
а уж
Номер ответа: 5
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #5
Добавлено: 28.01.06 13:54
Попробуй это:
Private Const gcClassnameMSExcel = "XLMAIN"
Private Sub Form_Unload(Cancel As Integer)
Dim x As Long
x = FindWindow(gcClassnameMSExcel, vbNullString)
TrayI.cbSize = Len(TrayI)
TrayI.hwnd = x
TrayI.uId = 1&
Shell_NotifyIcon NIM_DELETE, TrayI
ShowWindow x, SW_SHOWNORMAL
End
End Sub
Private Sub CommandButton1_Click()
Dim x As Long
x = FindWindow(gcClassnameMSExcel, vbNullString)
TrayI.cbSize = Len(TrayI)
TrayI.hwnd = x
TrayI.uId = 1&
TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
TrayI.ucallbackMessage = WM_LBUTTONDOWN
TrayI.hIcon = Image1.Picture
TrayI.szTip = "Recent" & Chr$(0)
Shell_NotifyIcon NIM_ADD, TrayI
ShowWindow x, SW_MINIMIZE
ShowWindow x, SW_HIDE
End Sub
Private Sub PicHook_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
Msg = x / Screen.TwipsPerPixelX
If Msg = WM_LBUTTONDBLCLK Then
Unload Me
ElseIf Msg = WM_RBUTTONUP Then
MsgBox "RIGHT BUTTON UP"
End If
End Sub
Создай в ВБА форму, добавь кнопку и вставь это все в её код.
Номер ответа: 6
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #6
Добавлено: 28.01.06 13:55
Ааа, ну да, забыл. Не забудь декларации (хотя, ты должен их найти в любом АПИ-вьювере):
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOWNORMAL = 1
Private Const SW_HIDE = 0
Private Const SW_MINIMIZE = 6
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONUP = &H205
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uId As Long
uFlags As Long
ucallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean