Application Launcher

As I develop my code, I find myself constantly looking for information about a particular API in the MSDN CD-ROMs, the Microsoft web site and sometimes all over the Internet. When I find links relevant to the work at hand, I copy and paste them as comment into my code. Whenever I want to reference this information again, I copy the link into my browser and away it goes. After doing this a few times, I knew there had to be a better way, that is how the LaunchApp macro was born. LauchApp allows you to fire up links from within a comment block to Word, Excel, Access, Power Point, Visio and Html files. The macro can be extended to handle any file type (PDF, Corel Draw, etc) you or your team include in your code documentation. The following code fragment shows a typical use of the macro.


/*CustomRecipient
Creates a custom recipient in MS Exchange Global address list. For more
information on the technique used in this function and other aspects of
DAPI see [mk:@ivt:kb/source/mapi/q165931.htm].
For information on the interface design for this class see [d:\data\xfiles\myproject.doc].
For a quick solution to send email see the code guru site. [http://www.codeguru.com/internet/imapi.shtml]

CustomRecipient(LPSTR strRecipient) { // Your code goes here } */

To access any of the links embeded in your comment, all you need to do is place the cursor anywhere within the [ ] pair and lauch the LaunchApp macro. The macro will bring the proper application with the document or link loaded. Needless to say that you will save time by adding this macro to a tool bar or keyboard pair of keys.


Sub LaunchApp()
'DESCRIPTION: Launch link or document embeded in comment block
	
	'Get the current cursor positon
	cpos = ActiveDocument.Selection.CurrentColumn

	'Select, capture current line and convert tabs to spaces
	ActiveDocument.Selection.SelectLine
	ActiveDocument.Selection.Untabify
	Link = ActiveDocument.Selection.Text

	'Restore tabs
	ActiveDocument.Undo
  

	'Delete return&linefeed at the end of line
	Link = Left(Link,Len(Link)-2)

	' Split selected line at cpos - Check for Rpos at end of line
	Rpos = Len(link)-cpos
	if Rpos <= 0 then
		Rside = ""
	else
		Rside = Right(Link,Len(Link) - cpos)
	end if 
	Lside = Left(Link, cpos)


	' Get text within [ ] pair
	bpos = InstrRev(Rside, "]", -1)
	if bpos > 0 then
		Rside = Left(Rside,  bpos - 1  )
	else
	    Rside = ""	
		Lside = Left(Lside, Len(Lside) - 1) ' ] is included in left side
	end if

	Lside = Right(Lside,Len(Lside) - InstrRev(Lside, "[", -1))
	Link = Lside & Rside

	' Open link - If no application is found default is web browser
	if Link <> "" then

		' Trim tab and spaces from selected text.
		Do While InStr(Link, vbTab) <> 0
			Link = Right(Link, Len(Link) - InStr(Link, vbTab)) 
		Loop 
		Link = Trim(Link)

		' Determine file type by looking at the extension
		ExtPos = InstrRev(Link, ".", -1, 1)

		' An extension must exist in order to process the selected text
		if ExtPos > 0 then
			Ext = LCase(Right(Link,Len(Link)-ExtPos))

			' This is the object to handle the selected application.  See
			' [mk:@ivt:project/project/pssvba/mod3les3.htm] for object information
			' TODO$: Use Shell or Explorer object to handle any registered file format.
			Dim AppObject

			Select Case Ext
				Case "doc", "rtf"		'MS word
					Set AppObject = CreateObject("Word.Basic")
					AppObject.AppShow
					AppObject.FileOpen Link

				Case "xls"				'MS Excel
					Set AppObject = CreateObject("Excel.Application")
					AppObject.Visible = True
					AppObject.Workbooks.Open Link
					
				Case "ppt"				'MS Power Point
					Set AppObject = CreateObject("PowerPoint.Application")
					AppObject.Visible = True
					AppObject.Presentations.Open Link

				Case "mdb"				'MS Access
					Set AppObject = CreateObject("Access.Application")
					AppObject.Visible = True
					AppObject.OpenCurrentDatabase Link
					
				Case "vsd"				'Visio
				    Set AppObject = CreateObject("visio.application")
					AppObject.Documents.Open Link	

				Case Else				' Internet Explorer
					Set AppObject = CreateObject("InternetExplorer.Application.1")
					AppObject.Visible = True
					AppObject.Navigate(Link)
			End Select

		else
			MsgBox("The text you have selected does not have a valid file extension.")			
		end if
	end if
