511
The problem withApplication.Activate is that it requires you know the exact Window name of
the open application.  Many applications change their Windows name based on the file that is
open.  Notepad is a good example.  The following procedures, developed by Rob Bovey, test
based on a partial Window Name.
'put these statements at the top of the module
Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, _
ByVal lpWindowName As Any) As Long
Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hWnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long
Declare Function IsIconic Lib "user32" _
(ByVal hWnd As LongAs Long
Sub ActivateNotePad_Excel5_Version()
Dim sTtl As String * 128, hWnd As Long, a As Long
hWnd = FindWindowA("NOTEPAD", 0&)
If hWnd = 0 Then
'if not open, open it
Shell "NOTEPAD.EXE", 1
Else
'activate the notepad window
a = GetWindowText(hWnd, sTtl, 128)
If IsIconic(hWnd) <> 0 Then
'do this if minimized
SendKeys "+~"
End If
'activate the window
AppActivate Left(sTtl, a)
End If
End Sub
33.14 Starting Word From Excel
The following will open Word if it is not open and display the document you specify:
You will need to first set a reference to Word first via the VB Editor – select Tools, References
and check the Word application.
Rotate pages in pdf online - 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 pdf pages and save; pdf rotate single page reader
Rotate pages in pdf online - 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 few degrees; rotate single page in pdf reader
512
Dim WordObj As Word.Application
On Error Resume Next
Err.Number = 0
Set WordObj = GetObject(, "Word.Application.8")
If Err.Number = 429 Then
Set WordObj = CreateObject("Word.Application.8")
Err.Number = 0
End If
WordObj.Visible = True
WordObj.Documents.Open fileName:="c:\whatever.doc"
'rest of your code
WordObj.Quit
Set WordObj = Nothing
The following is another approach:
Sub OpenWord()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open( _
"C:\whatever.doc", ,True,False)
wdApp.Visible =True
End Sub
33.15 Opening A MS Word Document From Excel
The following will open up another instance of Word and open the document C:\Test.Doc
CreateObject("word.Application").Documents _
.Open("C:\Test.doc").Application.Visible = True
or
Sub OpenAWordFile()
Dim wordApp As Object
Dim fNameAndPath As String
fNameAndPath = "c:\test.doc"
Set wordApp = CreateObject("Word.Application")
wordApp.Documents.Open (fNameAndPath)
wordApp.Visible =True
End Sub
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Enable specified pages deleting from PDF in Visual Basic .NET class. Free trial SDK library download for Visual Studio .NET program. Online source codes for
rotate individual pages in pdf; how to reverse pages in pdf
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
add and insert one or multiple pages to existing adobe PDF document in VB.NET. Ability to create a blank PDF page with related by using following online VB.NET
rotate pdf page permanently; pdf rotate page
513
33.16 Running Word Macros From Excel
The following is an example of how to do this, plus a number of articles available from
Microsoft's knowledge base.
http://support.microsoft.com/support/kb/articles/q177/7/60.asp
VBA: How to Run Macros in Other Office Programs (OFF 97)
The following Sub procedure assumes that the document WordDoc.Doc contains a macro called
"WordMacro."
Sub msWordExample()
Dim msWord as Object
Set msWord = CreateObject("Word.Application")
msWord.Documents.Open "C:\My Documents\WordDoc.Doc"
' Note that the project name and module name are required to
' path the macro correctly.
msWord.Run "Project.Module1.WordMacro"
End Sub
Other articles of interest on the internet:
http://support.microsoft.com/support/kb/articles/q128/4/05.asp
XL: How to Run a WordBasic Macro from an MS Excel Macro
http://support.microsoft.com/support/kb/articles/q165/5/18.asp
Calling Macros Using OLE from MS Visual Basic for Applications
(this has word running an excel macro, but the idea should the same)
http://support.microsoft.com/support/kb/articles/q149/8/30.asp
XL: Macro to Link a Range of Cells in Word
(Example of Excel controlling word, but not running a word macro)
http://support.microsoft.com/support/kb/articles/q165/9/26.asp
OFF97: Can't Dimension Word as Application from Other Program
(Examples of Working with Word 97 using OLE)
http://support.microsoft.com/support/kb/articles/q135/0/82.asp
C# PDF Page Insert Library: insert pages into PDF file in C#.net
to merge PDF document files by C# code, how to rotate PDF document page to delete PDF page using C# .NET, how to reorganize PDF document pages and how
rotate pdf pages in reader; how to rotate all pages in pdf in preview
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
reverse pdf page order online; rotate a pdf page
514
Invalid Page Fault Running VB Macro in Hidden Word Session
(Word 7, when Word is Closed causes a problem)
http://support.microsoft.com/support/kb/articles/q167/2/23.asp
Microsoft Office 97 Automation Help File Available on MSL
-------
DDE, XLM and Older Versions 
-------------
http://support.microsoft.com/support/kb/articles/q93/6/57.asp
WD: Running Word for Windows as a DDE Server
http://support.microsoft.com/support/kb/articles/q94/6/24.asp
Excel Macro to Determine If Word for Windows Is Loaded
http://support.microsoft.com/support/kb/articles/q68/5/10.asp
XLM: Opening and Closing Word for Windows Using an Excel Macro
http://support.microsoft.com/support/kb/articles/q141/7/72.asp
XL: Visual Basic Examples Using DDE
33.17 Opening A PowerPoint Presentation
The following code will open a new instance of PowerPoint and display a presentation.  When
one stops the presentation (by pressing ESC, then PowerPoint stays open:
Sub Open_And_Run_PPT1()
Dim PPtObject As Object
Dim
pptPresentation
As Object
Set PPtObject = CreateObject("PowerPoint.Application")
PPtObject.Visible = True
Set pptPresentation = _
PPtObject.Presentations.Open _
("C:\temp\presentation example.ppt")
PPtObject.ActivePresentation.SlideShowSettings.Run
End Sub
If you want PowerPoint to close after the presentation, then use code like the following:.
Sub Open_And_Run_PPT_and_Close()
Dim PPtObject As Object
Dim
pptPresentation
As Object
Set PPtObject = CreateObject("PowerPoint.Application")
PPtObject.Visible = True
Set pptPresentation = _
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Free online C# class source code for deleting specified PDF pages in .NET console application. Able to remove a single page from PDF document.
how to rotate a single page in a pdf document; save pdf rotate pages
VB.NET PDF - WPF PDF Viewer for VB.NET Program
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf reverse page order online; how to rotate just one page in pdf
515
PPtObject.Presentations.Open _
("C:\temp\presentation example.ppt")
PPtObject.ActivePresentation.SlideShowSettings.Run
While PPtObject.SlideShowWindows.Count = 1
DoEvents
Wend
PPtObject.ActivePresentation.Close
PPtObject.Quit
End Sub
33.18 Displaying A DOS Window
The following will display a DOS window:
Sub GiveMeDos()
Dim taskID
taskID = Shell("Command.com", 1)
End Sub
33.19 Getting Data From Access
One of the most popular ways to do this is to use ADO or DAO to get the data and then to use
Excel's CopyFromRecordset method to plop the data down.  In Excel 97 and prior, the
CopyFromRecordset method only supports DAO recordsets.  However, Excel 2000 now supports
ADO recordsets.
The following illustrate two methods of getting data into Excel from Access:
Sub GetDataWithDAO()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = OpEndatabase("C:\My Documents\SalesDb.mdb")
Set rst = db.OpenRecordset("SalesData")
Range("A1").CopyFromRecordSet rst
End Sub
Sub GetDataWithADO()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\My Documents\SalesDb.mdb;"
rst.Open "Select * From SalesData", cnt
Range("A1").CopyFromRecordSet rst
End Sub
If you need to get data from Access while running a Visual Basic macro, also check the
following Microsoft Internet pages for information of using DAO to get data from Access.
http://support.microsoft.com/support/excel/dao.asp
This page has a number of articles and a help file you can download.
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
rotate one page in pdf; pdf expert rotate page
C# HTML5 PDF Viewer SDK to create PDF document from other file
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf reverse page order; rotate all pages in pdf file
516
Microsoft knowledge base article Q149254 also gives an example of how to return DAO query
results directly to a list box in Excel.
The following is a posting on the Excel Visual Basic user group that gives some additional
examples
Question asked: "Looking for some advice relating to connecting to an Access database within
excel"
Response:
If it's not a secured database, then you can simply call
set rs = DBEngine.Opendatabase(DBPath, Options)
-
check the help file for details. You will, of course, have to select one of the DAO libraries in the
VBA references dialog first 
-
3.5 is the recommended one, assuming you're on Office 97.
If it is secured, you need to mess about with userid's and passwords.
Find the security file
DBEngine.SystemDB = "f:\Data\Workgroup.mdw"
Open a workspace
Set wsp = DBEngine.CreateWorkspace( _
"SomeWorkspaceName", txtUserID, txtPassword, dbUseJet)
DBEngine.Workspaces.Append wsp
And then open the database in this secure workspace:
Set db = wsp.OpenDatabase(strDBName, Options, etc)
And read the data
Set rs = db.OpenRecordset(strSQL, etcc, etccc)
You will need really good error trapping, otherwise you end up with un
-
initialized or dropped
variables all over the place.
33.20 How To Exchange Data Between Access And
Excel
Take a look at the articles at
http://support.microsoft.com/support/excel/dao.asp
517
33.21 SQL Query Strings
SQL query strings greater than 255 characters should be broken into an array and each portion of
the query should be less than or equal to 127 characters.  You will need to use a variant array.
See the below articles for sample code that does this.
http://support.microsoft.com/support/kb/articles/q114/9/92.asp
XL: SQLExecQuery and SQLRequest Limited to 255 Characters
http://support.microsoft.com/support/kb/articles/q124/2/18.asp
XL: Macro Examples Using XLODBC Functions
[ See Sample 8 ]
33.22 Excel GetObject To Open Word
Make sure you've got references enabled to Word.  From the VBA Editor, go to theTools menu,
References, and check "Microsoft Word 8.0 Object Library".  After you do this, the following
statement will work and not return an error:
Dim mywd As Object
Set mywd=GetObject (, "Word.Application")
33.23 Using Barcodes in Excel
There are a number of ways to get bar code data into Excel depending on the type of bar code
reader that you have.  Most bar code readers are available with one of two output options.  The
first option is called "Keyboard Wedge" output where you unplug your keyboard, plug the bar
code reader into the keyboard port on your PC and then plug your keyboard into the bar code
reader. This arrangement makes the bar code reader appear as it were simply a second keyboard.
Your original keyboard continues to work as normal however when you read a bar code, the data
encoded in the bar code appears to any application running on your PC as if it were typed in.  The
keyboard wedge interface is extremely simple however it has a few drawbacks.  If you swipe a
bar code, the cursor has to be in the correct input field in the correct application otherwise you
end up reading bar code data into whatever application has the focus. This can cause all sorts of
potential problems as you can imagine. The keyboard output also is limited in that you cannot
modify the data in any way before sending it into the program that is to receive the data. For
example, if you needed to parse a bar code message up into pieces or remove some of a bar code
message or add in a date or time stamp you would not be able to with a normal keyboard wedge
reader.
The other possible output option is to get a bar code reader with an RS232 or "Serial" interface.
With these types of bar code readers, you connect the reader to an available serial port on the
back of your PC. You would then need a program called a "Software Wedge" to take the data
from the bar code reader and feed it to the application where you want the data to go. The
disadvantage to this approach is that it is a little more complex however you gain much more
518
control over how and where your data ends up when you read a bar code. With a Software
Wedge, you can control exactly where the data goes in the target application and you can also
perform all sorts of modifications on the data before it is sent to the application. You can even
cause a macro to run in Excel when you read a bar code so that you can trap in code whenever a
bar code is scanned.
Tal Technologies sells a product called WinWedge which is a Software Wedge for Windows.
Visit:
http://www.taltech.com
for more information. This web site is also an extremely good place to obtain information about
bar coding in general.
519
34. NEAT THINGS TO KNOW
34.1 Using SendKeys In Your Macros
Unlike Lotus 1
-
2
-
3 macros, 99.999% of Excel macros can be written without usingSendKeys.
There are however some situations where you may have to useSendKeys to send keystrokes to
Excel's menus.  For help on creatingSendKey statements, type the wordSendKeys in a module,
highlight it, and press the F1 key.
To insure that your keystrokes are run by Excel, use aDoEvents statement.  It is just the word
DoEvents by itself on a line.  This yields control to Excel so that the keystrokes and their affect
can occur.
For example, the following forces a full re
-
calculation of all cells, and then allows the remaining
code to run.  A full re
-
calculation is equivalent of pressing ALT
-
CTL
-
F9, for which there is no
equivalent Visual Basic statement.
SendKeys "
%^{F9}"
DoEvents
34.2 Hiding The Active Menu And Using Full Screen
The command
Application.CommandBars.ActiveMenuBar.Enabled = False
will hide the active menu.  This command, coupled with setting the screen to full screen and
hiding the full screen toolbar will give you a non
-
Excel look:
Application.DisplayFullScreen = True
Application.CommandBars("Full Screen").Enabled = False
34.3 Hiding Screen Update Activity 
-
Stop Screen
Flashing
If your code changes the active cell, workbook, or worksheet, then the screen will flash or flicker
as it changes location.  It will also flash if you use commands such asPasteSpecial which
automatically change the active cell.  To eliminate this flashing, put the following statement in
your procedures:
Application.ScreenUpdating = False
If you need to display the active sheet to the user, such as when you display an input box for
selection of a cell or range, and you have earlier set the above property toFalse, then you need to
set this property back toTrue to allow the user to select a cell:
520
Application.ScreenUpdating = True
Screen updating is automatically turned back on when your code is done.
34.4 Stopping Alert Messages / Display Alert Warning
Microsoft Excel will frequently display alert boxes to warn you about something you are doing
or to advise you that something you wanted to happen did not happen.  For example, if you issue
theSaveAs command to save a file and the existing file exists, a warning or alert box will appear.
If you issue theFind command and no match is found, then an alert box will also appear.  To
eliminate these alert boxes put the following line in your code:
Application.DisplayAlerts = False
Visual Basic is inconsistent in resetting theApplication.DisplayAlerts property back toTrue.
Sometimes it resets it and sometimes it doesn't.  The best approach is to always set it back to
True Before your code is done.
How do you know if it hasn't been reset?  Usually you find this out when you've modified a file
and then expect Excel to prompt you to save the file when you close Excel and it doesn't.
34.5 Speeding Up Your Procedures And Controlling
Calculation
The easiest way to speed up your code's execution is to turn calculation off.  You can do so with
the following statement:
Application.Calculation = xlManual
To turn calculation back on, use the following statement:
Application.Calculation = xlAutomatic
Please note you must have a workbook open in order to run the above two commands.   You can
check to see if a workbook is open by:
IfNot ActiveWorkbook Is Nothing Then
Application.Calculation = xlManual
End If
Another way to turn off calculation if no workbook is active (this assumes that you are running an
add
-
in) is to do the following:
ThisWorkbook.Activate
Application.Calculation = xlManual
At any point in your code, you can use the following statement to cause Excel to re
-
calculate:
Documents you may be interested
Documents you may be interested