display pdf winform c# : Rotate a pdf page Library control class asp.net web page winforms ajax 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200760-part689

End Select
If bTimeReq Then sDate = sDate & “ “ & Format$(dDate, “hh:mm:ss”)
sFormatDate = sDate
End Function
dDateis the Excel date number, and bTimeReqis an optional argument that should be set to Trueto
include the time string in the result.
The ReplaceHolders Function
This function replaces the placeholders in a string with values provided to it:
Function ReplaceHolders(ByVal sString As String, ParamArray avReplace()) As String
Dim i As Integer
‘Work backwards, so we don’t replace %10 with our %1 text
For i = UBound(avReplace) To LBound(avReplace) Step -1
sString = Application.Substitute(sString, “%” & i, _
avReplace(i - LBound(avReplace)))
Next
ReplaceHolders = sString
End Function
sStringis the text to replace the placeholders in, and avReplaceis a list of items to replace the 
placeholders.
Summary
It is possible to create an Excel application that will work on every installation of Excel in the world and
support all 180-plus Office languages, but it is unlikely to be economically viable.
If you have a limited set of users and you are able to dictate their language and Windows Regional
Settings, you can create your application without worrying about international issues. Even if this is the
case, you should get into the habit of creating locale-independent code. The requirement for locale-inde-
pendence should be included in your analysis, design, and coding standards. It is much, much easier
and cheaper to write locale-independent code at the onset than to rework an existing application.
At a minimum, your application should work regardless of the users’ choice of Windows Regional
Settings or Windows or Office UI Language, or whether they have set non-standard thousands and deci-
mal separators using Office Menu➪Excel Options➪Advanced. You should be able to achieve this by
following the rules listed in this chapter.
568
Chapter 25: International Issues
Rotate a pdf page - 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#
rotate pdf page permanently; rotate pdf page
Rotate a pdf page - 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 page in pdf and save it; rotate all pages in pdf
The following Excel features don’t play by the rules and have to be treated very carefully:
OpenText
SaveAsto a text file
ShowDataForm
Pasting text from other applications
The .Formulaproperty in all its guises
<range>.Value
<range>.FormulaArray
<range>.AutoFilter
<range>.AdvancedFilter
The =TEXT()worksheet function
Application.Evaluate
Application.ConvertFormula
Application.ExecuteExcel4Macro
Web Queries
You may have to avoid some features in Excel completely:
SendKeys
Using Trueand Falsein imported text files
569
Chapter 25: International Issues
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
XDoc.PDF ›› VB.NET PDF: Delete PDF Page. using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
reverse page order pdf; pdf reverse page order online
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Professional .NET PDF control for inserting PDF page in Visual Basic .NET class application.
how to reverse pages in pdf; pdf reverse page order
C# PDF Page Insert Library: insert pages into PDF file in C#.net
page processing functions, such as how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to
rotate single page in pdf file; pdf rotate page
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Pages. |. Home ›› XDoc.PDF ›› C# PDF: Delete PDF Page. Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How
pdf rotate single page and save; rotate pages in pdf permanently
Programming the VBE
Up until now, the book has focused on writing VBAprocedures to automate Excel. While writing
the code, you have been working in the Visual Basic Editor (VBE), otherwise known as the Visual
Basic Integrated Design Environment (VBIDE).
An object library is provided with Office 2007 that is shown as Microsoft Visual Basic for Applications
Extensibility 5.3 in the VBE’s Tools➪References list. The objects in this library and their methods,
properties, and events enable you to:
Programmatically create, delete, and modify the code, UserForms, and references in your
own and other workbooks
Program the VBE itself to create useful Add-ins to assist you in your development efforts
and automate many of your development tasks
The only responsible way to start this chapter is with a warning. Macro viruses work by using the
methods shown in this chapter to modify the target file’s code, thus infecting it. To prevent this,
Microsoft has made it possible to disable access to all workbooks’ VBProjects. By default the access
is disabled, so none of the code in this chapter will work. To enable access to the VBProjects, place a
check mark next to the Trust Access to the VBAProject Object Model checkbox in Excel 2007’s Office
Menu➪Excel Options➪Trust Center➪Trust Center Settings➪Macro Settings dialog.
This chapter explains how to write code to automate the VBE by walking you through the devel-
opment of an Excel-related VBE Toolkit to speed up your application development. You will then
add a few utilities to the toolkit that demonstrate how to programmatically manipulate code,
UserForms, and references. For simplicity, most of the code examples in this chapter have not been
provided with error handling. You can find the completed toolkit Add-in at www.wrox.com.
There have been no significant changes to the Visual Basic for Applications
Extensibility library between Office 2000 and Office 2007, so all the examples in
thischapter apply equally to all versions.
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Convert Tiff to Jpeg Images. Convert Word, Excel, PowerPoint to Tiff. Convert PDF to Tiff. Move Tiff Page Position. Rotate a Tiff Page. Extract Tiff Pages.
rotate all pages in pdf and save; rotate pdf page by page
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
and Paste PDF Pages. Page: Rotate a PDF Page. PDF Read. Text: Extract Text from PDF. Text: Search Text in PDF. Image: Extract Image from
rotate one page in pdf reader; rotate pdf pages on ipad
Identifying VBE Objects in Code
All the objects that form the VBE, and their properties and methods, are contained in their own object
library. You need to create a reference to this library before you can use the objects; do this by switching to
the VBE, selecting the menu item Tools➪References, checking the Microsoft Visual Basic for Applications
Extensibility 5.3 library, and clicking OK (see Figure 26-1).
Figure 26-1
In code, this library is referred to as the VBIDE object library.
The full VBIDE object model is documented in Appendix B. The more important objects are summarized
in the next sections.
The VBE Object
The top-level object of the Visual Basic Editor is known as the VBEobject and is itself a property of the
Excel Applicationobject. Hence, to create an object variable to refer to the VBE, you need code similar
to this:
Dim oVBE As VBIDE.VBE
Set oVBE = Application.VBE
The VBProject Object
This object is the container for all the programming aspects of a workbook, including UserForms, stan-
dard modules, class modules, and the code behind each worksheet and the workbook itself. Each
VBProjectcorresponds to one of the top-level items in the Project Explorer. Aspecific VBProjectobject
can be located either by iterating through the VBE’s VBProjectscollection or through the VBProject
property of a workbook.
572
Chapter 26: Programming the VBE
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
If using x86, the platform target should be x86. C#.NET Sample Code: Clone a PDF Page Using C#.NET. Load the PDF file that provides the page object.
how to rotate all pages in pdf; save pdf rotate pages
VB.NET PDF Page Replace Library: replace PDF pages in C#.net, ASP.
Existing PDF Pages. Page: Replace PDF Pages. Page: Move Page Position. Page: Copy, Paste PDF Pages. Page: Rotate a PDF Page. PDF Read. Text
pdf rotate pages separately; rotate pdf page and save
To find the VBProjectthat corresponds to the workbook Book1.xlsm, the following code can be used:
Dim oVBP As VBIDE.VBProject
Set oVBP = Workbooks(“Book1.xlsm”).VBProject
When creating Add-ins for the VBIDE itself, you often need to know which project is currently high-
lighted in the Project Explorer. This is given by the ActiveVBProjectproperty of the VBE:
Dim obVBP As VBIDE.VBProject
Set obVBP = Application.VBE.ActiveVBProject
Note that the ActiveVBProjectis the project that the user is editing within the VBE. It is not related in
any way to the ActiveWorkbookgiven by Excel. In fact, with the Developer Editions of Office 2000 and
Office XP, it was possible to create self-contained VB Projects that are not part of an Excel workbook.
That capability should still be available if you upgraded from one of those versions.
The VBComponent Object
The UserForms, standard modules, class modules, and code modules behind the worksheets and work-
book are all VBComponentobjects. Each VBComponentobject corresponds to one of the lower-level items
in the Project Explorer tree. Aspecific VBComponentcan be located through the VBComponentscollection
of a VBProject. Hence, to find the VBComponentthat represents the UserForm1form in Book1.xls,
code like this can be used:
Dim oVBC As VBIDE.VBComponent
Set oVBC = Workbooks(“Book1.xlsm”).VBProject.VBComponents(“UserForm1”)
The name of the VBComponentthat contains the code behind the workbook, worksheets, and charts is
given by the CodeNameproperty of the related Excel object (the workbook, worksheet, or chart object).
Hence, to find the VBComponentfor the code behind the workbook (where code can be written to hook
into workbook events), this code can be used:
Dim oVBC As VBIDE.VBComponent
With Workbooks(“Book1.xlsm”)
Set oVBC = .VBProject.VBComponents(.CodeName)
End With
And for a specific worksheet:
Dim oVBC As VBIDE.VBComponent
With Workbooks(“Book1.xlsm”)
Set oVBC = .VBProject.VBComponents(.Worksheets(“Sheet1”).CodeName)
End With
Note that the name of the workbook’s VBComponentis usually ThisWorkbook in the Project Explorer.
Donot be tempted to rely on this name. If your user has chosen a different language for the Office User
Interface, it will be different. The name can also be easily changed by the user in the VBE. For this reason,
do notuse code like this:
573
Chapter 26: Programming the VBE
Dim oVBC As VBIDE.VBComponent
With Workbooks(“Book1.xlsm”)
Set oVBC = .VBProject.VBComponents(“ThisWorkbook”)
End With
When developing Add-ins for the VBE, you often need to know the VBComponentthat the user is edit-
ing (the one highlighted in the Project Explorer). This is given by the SelectedVBComponentproperty
of the VBE:
Dim oVBC As VBIDE.VBComponent
Set oVBC = Application.VBE.SelectedVBComponent
Each VBComponenthas a Propertiescollection, corresponding approximately to the list shown in the
Properties window of the VBE when a VBComponentis selected in the Project Explorer. One of these is
the Nameproperty, shown in the following test routine:
Sub ShowNames()
With Application.VBE.SelectedVBComponent
Debug.Print .Name & “: “ & .Properties(“Name”)
End With
End Sub
For most VBComponentobjects, the text returned by .Nameand .Properties(“Name”)is the same.
However, for the VBComponentobjects that contain the code behind workbooks, worksheets, and charts, the
.Propertiescollection includes all the properties of the native Excel object, so .Properties(“Name”)
gives the name of the workbook, worksheet, or chart. You can use this to find the Excel object that corre-
sponds to the item that the user is working on in the VBE, or the Excel workbook that corresponds to the
ActiveVBProject. The code for doing this is shown later in this chapter.
The CodeModule Object
All of the VBAcode for a VBComponentis contained within its CodeModuleobject. Through this object,
you can programmatically read, add, change, and delete lines of code. There is only one CodeModulefor
each VBComponent. In the Office VBE, every type of VBComponenthas a CodeModule.
The CodePane Object
This object provides access to the user’s view of a CodeModule. Through this object, you can identify
such items as the section of a CodeModulethat is visible on the screen and the text that the user has
selected. You can identify which CodePaneis currently being edited by using the VBE’s
ActiveCodePaneproperty:
Dim oCP As VBIDE.CodePane
Set oCP = Application.VBE.ActiveCodePane
The Designer Object
Some VBComponents (such as UserForms) present both code and a graphical interface to the developer.
Whereas the code is accessed through the CodeModuleand CodePaneobjects, the Designerobject gives
574
Chapter 26: Programming the VBE
you access to the graphical part. In the standard versions of Office, UserForms are the only components
with a graphical interface for you to control. However, the Developer Editions included in Office 2000
and XPincluded a number of other items (such as the Data Connection Designer) that have graphical
interfaces; these too are exposed to us through the Designerobject and may be available in Office 2007
if you upgraded from one of those earlier versions.
These are the main objects that you’ll be using throughout the rest of this chapter, as you create the VBE
Toolkit Add-in.
Starting Up
There is very little difference in Excel 2007 between a normal workbook and an Add-in. The code and
UserForms can be modified in the same manner, and they both offer the same level of protection (locking
the Project from view). The two advantages of using an Add-in to hold your tools are that it is invisible
within the Excel User Interface, and that it can be loaded using Excel’s Add-ins dialog (Office Menu➪
Excel Options➪Add-Ins➪Manage: Excel Add-Ins➪Go). This chapter uses the term Add-into mean a
container for tools that you’re adding to Excel or the VBE. In fact, during the development of the Add-in,
you will actually keep the file as a standard workbook, only converting it to an Add-in at the end.
Most Add-ins have a common structure, and the one you develop in this chapter will be no exception:
Astartup module to trap the opening and closing of the Add-in
Some code to add the custom menu items to the command bars on opening and remove them
on closing
For the VBE, a class module to handle the menu items’ Clickevents
Some code to perform the menus’ actions
Start with a new workbook and delete all of the worksheets, apart from the first. Press Alt+F11 to switch
to the VBE, and find your workbook in the Project Explorer. Select the VBProjectentry for it. In the
Properties window, change the project’s name to aaVBETools2007. The name starts with the prefix aa,
so it always appears at the top of the Project Explorer, nicely out of the way of any other projects you
may be developing.
Double-click the ThisWorkbookVBComponentto bring up its code pane and type in the following code:
Option Explicit
Dim moMenuHandler As CMenuHandler
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘ Subroutine: Workbook_Open
‘ Purpose:    Create a new instance of the menu-handling class.
‘             The class’s Initialize event sets up the menus.
Private Sub Workbook_Open()
Set moMenuHandler = Nothing
Set moMenuHandler = New CMenuHandler
End Sub
575
Chapter 26: Programming the VBE
This code is run when the workbook is opened, and it just creates a new instance of a class module
(which you’ll create next) and stores a reference to it in a module-level variable. Using this technique,
theClass_Initializeevent is run when the workbook is opened. The class is kept alive while the
workbook is open and is only destroyed (with Class_Terminatecalled) when the workbook is
actuallyclosed—crucially, afterthe user has been given the opportunity to cancel the close (whereas
theWorkbook_BeforeCloseevent is called before the user’s opportunity to cancel the close).
Adding Menu Items to the VBE
The VBE uses the CommandBar object model rather than the Ribbon, so the procedure for adding menus
to the VBE is almost the same as that documented in Chapter 15 for creating popup toolbars. There is
one major difference, which is how to run your routine when the menu item is clicked. When adding
menu items to Excel’s popup toolbars, you set the OnActionproperty of the CommandBarButtonto the
name of the procedure to run. In the VBE, the CommandBarButtonstill has an OnActionproperty, but it
is ignored.
Instead, Microsoft added the Clickevent to the CommandBarButton(and the Changeevent to the
CommandBarComboBox). To use these events, you have to use a class module containing a variable of the cor-
rect type declared WithEvents. So add a class module to the project, give it the name of CMenuHandler,
and type in the following code:
Option Explicit
‘A variable to hook the click event for all our menus.
Private WithEvents mbtnEvents As Office.CommandBarButton
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘ Subroutine: mbtnEvents_Click
‘ Purpose:    Handle the click event of all our menus, by running the procedure
‘             stored in the button’s OnAction property
Private Sub mbtnEvents_Click(ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean)
On Error Resume Next    ‘In case the routine is wrong/doesn’t exist
‘Run the routine given by the commandbar control’s OnAction property
Application.Run Ctrl.OnAction
‘We handled it OK
CancelDefault = True
End Sub
The key things to note here are:
Avariable, mBtnEvents, is declared to receive the Clickevent for the menu items.
The Clickevent is raised by the object referred to by the mBtnEventsvariable (the only one
exposed by it).
576
Chapter 26: Programming the VBE
The Clickevent passes the Ctrlobject (the menu item or toolbar button) that was clicked.
The code runs the routine specified in the control’s OnActionproperty. The code is simulating
the behavior that occurs when adding menu items to Excel’s popup toolbars.
To use this procedure, set the mbtnEventsvariable to refer to one of your custom menu items. The
CommandBars event model is designed in such a way that when setting the reference, you’re also creat-
ing an association between the mbtnEventsvariable and the menu’s Tagproperty. This means that all
menu items that share the same Tagproperty will also raise Clickevents against that variable. You can
now add as many menus as you like, and all their Clickevents will be handled by that one procedure
(as long as you give them all the same Tagproperty).
Now that you can respond to menus being clicked, all you need to do to build the Add-in is add some
custom menus and the procedures to be called from the Clickevent. The easiest place to create your
menus is from within the Class_Initializeevent of the CMenuHandlerclass, which is called when
the class is created in the Workbook_Openprocedure. You can also include code to tidy up after yourself,
by removing the custom menus in the Class_Terminateevent. Because you’ll be adding lots of menus
in this chapter, it makes sense to factor out the menu-creation code into a separate procedure. The entire
CMenuHandlerclass is shown here:
Option Explicit
‘A variable to hook the click event for all our menus.
Private WithEvents mbtnEvents As Office.CommandBarButton
‘A unique tag to identify our menus
Private Const msTAG As String = “Excel2007VBEWorkbookTools”
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘ Subroutine: Class_Initialize
‘ Purpose:    Called when the class is created in the Workbook_Open event,
‘             this procedure creates the menus for the Add-In
Private Sub Class_Initialize()
‘Just in case some of our menus got left behind, remove any previous remnants
DeleteMenus
‘We’ll add our menus here, later in the chapter
‘Associate our event-hook variable with any one of our menus.
On Error Resume Next   ‘In case we don’t find any
Set mbtnEvents = Application.VBE.CommandBars.FindControl( _
Type:=msoControlButton, Tag:=msTAG)
End Sub
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘ Subroutine: DeleteMenus
‘ Purpose:    Find all the menus with our unique Tag and delete them
577
Chapter 26: Programming the VBE
Documents you may be interested
Documents you may be interested