display pdf winform c# : Rotate a pdf page application SDK utility azure wpf html visual studio 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200763-part692

The standard error handler unfreezes the window, displays the error message, and closes. Such error
handling should be added to all the routines in the Add-in:
ERR_HANDLER:
‘Unfreeze the VBE window - same as Application.ScreenUpdating = True
LockWindowUpdate 0&
‘Display the error message (in the VBE Window) and end the routine.
Application.Visible = False
MsgBox “An Error occurred while creating the standard userform.” & vbCrLf & _
Err.Number & “: “ & Err.Description, vbOKOnly, psAddinTitle
Application.Visible = True
End Sub
The Add-in is now complete. Switch back to Excel, use Office Menu➪Prepare➪Properties to give it a title
and comment, then save the workbook as an Add-in (near the bottom of the list of available file types) with
.xlamextension. Then use the Add-Ins dialog box (Office Menu➪Excel Options➪Add-Ins➪Manage:
Excel Add-Ins➪Go) to install it.
Wor king with Referenc es
One of the major enhancements in recent versions of VBAis the ability to declare a reference to an exter-
nal object library (using the Tools➪References dialog), and then use the objects defined in that library as
if they were built into Excel. In this chapter, for example, you have been using the objects defined in the
VBA Extensibility library without thinking about where they came from.
The term for this is early binding, so named because you are binding the external object library to your
application at design time. Using early binding gives the following benefits:
The code is much faster, because all the links between the libraries have been checked and
compiled.
The New operator can be used to create instances of the external objects.
All of the constants defined in the object library can be utilized, thus avoiding numerous “magic
numbers” throughout the code.
Excel displays the Auto List Members, Auto Quick Info, and Auto Data Tips information for the
objects while the application is being developed.
This is explained in more detail in Chapter 19.
There is, however, one major disadvantage. If you try to run your application on a computer that does
not have the external object library installed, you will get a compile-time error that cannot be trapped
using standard error-handling techniques —usually showing a perfectly valid line of code as being the
culprit. Excel will display the error when it runs some code in a module, which contains:
598
Chapter 26: Programming the VBE
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 pages by degrees; save pdf after rotating pages
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
rotate pdf page permanently; pdf reverse page order
An undeclared variable in a procedure—and you didn’t use OptionExplicit
Adeclaration of a type defined in the missing object library
Aconstant defined in the missing object library
Acall to a routine, object, method, or property defined in the missing object library
The VBIDE References collection provides a method of checking that all the application’s references
are functioning correctly, and that all the required external object libraries are installed and are the cor-
rect versions. The code to check this should be put in your Auto_Open (or Workbook_Open) routine,
and the module that contains the Auto_Open must not contain any code that uses the external object
libraries. If there is a broken reference, it is unlikely that any other code will run, so the routine simply
stops after displaying which references are missing. Typical Auto_Open code is:
Sub Auto_Open()
Dim oRef As Object, bBroken As Boolean, sDescn As String
For Each oRef In ThisWorkbook.VBProject.References
‘Is the link broken?
If oRef.IsBroken Then
‘Some broken links don’t have descriptions, so ignore the error
On Error Resume Next
sDescn = “<Not known>”
sDescn = oRef.Description
On Error GoTo 0
‘Display a message, asking the user to install the missing item
MsgBox “Missing reference to:” & vbCrLf & _
“    Name: “ & sDescn & vbCrLf & _
“    Path: “ & oRef.FullPath & vbCrLf & _
“Please reinstall this file.”
bBroken = True
End If
Next
‘If everything present and correct, carry on with the initializing code
If Not bBroken Then 
‘...Continue to open
End If
End Sub
COM Add-ins
The VBE is common to all the Office 2007 applications, so it would be convenient to be able to create
Add-ins for the VBE in a way that is not specific to a single Office application. In this chapter, you have
created the VBE Toolkit as an Excel Add-in, with the result that the added functionality will only be
available when using the VBE from within Excel. This was an appropriate choice, because the Add-in
provides some Excel-specific functionality (such as opening and closing workbooks), but is a poor choice
for the other functions you’ve added.
599
Chapter 26: Programming the VBE
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.
rotate pdf page by page; rotate one page in pdf reader
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.
rotate individual pdf pages reader; reverse page order pdf
COM Add-ins provide a different way of extending the VBE and other Office applications, in a way that
is not necessarily specific to a single application. By using a COM Add-in, you can create a single Add-in
that targets the VBE specifically, and hence works across all the Office applications.
Chapter 18 explains how to create COM Add-ins.
Sum mar y
The Microsoft Visual Basic for Applications Extensibility 5.3 object library provides a rich set of objects,
properties, methods, and events for controlling the VBE itself. Using these objects, developers can create
their own labor-saving Add-ins to help in their daily development tasks.
Many end-user applications can also utilize these objects to manipulate their own code modules,
UserForms, and references to provide a feature-rich, flexible, and robust set of functionality.
The example Add-in developed in this chapter can be downloaded from www.wrox.com.
600
Chapter 26: Programming the VBE
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; how to rotate one page in pdf document
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
rotate all pages in pdf file; how to rotate all pages in pdf at once
Prog ra mmi n g  w it h  th e
Wi nd ow s   API
Visual Basic for Applications is a high-level language that provides you with a rich, powerful, yet
quite simple set of functionality for controlling the Office suite of products, as well as many other
applications. You are insulated—some would say protected—from the “mundane minutiae” of
Windows programming that, say, a C++ programmer has to contend with.
The price you pay for this protection is an inability to investigate and control many elements of
the Windows platform. You can, for example, use Application.International to read most
of the Windows Regional Settings and read the screen dimensions from Application.Usable
Widthand Application.UsableHeight, but that’s about it. All the Windows-related items avail-
able to you are properties of the Application object and are listed in Appendix A.
The Windows platform includes a vast amount of low-level functionality that is not normally
accessible from VBA, from identifying the system colors to creating a temporary file. Some of the
functionality has been exposed in VBA, but only to a limited extent, such as creating and using an
Internet connection (for example, you can open a page from the Internet using Workbooks.Open
“<URL>”, but you can’t just download it to disk). There are also a number of other object libraries
typically available on Windows computers that provide high-level, VBA-friendly access to the
underlying Windows functionality. Examples of these are the Windows Scripting Runtime and the
Internet Transfer Control.
There are times, though, when you need to go beyond the limits of VBAand the other object
libraries, and delve into the files that contain the low-level procedures provided and used by
Windows. The Windows Operating System is made up of a large number of separate files, mostly
dynamic link libraries (DLLs), each containing code to perform a discrete set of interrelated func-
tions. DLLs are files that contain functions that can be called by other Windows programs or other
DLLs. They cannot be run like programs themselves.
These files are collectively known as the Windows Application Programming Interface, or
Windows API. Some of the most common files you’ll use in the Windows API are detailed in the
following table.
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.
pdf rotate single page and save; how to rotate all pages in pdf
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 pages in pdf online; how to reverse pages in pdf
File
Function Group(s)
USER32.EXE
User interface functions (such as managing windows, 
the keyboard, clipboard, and so on)
KERNEL32.DLL
File- and system-related functions (such as managing programs)
GDI32.DLL
Graphics and display functions
SHELL32.DLL
Windows shell functions (such as handling icons and launching
programs)
COMDLG32.DLL
Standard Windows dialog functions
ADVAPI32.DLL
Registry and NT Security functions
MPR.DLLand NETAPI32.DLL
Network functions
WININET.DLL
Internet functions
WINMM.DLL
Multimedia functions
WINSPOOL.DRV
Printing functions
This chapter explains how to use the functions contained in these files in your VBA applications
and includes a number of useful examples. All of the Windows API functions are documented in
the Platform SDK section of the MSDN Library at http://msdn.microsoft.com/library/
default.asp?url=/library/en-us/winprog/winprog/windows_api_start_page.asp,
which can be thought of as the online help for the Windows API. Because Microsoft regularly changes
its URLs, that page can be found in the MSDN Library menu under Win32 and COM Development➪
Development Guides➪ Windows API➪Windows API.
Anat omy of an AP I Call
Before you can use the procedures contained in the Windows DLLs, you need to tell the VBA interpreter
where they can be found, the parameters they take, and what they return. Do this using the Declare
statement, which VBA help shows as:
[Public | Private] Declare Sub name Lib “libname” [Alias “aliasname”]
[([arglist])]
[Public | Private] Declare Function name Lib “libname” [Alias “aliasname”]
[([arglist])] [As type]
The following is the declaration used to find the Windows TEMP directory:
Private Declare Function GetTempPath Lib “kernel32” _
Alias “GetTempPathA” ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long
602
Chapter 27: Programming with the Windows API
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.
rotate pdf pages and save; reverse pdf page order online
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 expert rotate page; rotate pdf pages on ipad
This tells VBA that:
The function is going to be referred to in the code as GetTempPath
The procedure can be found in kernel32.dll
It goes by the name of GetTempPathA in the DLL (case sensitive)
It takes two parameters, a Longand a String (more about these later)
It returns a Long
Microsoft used to include a simple API declaration viewer with the Developer Editions of Office, but
that is now only available by installing Visual Studio and hasn’t been updated to include the more recent
versions of Windows. At the time of this writing, a great alternative is available for free download from
www.activevb.de/rubriken/apiviewer/index-apiviewereng.html.
Interpreting C-Style Declar at ions
The MSDN library is the best source for information about the functions in the Windows API, but it’s
primarily targeted toward C and C++ programmers and displays the function declarations using C nota-
tion. The API viewer mentioned in the previous section contains many of the declarations for the core
Windows functions in VBA notation, but if you encounter a function that it does not include, it is usually
possible to convert the C notation to a VBADeclare statement, using the following method.
The declaration shown in MSDN for the GetTempPath function (at
http://msdn.microsoft.com/library/en-us/fileio/fs/gettemppath.asp) is:
DWORD GetTempPath(
DWORD nBufferLength,
LPTSTR lpBuffer
);
This should be read as:
<Return data type> <Function name>(
<Parameter data type> <Parameter name>,
<Parameter data type> <Parameter name>
);
Rearranging the C-style declaration to a VBADeclare statement gives the following (where the C-style
DWORDand LPSTRare converted to VBAdata types later):
Declare Function <Our Name> Lib “???” Alias “GetTempPath” ( _
nBufferLength As DWORD, _
lpBuffer As LPTSTR _
) As DWORD
On the Windows platform, there are two types of character sets. The ANSI character set has been the
standard for many years and uses one byte to represent one character, which only gives 255 characters
603
Chapter 27: Programming with the Windows API
available at any time. To provide simultaneous access to a much wider range of characters (such as Far
Eastern alphabets), the Unicode character set was introduced. This allocates two bytes for each character,
allowing for 65,535 characters.
To provide the same functionality for both character sets, the Windows API includes two versions of all
the functions that involve strings, denoted by the A suffix for the ANSI version and Wfor the Unicode (or
Wide) version. VBA always uses ANSI strings, so you will always use the A version of the functions—in
this case GetTempPathA. The C-style declarations also use different names for their data types, which you
need to convert. Though not an exhaustive list, the following table shows the most common data types.
C Data Type
VBA Declaration
BOOL
ByVal <Name> As Long
BYTE
ByVal <Name> As Byte
BYTE *
ByRef <Name> As Byte
Char
ByVal <Name> As Byte
char huge *
ByVal <Name> As String
char FAR *
ByVal <Name> As String
char NEAR *
ByVal <Name> As String
DWORD
ByVal <Name> As Long
HANDLE
ByVal <Name> As Long
HBITMAP
ByVal <Name> As Long
HBRUSH
ByVal <Name> As Long
HCURSOR
ByVal <Name> As Long
HDC
ByVal <Name> As Long
HFONT
ByVal <Name> As Long
HICON
ByVal <Name> As Long
HINSTANCE
ByVal <Name> As Long
HLOCAL
ByVal <Name> As Long
HMENU
ByVal <Name> As Long
HMETAFILE
ByVal <Name> As Long
HMODULE
ByVal <Name> As Long
HPALETTE
ByVal <Name> As Long
HPEN
ByVal <Name> As Long
HRGN
ByVal <Name> As Long
HTASK
ByVal <Name> As Long
604
Chapter 27: Programming with the Windows API
C Data Type
VBA Declaration
HWND
ByVal <Name> As Long
Int
ByVal <Name> As Long
int FAR *
ByVal <Name> As Long
LARGEINTEGER
ByVal <Name> As Currency
LONG
ByVal <Name> As Long
LPARAM
ByVal <Name> As Long
LPCSTR
ByVal <Name> As String
LPCTSTR
ByVal <Name> As String
LPSTR
ByVal <Name> As String
LPTSTR
ByVal <Name> As String
LPVOID
ByRef <Name> As Any
LRESULT
ByVal <Name> As Long
UINT
ByVal <Name> As Integer
UINT FAR *
ByVal <Name> As Integer
WORD
ByVal <Name> As Integer
WPARAM
ByVal <Name> As Integer
Other
Probably a user-defined type, which you need to define.
Some API definitions on the MSDN also include the IN and OUT identifiers. If the VBA type is shown in
the table as ByVal<Name>AsLong, it should be changed to ByRef...for the OUT parameters.
Putting these into the declaration gives:
Declare Function GetTempPath Lib “???” _
Alias “GetTempPathA” ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String _
) As Long
Strings are always passed ByVal (by value) to API functions. This is because VBA
uses its own storage mechanism for strings, which the C DLLs do not understand.
By passing the string ByVal, VBA converts its own storage structure into one that
the DLLs can use.
605
Chapter 27: Programming with the Windows API
The only thing that the declaration doesn’t tell you is the DLL that contains the function. Looking at the
bottom of the MSDN page, the Requirements section includes the lines:
DLL: Requires kernel32.dll
This tells you that the function is in the file kernel32.dll, giving the final declaration of:
Declare Function GetTempPath Lib “kernel32.dll” _
Alias “GetTempPathA” ( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String _
) As Long
This is the same as that shown in the API viewer, which should be your first reference point for all API
function definitions. Note that the Alias clause is not required when the function name is the same as
the alias (typically when there are no String parameters), and is automatically removed when the func-
tion is copied into a code module.
Constants, St ruct ur es, Handles , and Classes
Most of the API functions include arguments that accept a limited set of predefined constants. For exam-
ple, to get information about the operating system’s capabilities, you can use the GetSystemMetrics
function:
Declare Function GetSystemMetrics Lib “user32” ( _
ByVal nIndex As Long) As Long
The value that you pass in the nIndexargument tells the function which metric you want to be given, and
must be one of a specific set of constants that the function knows about. The applicable constants are listed
in the MSDN documentation, with their corresponding values in many cases. The API Viewer also contains
most of the constants that you are likely to need. There are more than 80 constants for GetSystemMetrics,
including SM_CXSCREEN and SM_CYSCREEN to retrieve the screen’s dimensions:
Const SM_CXSCREEN As Long = 0   ‘Screen width
Const SM_CYSCREEN As Long = 1   ‘Screen height
Private Declare Function GetSystemMetrics Lib “user32” _
(ByVal nIndex As Long) As Long
Sub ShowScreenDimensions()
Dim lScreenX As Long, lScreenY As Long
‘Get the screen’s dimensions
lScreenX = GetSystemMetrics(SM_CXSCREEN)
Warning: Using an incorrect function declaration is likely to crash Excel. When
developing with API calls, save your work regularly.
606
Chapter 27: Programming with the Windows API
lScreenY = GetSystemMetrics(SM_CYSCREEN)
MsgBox “Screen resolution is “ & lScreenX & “x” & lScreenY
End Sub
Many of the Windows API functions pass information using structures, which is the C term for a user-
defined type (UDT). For example, the GetWindowRect function is used to return the size of a window,
and is defined as:
Declare Function GetWindowRect Lib “user32” ( _
ByVal hwnd As Long, _
lpRect As RECT) As Long
The lpRect parameter is a RECT structure that is filled in by the GetWindowRect function with the
window’s dimensions. The RECT structure is defined on MSDN (at http://msdn.microsoft.com/
library/en-us/gdi/rectangl_6cqa.asp) as:
typedef struct tagRECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
This can be converted to a VBAUDT using the same data-type conversion shown in the previous section,
giving:
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
The UDT definitions for most of the common structures are also included in the API Viewer.
The first parameter of the GetWindowRectfunction is shown as hwnd, and it represents a handle to a win-
dow. A handle is simply a pointer to an area of memory that contains information about the object being
pointed to (in this case, a window). Handles are allocated dynamically by Windows and are unlikely to be
the same between sessions. You cannot, therefore, hard code the handle number in your code, but must
use other API functions to give you the handle you need. For example, to obtain the dimensions of a win-
dow, you need to get the window’s hwnd. The API function FindWindowgives it to you:
‘API call to find a window
Public Declare Function FindWindow Lib “user32” _
Alias “FindWindowA” ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
This function looks through all the open windows until it finds one with the class name and caption that
you ask for. The Hwndproperty for Excel’s main window was added to the Application object in Excel
607
Chapter 27: Programming with the Windows API
Documents you may be interested
Documents you may be interested