display pdf winform c# : Rotate pdf pages individually SDK Library API .net wpf winforms sharepoint 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200730-part656

Edit the sharedStrings XML File to Implement Mass Updates to Text
As mentioned before, the sharedStringsXMLpart holds all of the strings used in the Excel file. These
strings are referenced via the shared index number by each sheet in the container to apply them to the
correct cell. One nifty trick is to change a string in the sharedStringsfile and watch that change take
effect in your Excel file.
For example, in the SalesByPeriod.xlsxsample file, certain records are tagged with the market South
America. Suppose you wanted to change all instances of South America to Latin America. All you would
have to do is open the sharedStringsfile, find South America, and change it to Latin America. After
repackaging the Excel file, you will see that every instance of South America has been changed to Latin
America. Although you could make this change manually, imagine doing this for dozens of files.
The good news is that you can automate this process using MSXMLDOM and XPath. The procedure
shown here demonstrates how:
Sub Change_SharedString_File()
Dim oXmlDoc As DOMDocument
Dim oXmlNode As IXMLDOMNode
‘Run the Unzip procedure
Call UnzipPackage
‘Create an instance of the DOMDocument and load XML file
Set oXmlDoc = New DOMDocument
oXmlDoc.async = False
oXmlDoc.Load (“C:\MyUnzipped\xl\sharedstrings.xml”)
‘Pass Xpath to find the text that needs to be changed
Set oXmlNode = oXmlDoc.SelectSingleNode(“//t[text()=’South America’]”)
‘Make sure text exists
If oXmlNode Is Nothing Then
Exit Sub
End If
‘Change the text and save your changes
oXmlNode.Text = “Latin America”
oXmlDoc.Save “C:\MyUnzipped\xl\sharedstrings.xml”
‘Run the Zip procedure
Call ZipPackage
‘Ready message
MsgBox “Find your updated file here:” & vbCrLf & “C:\UpdatedFile.xlsx”
Set oXmlNode = Nothing
Set oXmlDoc = Nothing
End Sub
To understand what is going on here, evaluate this code in steps:
268
Chapter 12: Working with XML and the Open XML File Formats
Rotate pdf pages individually - 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 and save; how to reverse page order in pdf
Rotate pdf pages individually - 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 one page in pdf document; pdf rotate single page
1.
Run the UnzipPackageprocedure you created previously.
2.
Create an instance of the DOMDocumentobject and load the sharedstrings.xmlfile.
3.
Use an XPath expression to find the tnode that contains the text ‘SouthAmerica’.
4.
Check to make sure the text exists; if it doesn’t, exit the procedure.
5.
Edit the text to “LatinAmerica”and save the change back to the sharedstrings.xmlfile.
6.
Repackage the Excel file using the ZipPackageprocedure created previously.
7.
Clean up and output a message.
After running the procedure, open the C:\UpdatedFile.xlsxfile to see that all of the records that were
tagged as South America are now tagged Latin America.
Unprotect a Worksheet via Open XML Manipulation
It may seem rather amazing that all you have to do to unprotect a worksheet is delete the
sheetProtectionelement in that sheet’s XMLpart. That’s right; simply removing the sheetProtection
element from the XMLpart negates all protections placed on that sheet. The following procedure
demonstrates how to unprotect a worksheet by manipulating its XMLpart; here you will unprotect
Sheet1 in the SalesByPeriod.xlsxsample file:
Sub RemovePasswordProtection()
Dim oXmlDoc As DOMDocument
Dim oxmlNode As IXMLDOMNode
‘Run the Unzip procedure
Call UnzipPackage
‘Create an instance of the DOMDocument and load XML file
Set oXmlDoc = New DOMDocument
oXmlDoc.async = False
oXmlDoc.Load (“C:\MyUnzipped\xl\worksheets\sheet1.xml”)
‘Find and remove the sheetprotection element
Set oxmlNode = oXmlDoc.SelectSingleNode(“//sheetProtection”)
oxmlNode.parentnode.RemoveChild oxmlNode
‘Save Changes
oXmlDoc.Save “C:\MyUnzipped\xl\worksheets\sheet1.xml”
‘Run the Zip procedure
Call ZipPackage
‘Ready message and clean up
MsgBox “Find your updated file here:” & vbCrLf & “C:\UpdatedFile.xlsx”
Set oxmlNode = Nothing
Set oXmlDoc = Nothing
End Sub
269
Chapter 12: Working with XML and the Open XML File Formats
How to C#: Modify Color and Contrast
will adjust red, green and blue three channels with gamma parameter, or you can choose the GammaImageChannel method to adjust the three channels individually.
how to rotate all pages in pdf at once; reverse pdf page order online
C# TIFF: C#.NET Code to Process TIFF, RasterEdge XDoc.Tiff for .
image and document formats are: TIFF, JPEG, GIF, BMP, PNG, PDF, Word and You can also reorder or remove pages from Tiff files public void Rotate(RotateOder order
pdf rotate pages and save; how to rotate pdf pages and save
In this procedure, you:
1.
Run the UnzipPackageprocedure created previously.
2.
Create an instance of the DOMDocumentobject and load the sharedstrings.xmlfile.
3.
Use an XPath expression to find the sheetProtectionnode and then remove the node.
4.
Save the change back to the sheet’s XMLfile.
5.
Repackage the Excel file using the ZipPackageprocedure created previously.
6.
Clean up and output a message.
Once your procedure has run its course, open the C:\UpdatedFile.xlsxfile to see that Sheet1 is now
unprotected.
Updating Connection Strings
Aparticularly useful trick is to use the techniques in this chapter to change the connection strings to the
external data sources in your files. For example, the sample file SalesByPeriod.xlsxcontains an exter-
nal data source that comes from the Facility Services Access database in the same directory. If you were
to move the database, the connection to the external data source would be severed. Suppose you had
dozens of files that were linked to a data source that moved or was renamed. You would have dozens of
files that would have severed links that would need to be fixed.
In this walkthrough, you update the connection strings in an Excel file by coding against the workbook’s
connections.xmlfile. To prepare for this walkthrough, create a new directory on your C:\drive and
call it NewLocation. Next, move the Facility Services Access database found in the sample folder for this
chapter to your newly created directory.
Next, run the code you see here:
Sub Change_ConnectionString()
Dim oxmlDoc As DOMDocument
Dim oxmlNode As IXMLDOMNode
Dim StrOldLocation As String
Dim StrNewLocation As String
‘Define the old and new location paths
StrOldLocation = “C:\VBA Reference\SampleFiles\Facility Services.accdb”
StrNewLocation = “C:\StrNewLocation\Facility Services.accdb”
‘Run the Unzip procedure
Call UnzipPackage
‘Create an instance of the DOMDocument and load XML file
Set oxmlDoc = New DOMDocument
oxmlDoc.async = False
oxmlDoc.Load (“C:\MyUnzipped\xl\connections.xml”)
‘Pass Xpath to find the SourceFile attribute
270
Chapter 12: Working with XML and the Open XML File Formats
Set oxmlNode = oxmlDoc.SelectSingleNode(“/connections/connection/@sourceFile”)
‘Replace the old string with new string and save changes
oxmlNode.Text = Replace$(oxmlNode.Text, StrOldLocation, StrNewLocation)
oxmlDoc.Save (“C:\MyUnzipped\xl\connections.xml”)
‘Pass Xpath to find the connection string attribute
Set oxmlNode =
oxmlDoc.SelectSingleNode(“/connections/connection/dbPr/@connection”)
‘Replace the old string with new string and save changes
oxmlNode.Text = Replace$(oxmlNode.Text, StrOldLocation, StrNewLocation)
oxmlDoc.Save (“C:\MyUnzipped\xl\connections.xml”)
‘Run the Zip procedure
Call ZipPackage
‘Ready message
MsgBox “Find your updated file here:” & vbCrLf & “C:\UpdatedFile.xlsx”
Set oxmlNode = Nothing
Set oxmlDoc = Nothing
End Sub
Here are the steps involved in this procedure:
1.
Store the old and new location paths in strings for later use.
2.
Run the UnzipPackageprocedure.
3.
Create an instance of the DOMDocumentobject and load the connections.xmlfile.
4.
Use an XPath expression to locate and trap the sourcefileattribute for the connectionelement.
5.
Use the Replaceexpression to find any part of the attribute’s text containing the old
locationpath and replace that path with the new location path. Then save the change to the
connections.xmlfile.
6.
Use an XPath expression to locate and trap the connectionattribute for the dbPRelement.
7.
Use the Replaceexpression to find any part of the attribute’s text containing the old
locationpath and replace that path with the new location path. Then save the change to the
connections.xmlfile.
8.
Repackage the Excel file using the ZipPackageprocedure created previously.
9.
Clean up and output a message.
The at symbol (@) is the abbreviated syntax for attribute. Placing @ directly in front
of a location step in an XPath expression identifies that step as an attribute node.
271
Chapter 12: Working with XML and the Open XML File Formats
After running the procedure, open the C:\UpdatedFile.xlsxfile and refresh the employee table
located on Sheet2.
Summary
This chapter brought you closer to understanding XMLand seeing the potential impact that XML, if
adopted, could have on your Excel processes and procedures. Can you continue to work with Excel
without using XML? Sure you can. But XMLis not the paperless office. XMLwill not go away anytime
soon. It is fast becoming an industry standard that is used in an increasing number of environments.
Thenew Open XMLfile formats promote interoperability, exposing new opportunities for Excel pro-
grammers to integrate with and expand to platforms that were previously out of scope. Congratulations,
you have taken your first steps toward being able to develop the next generation of Excel solutions.
272
Chapter 12: Working with XML and the Open XML File Formats
UserForms
UserForms are essentially user-defined dialog boxes. You can use them to display information
andto allow the user to input new data or modify the displayed data. The MsgBoxand InputBox
functions provide simple tools to display messages and get input data, respectively, but UserForms
take you to a new dimension. With these, you can implement nearly all the features that you are
accustomed to seeing in normal Windows dialog boxes.
You create a UserForm in the VBE window using Insert➪UserForm. You add controls from the
Toolbox in the same way that you add controls to a worksheet. If the Toolbox is not visible, use
View➪Toolbox.
UserForms can contain Labels, TextBoxes, ListBoxes, ComboBoxes, CommandButtons, and many
other ActiveX controls. You have complete control over the placement of controls and can use as
many controls as you need. Naturally, each control can respond to a wide variety of events.
Displaying a UserForm
To load a UserForm called UserForm1into memory, without making it visible, you use the Load
statement:
Load UserForm1
You can remove UserForm1from memory using the Unloadstatement:
Unload UserForm1
To make UserForm1visible, use the Showmethod of the UserFormobject:
UserForm1.Show
If you show a UserForm that has not been loaded, it will be automatically loaded. You can use the Hide
method to remove a UserForm from the screen without removing it from memory:
UserForm1.Hide
Figure 13-1 shows a simple UserForm in action that will be developed over the course of this chapter.
Ithas been designed to allow you to see the current values in cells B2:B6 and to make changes to those
values. It is linked directly to the cells in the worksheet, which makes it very easy to set up with a mini-
mum of VBAcode.
Figure 13-1
The ActiveX command button in the worksheet, with the caption Show Dialog, contains the following
event procedure:
Private Sub cmdShowUserForm_Click()
frmPersonal.Show
End Sub
The UserForm is modal by default. This means that the UserForm retains the focus until it is unloaded
or hidden. The user cannot activate the worksheet or click Ribbon buttons until the UserForm is closed.
Modeless UserForms, which do allow the user to perform other tasks while they are visible, are discussed
later in this chapter.
274
Chapter 13: UserForms
Creating a UserForm
Figure 13-2 shows the UserForm in the VBE window.
Figure 13-2
The name of the UserForm was changed from the default name UserForm1to frmPersonal. You do
this in the first entry, (Name), in the Properties window. The Captionproperty is changed to Personal
Data. The controls were added from the Toolbox.
There are two TextBox controls at the top of the form for name and age data. There are two option but-
tons (also known as radio buttons) for Male and Female, which are inside a frame control.
There is also a CheckBox for Married, a ListBox for Department, and a CommandButton for OK.
When you want to have a frame around other controls, you must insert the frame
first, and then insert the controls into the frame.
275
Chapter 13: UserForms
The name of the first TextBox was changed to txtName,and the ControlSourceproperty of txtName
was entered as Sheet1!B2. The name of the second TextBox was changed to txtAge,and the
ControlSourceproperty of txtAgewas entered as Sheet1!B3. Similar changes were made to the
other main controls. The changes are summarized in the following table.
Control
Name
ControlSource
TextBox
txtName
Sheet1!B2
TextBox
txtAge
Sheet1!B3
OptionButton
optMale
Sheet1!C4
OptionButton
optFemale
Sheet1!D4
CheckBox
chkMarried
Sheet1!B5
ListBox
1stDepartment
Sheet1!B6
CommandButton
cmdOK
When you assign a ControlSourceproperty to a worksheet cell, the cell and the control are linked in
both directions. Any change to the control affects the cell, and any change to the cell affects the control.
The descriptive titles on the form to the left of the TextBoxesand above the ListBoxshow that the
departments are Labelcontrols. The Captionproperties of the Labelcontrols were changed to Name,
Age, and Department. The Captionproperty of the frame around the OptionButtoncontrols was
changed to Sex,and the Captionproperties of the option buttons were changed to Maleand Female.
The Captionproperty of the CheckBoxwas changed to Married.
The Male and Female option buttons can’t be linked to B4. It is not appropriate to display the values of
these controls directly, so the following IFfunction in cell B4 converts the Trueor Falsevalue in cell C4
to the required Maleor Femaleresult:
=IF(C4=TRUE,”Male”,”Female”)
Although you only need to set cell C4to get the required result, you need to link both option buttons to
separate cells if you want the buttons to display properly when the UserForm is shown.
The RowSourceproperty of lstDepartmentwas entered as Sheet1!A11:A18. It is good practice to cre-
ate names for the linked cells and use those names in the ControlSource, rather than the cell references
used here, but this extra step has been omitted to simplify this example.
It is a good idea to give your UserForms and controls descriptive names that identify
what type of object they are and what their purpose is. The lowercase three-character
prefix identifies the object type. For example, you use frmfor a UserForm, scbfor a
scrollbar, and txtfor a TextBox. The capitalized words that follow identify the con-
trol’s purpose. This makes it much easier to write and maintain the VBAcode that
manipulates these objects.
276
Chapter 13: UserForms
The following Clickevent procedure was created for the button in the code module behind the
UserForm:
Private Sub cmdOK_Click()
Unload Me
End Sub
Meis a shortcut keyword that refers to the UserFormobject containing the code. Mecan be used in any
class module to refer to the object the class module represents. If you want to access the control values
later in your VBAcode, you must use the Hidemethod, which leaves the UserForm in memory.
Otherwise, the Unloadstatement removes the UserForm from memory and the control values are lost.
You will see examples that use Hideshortly.
Clicking the x in the top-right corner of the UserForm will also dismiss the UserForm. This unloads the
UserForm so that it is removed from memory. You will see how to prevent this later.
Directly Accessing Controls in UserForms
Linking UserForm controls to cells is not always the best way to work. You can gain more flexibility by
directly accessing the data in the UserForm. Figure 13-3 shows a revised version of the previous exam-
ple. You want to display essentially the same UserForm, but you want to store the resulting data as
shown. Sexwill be stored as a single-letter code, Mor F. The Departmentname will be stored as a two-
character code.
Figure 13-3
277
Chapter 13: UserForms
Documents you may be interested
Documents you may be interested