End Sub


Comments

  • Some other macro... under MS Office 2000

    Posted by Legacy on 04/24/2001 12:00am

    Originally posted by: Martin Vrbovsky

    I've needed just searching some strings on the Web from Excel, and used code above. It searches the string in the cell mouse is over. I've edited like this:
    (One bug - it does not remove or change blanks in the string to "+")

    Sub Search()
    '
    ' Search Macro
    ' Macro recorded 25/04/2001, Matko. Searching text from Active cell
    '
    ' Key shortcut: Ctrl+p
    '
    Dim AppObject
    Link= "http://search.internet.com/codeguru.earthweb.com?IC_QueryText="; + ActiveCell.FormulaR1C1
    Set AppObject = CreateObject("InternetExplorer.Application.1")
    AppObject.Visible = True
    AppObject.Navigate (Link)
    End Sub

    Reply
  • Can not CreateObejct

    Posted by Legacy on 05/10/1999 12:00am

    Originally posted by: Michael Boyle

    Microsoft has changed a couple of things in DevStudio between 5 and 6.
    In 6, you can not longer call CreateObject.
    A contact at Microsoft only said "the functionality was removed".

    Now you can rewrite everything into a add-in, which would be a dll with is COM, and can still call CoCreateInstance.

    Have fun.

    Michael Boyle

    Reply
  • Error in CreateObject

    Posted by Legacy on 04/22/1999 12:00am

    Originally posted by: Manoj Vellanoore

    I get an error saying Error in ActiveX control CreateObject.

    Reply
  • Error in CreateObject

    Posted by Legacy on 04/21/1999 12:00am

    Originally posted by: Narasimhan

    This maybe due to vbscript security, try using SP2 it may fix the problem. This was supposed to work properly in VC++ 5.

    Reply
  • This macro don't like me too much

    Posted by Legacy on 03/13/1999 12:00am

    Originally posted by: Anton Bazarsky

    Just like Stefan wrote , it fail on CreateObject.

    Reply
  • Error in CreateObject

    Posted by Legacy on 11/12/1998 12:00am

    Originally posted by: Stefan Gartz

    I can not get this macro working, I get an error saying Cannot CreateObject in this Activex control.

    What am I doing wrong?
    I am using Visual C++ 6.0 proffessional edition.

    Regards
    Stefan Gartz

    Reply
  • Application Launcher

    Posted by Legacy on 11/12/1998 12:00am

    Originally posted by: Rex Myer

    This is real cool. I read on the CreateObject stuff but couldn't
    understand it. This helped immensely. I wonder if you could tell me
    where you picked up the various object calls. For instance for Word you
    call AppShow but for Excel you call Visible = True. How did you find
    this out? Also you have a todo comment in there to open any registered
    extension by the Explorer Shell GUIDs. Have you done this yet?

    Thanks for your contribution!

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The explosion in mobile devices and applications has generated a great deal of interest in APIs. Today's businesses are under increased pressure to make it easy to build apps, supply tools to help developers work more quickly, and deploy operational analytics so they can track users, developers, application performance, and more. Apigee Edge provides comprehensive API delivery tools and both operational and business-level analytics in an integrated platform. It is available as on-premise software or through …

  • As mobile devices have pushed their way into the enterprise, they have brought cloud apps along with them. This app explosion means account passwords are multiplying, which exposes corporate data and leads to help desk calls from frustrated users. This paper will discover how IT can improve user productivity, gain visibility and control over SaaS and mobile apps, and stop password sprawl. Download this white paper to learn: How you can leverage your existing AD to manage app access. Key capabilities to …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds