display pdf winform c# : How to rotate one page in a pdf file control Library platform web page asp.net azure web browser 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200740-part667

A Collection of UserForm Controls
When you have a number of the same type of control on a form, you often write almost identical event
procedures for each one. For example, say you want to be able to double-click the label to the left of each
of the TextBox in the UserForm in Figure 16-6 to clear the TextBox and set the focus to the TextBox. You
would normally write four almost identical event procedures, one for each label control.
Figure 16-6
Using a class module, you can write a single generic event procedure to apply to all the label controls, or
just those that need the procedure. The label controls and TextBox in the UserForm have been given cor-
responding names, as follows:
Label
TextBox
lblBananas
txtBananas
lblLychees
txtLychees
lblMangoes
txtMangoes
lblRambutan
txtRambutan
The following code is entered in a class module CControlEvents:
Public WithEvents lbl As MSForms.Label
Public frm As UserForm
Private Sub lbl_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim sProduct As String
Dim sTextBoxName As String
‘Get product name from label caption
sProduct = lbl.Caption
‘Construct name of associated text box
sTextBoxName = “txt” & sProduct
‘Assign zero length string and set focus
With frm.Controls(sTextBoxName)
.Text = “”
368
Chapter 16: Class Modules
How to rotate one page in a pdf file - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
how to rotate all pages in pdf in preview; saving rotated pdf pages
How to rotate one page in a pdf file - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
how to rotate a pdf page in reader; change orientation of pdf page
.SetFocus
End With
End Sub
lblis declared with events as a UserForm label. frmis declared to be a UserForm. The generic
DblClickevent procedure for lblgets the product name from the Captionproperty of the label, and
converts this to the TextBox name by appending “txt”in front of the product name.
The With...EndWithstructure identifies the TextBox object by using the TextBox name as an index into
the Controlscollection of the UserForm. It sets the Textproperty of the TextBox to a zero-length string
and uses the SetFocusmethod to place the cursor in the TextBox.
The following code is entered into the class module behind the UserForm:
Dim mcolLabels As New Collection
Private Sub UserForm_Initialize()
Dim ctl As MSForms.Control
Dim clsEvents As CControlEvents
‘Loop through all controls on userform
For Each ctl In Me.Controls
‘Only process labels
If TypeOf ctl Is MSForms.Label Then
‘Instantiate class module and assign properties
Set clsEvents = New CControlEvents
Set clsEvents.lbl = ctl
Set clsEvents.frm = Me
‘Add instance to collection
mcolLabels.Add clsEvents
End If
Next ctl
End Sub
mcolLabelsis declared as a new collection to hold the objects that will be created from the
CControlEventsclass module. In the UserForm Initializeevent procedure, the label controls are
associated with instances of CControlEvents.
The ForEach...Nextloop processes all the controls on the form. When it identifies a control that is a
label, using the TypeOfkeyword to identify the control type, it creates a new instance of CControlEvents
and assigns it to clsEvents. The lblproperty of the new object is assigned a reference to the control, and
the frmproperty is assigned a reference to the UserForm. The new object is then added to the mcolLabels
collection.
When the UserForm is loaded into memory, the Initializeevent runs and connects the label controls
to instances of the class module event procedure. Double-clicking any label clears the TextBox to the
right and sets the focus to that TextBox, ready for new data to be typed in.
369
Chapter 16: Class Modules
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
C# developers can easily merge and append one PDF document to document imaging toolkit, also offers other advanced PDF document page processing and
how to rotate a page in pdf and save it; rotate pdf pages by degrees
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
This guiding page will help you merge two or more PDF documents into a single one in a Visual Basic .NET imaging application.
rotate pages in pdf; pdf rotate page and save
Referencing Classes Across Projects
When you want to run macros in another workbook, you can use Tools➪References in the VBE window
to create a reference to the other workbook’s VBAproject. The reference appears as a special entry in the
Project Explorer, as shown in Figure 16-7.
ClassReferences.xlsmhas a reference to ClassUserFormControls.xlsm, which contains the
UserForm from the previous example. The reference allows you to run procedures in standard modules
in ClassUserFormControls.xlsmfrom standard modules in ClassReferences.xlsm. However, 
the reference does not allow you to create instances of class modules or UserForms in the referenced
workbook.
Figure 16-7
You need to be aware that some events associated with some controls are not made
available in a class module using WithEvents. For example, the most useful events
exposed by UserForm text boxes are BeforeUpdateAfterUpdateEnter, and Exit.
None of these is available in a class module. You can only handle these events in the
class module associated with the UserForm.
370
Chapter 16: Class Modules
VB.NET PDF File Split Library: Split, seperate PDF into multiple
document splitter control provides VB.NET developers an easy to use solution that they can split target multi-page PDF document file to one-page PDF files or
pdf reverse page order preview; pdf rotate one page
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
a solution to conveniently delete one page from your PDF document, you can use this VB.NET PDF Library, which supports a variety of PDF file editing features
rotate pages in pdf expert; rotate individual pdf pages reader
There is a way to get around this. You can indirectly access a UserForm in the referenced workbook if that
workbook has a function that returns a reference to the UserForm. There is an example of this type of func-
tion in the top-right corner of Figure 16-7. PassUserForm, in ClassUserFormControls.xlsm, is a func-
tion that assigns a new instance of frmFruitPricesto its return value. In ClassReferences.xlsmmfrm
is declared as a generic Objecttype. ShowUserformassigns the return value of PassUserFormto mfrm.
mfrmcan then be used to show the UserForm and access its control values, as long as the UserForm is hid-
den, not unloaded.
Summary
Class modules are used to create blueprints for new objects, such as the Employeeobject presented in
this chapter:
Functionand Subprocedures are used in the class module to create methods for the object.
Publicvariables declare the properties for the object.
However, if you need to take programmatic control when a property is assigned a value, you
can define the property using a PropertyLetprocedure.
In addition, PropertyGetprocedures allow you to control access to property values.
To use the code in your class module, you create one or more instances of your object. For example, you
can create Maryand Jackas instances of an Employeeobject. You can further customize your objects by
creating your own collection, where you add all the instances of your object.
Class modules are not used to create objects to the same extent in Excel VBAas they are used in a stan-
dalone programming language such as Visual Basic. This is because Excel already contains the objects
that most Excel programmers want to use. However, Excel programmers can use class modules to:
Trap application-level events, such as the WorkbookBeforePrintevent that allows you to con-
trol the printing of all open workbooks
Trap events in embedded charts
Write a single event procedure that can be used by many instances of a particular object, such as
TextBoxcontrol on a UserForm
Encapsulate difficult code and make it easier to use
Encapsulate code so you can share the code among different projects and users
See Chapter 27 for examples of encapsulation of API code.
When you create a reference to another workbook, you should make sure that the
VBAProject in the referenced workbook has a unique name. By default, it will be
named VBAProject. Click Tools➪VBAProject Properties and enter a new project
name.
371
Chapter 16: Class Modules
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Extract PDF Pages, Copy Pages from One PDF File and Paste into Others in C#.NET Program. Free PDF document processing SDK supports PDF page extraction, copying
how to rotate one pdf page; rotate pdf pages individually
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
A PDFDocument object contains all information about source PDF document file. PDFPage: As for one page of PDFDocument instance, RasterEdge VB.NET PDF annotator
how to rotate all pages in pdf; rotate pdf page and save
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
unnecessary page from target existing PDF document file. Using RasterEdge Visual C# .NET PDF page deletion component, developers can easily select one or more
pdf rotate page; rotate pdf page permanently
C# PDF File Compress Library: Compress reduce PDF size in C#.net
document of 1000+ pages to smaller one in a Easy to compress & decompress PDF document file Remove bookmarks, annotations, watermark, page labels and article
rotate pdf page few degrees; how to rotate all pages in pdf at once
Add-ins
If you want to make your workbook invisible to the user in the Excel window, you can turn it into
an Add-in file. An Add-in can be loaded into memory usingOpen under the Microsoft Office but-
ton, but it generally makes more sense to access it via the Add-Insdialog box, which is covered
later in this chapter. Either way, the file does not appear in the Excel Application window, but the
macros it contains can be executed from the user interface. Any user-defined functions it contains
can be used in worksheet calculations. The Add-ins macros can be attached to menu commands
and toolbar buttons, and the Add-in can communicate with the user through UserForms and VBA
functions such as InputBoxand MsgBox.
It is widely believed that an Add-in is a compiled version of a workbook. In programming, compi-
lation involves translating the human-readable programming code into machine language. This is
notthe case with an Excel Add-in. In fact, all that happens is that the workbook is hidden from the
user interface. The Add-in’s worksheets and charts can no longer be seen by anyone. Its code mod-
ules can still be viewed, as normal, in the VBE window and remain complete with comments as
well as code.
However, it is possible to create a compiled version of an Add-in. This is referred to as a COM
(Component Object Model) Add-in. COM Add-ins are discussed separately in Chapter 18.
This chapter has taken the CommandBars2.xlsmfile used in Chapter 15, saved it as AddIn.xlsm
prior to converting it to Addin.xlam, and adapted the code to make it suitable for an Add-in. The
code on popup menus has been removed because it is not relevant.
In previous versions of Excel, it is not necessary to give an Add-in filename any spe-
cial extension. In Excel 2007, however, it is necessary to give an Add-in filename 
an .xlamextension. It is a good idea to do so, in any case, because it identifies the
file as an Add-in and ensures that the Add-in icon appears against the file in the
Windows File Manager. The conversion of a workbook file to an Add-in file is cov-
ered later in this chapter.
Hiding the Code
You cannot stop users from seeing a standard workbook’s name, or an Add-in’s name, in the Project
Explorer window. However, you can stop users from expanding the workbook’s name, or Add-in’s
name, to view the component modules and user forms and the code they contain.
You prevent access to your code by putting a password on the VBAproject. Select the project and use
Tools➪<ProjectName> Properties (where <ProjectName> is the name of your particular project), or
right-click the project in the Project Explorer window and click <ProjectName> Properties, to see the
screen shown in Figure 17-1.
Figure 17-1
After you have entered the password and confirmed it, click OK and save the file. To see the effect, close
and reopen the file. The file has been password-protected and cannot be expanded unless you supply
the password. You are prompted for the password when you try to expand the project.
It is a common misconception that Excel’s passwords cannot be broken. There are programs available
that can decipher file, workbook, and worksheet passwords, as well as the VBAproject passwords for all
versions of Excel. Since the introduction of Excel 97, the workbook file password has proven a difficult
nut to crack if it contains more than just a few characters. Unfortunately, this password is useless to
developers who want users to be able to open their files and actually use them.
Creating an Add-in
Converting a workbook to an Add-in is a trivial exercise, on the face of it. Make sure that a worksheet 
is active in your workbook, click the Microsoft Office button, select Save As, scroll down the drop-
down labeled Save as type:, and choose Excel Add-In (*.xlam). Excel will automatically position you 
374
Chapter 17: Add-ins
in a special Add-ins folder, although there is no requirement that you use it. The advantage of this
method is that you do not overwrite the original .xlsmfile, and you create a file with the .xlamexten-
sion that distinguishes it as an Add-in to the operating system.
An easier way to create an Add-in is to change the IsAddinproperty of ThisWorkbookto Truein the
Properties window, as shown in Figure 17-2.
Figure 17-2
The disadvantage of this method is that you change the original .xlsmfile to an Add-in, but its .xlsm
extension remains unchanged and, when you open the file later, Excel 2007 objects to the mismatch
between the file type and the extension. You need to change the file extension to .xlammanually, using
the Windows Explorer.
Closing Add-ins
If you have just converted a workbook to an Add-in by changing its IsAddinproperty and saving it, or
you have loaded the Add-in usingOpen, there is no obvious way to close the file from the menus with-
out closing Excel. One way to close the Add-in is to go to the Immediate window and type in code that
uses the Closemethod, treating the Add-in as a member of the Workbookscollection:
Workbooks(“AddIn.xlsm”).Close
Add-ins do not have an Indexproperty value in the Workbookscollection and are not included in the
Countproperty of the Workbookscollection, but they can be addressed by name as members of the
Workbookscollection.
Note that you must have a worksheet active when using Save As to create an Add-in.
Otherwise, you will not find the .xlamtype offered as an option.
375
Chapter 17: Add-ins
Another method you can use to close an Add-in is to click the filename in the Recent Documents list
while holding down Shift. You may get a message about overwriting the copy in memory (depending on
whether or not it has changed), and then you will get a message about not being able to open an Add-in
for editing (a hangover from previous versions). Click OK and the Add-in will be removed from memory.
Code Changes
In most cases, you need to make some changes to the VBAcode that was written for a standard work-
book to make it suitable for an Add-in. This is particularly true if you reference data within your Add-in
workbook. Most Excel programmers write code that assumes that the workbook is the active workbook
and that the worksheet is the active sheet. Nothing is active in an Add-in, so your code must explicitly
reference the Add-in workbook and worksheet. For example, in Chapters 13 and 15, the code assumed
that it was dealing with the active workbook, using statements like the following:
With Range(“Database”)
Set rngData = .Rows(2)
Call LoadRecord
scbNavigator.Value = 2
scbNavigator.Max = .Rows.Count
End With
This code only works if the worksheet containing the name Databaseis active. In your Add-in code,
you need to include a reference to the workbook and worksheet. You could say:
With Workbooks(“Addins.xlsm”).Sheets(“Data”).Range(“Database”)
Amore useful way to refer to the workbook containing the code is to use the ThisWorkbookproperty of
the Applicationobject that refers to the workbook containing the code. This makes the code much
more flexible; you can save the workbook under any filename and the code still works:
With ThisWorkbook.Sheets(“Data”).Range(“Database”)
You can also use the object name for the sheet that you see in the Project Explorer:
With Sheet1.Range(“Database”)
If you want to be able to ignore the sheet name to allow the name Databaseto exist on any sheet, you
can use the following construction:
With ThisWorkbook.Names(“Database”).RefersToRange
You can edit both the workbook’s programmatic name and the sheet’s programmatic
name in the Properties window. If you change the sheet’s programmatic name, you
must also change your code. If you change the workbook’s programmatic name, you
can use the new name if you wish, but ThisWorkbookremains a valid reference,
because it is a property of the Applicationobject and a member of <globals>.
376
Chapter 17: Add-ins
Saving Changes
Another potential problem with an Add-in that contains data is that changes to the data will not be saved
automatically at the end of an Excel session. For example, Addin.xlamallows users to edit the data in the
range Database, so it is essential to save those changes before the Add-in is closed. One of the nice things
about Add-ins is that users are never bothered with prompts about saving changes. Therefore, you need to
ensure that data is saved by setting up a procedure in your VBAcode. One way to do this is to add the fol-
lowing code to the Workbook_BeforeCloseevent procedure, or the Auto_Closeprocedure:
If Not ThisWorkbook.Saved Then ThisWorkbook.Save
Interface Changes
You need to bear in mind that the Add-in’s sheets will not be visible and you will not see the names of
the Add-in’s macros in theMacro dialog box. You need to create menus, toolbars, or command buttons
in other workbooks to execute your macros. Luckily, you have already built a menu and toolbar interface
in your CommandBars2.xlsmapplication, which has been converted to the AddIn.xlamapplication.
It is also a good idea to make all your code as robust as possible. You should allow for abnormal events
such as system crashes that could affect your code. The CommandBars2.xlsmapplication adds a menu
and a toolbar to Excel when it is opened. Before doing this, CommandBars2.xlsmdeletes any previously
created versions of these command bars, which is a very good practice. It is possible that previous ver-
sions could exist following a system crash, for example.
Finally, CommandBars2.xlsmmade the data list visible on the screen, so the results of an AutoFilter
were obvious. The data list is not visible when it is in an Add-in, so you need another way to show the
results of a filter. The Next and Previous buttons on the user form frmPersonalhave been adapted to
show only the filtered data. The Add-in user interface appears as shown in Figure 17-3.
Figure 17-3
377
Chapter 17: Add-ins
Documents you may be interested
Documents you may be interested