Automating Excel or Word (or any Office product) is not recommended:
Problems using Automation of Office server-side
Developers who try to use Office in a server-side solution need to be aware of five major concerns in which Office behaves differently than anticipated because of the environment. If your code is to run successfully, these concerns need to be addressed and their effects minimized as much as possible. Consider these items carefully when you build your application because no one solution can address all of them, and different designs require you to prioritize the elements differently.
1.
User Identity: Office Applications assume a user identity when they are run, even when they are started by Automation. They attempt to initialize toolbars, menus, options, printers, and some add-ins based on settings in the user registry hive for the user who launches the application. Many services run under accounts that have no user profiles (such as the SYSTEM or IWAM_[servername] accounts), and therefore Office may fail to initialize properly on startup, returning an error on CreateObject or CoCreateInstance. Even if the Office application can be started, without a user profile other functions may fail to work properly. If you plan to Automate Office from a service, you need to configure either your code or Office so that it will run with a loaded user profile.
2.
Interactivity with the Desktop: Office Applications assume that they are being run under an interactive desktop, and may in some circumstances need to be made visible for certain Automation functions to work properly. If an unexpected error occurs, or an unspecified parameter is needed to complete a function, Office is designed to prompt the user with a modal dialog box that asks the user what they want to do. A modal dialog box on a non-interactive desktop cannot be dismissed, which causes that thread to stop responding (hang) indefinitely. Although certain coding practices can help reduce the likelihood of this occurring, they cannot prevent it entirely. This fact alone makes running Office Applications from a server-side environment risky and unsupported.
3.
Reentrancy and Scalability: Server-side components need to be highly reentrant, multi-threaded COM components with minimum overhead and high throughput for multiple clients. Office Applications are in almost all respects the exact opposite. They are non-reentrant, STA-based Automation servers that are designed to provide diverse but resource-intensive functionality for a single client. They offer little scalability as a server-side solution, and have fixed limits to important elements, such as memory, which cannot be changed through configuration. More importantly, they use global resources (such as memory mapped files, global add-ins or templates, and shared Automation servers), which can limit the number of instances that can run concurrently and lead to race conditions if they are configured in a multi-client environment. Developers who plan to run more then one instance of any Office Application at the same time need to consider "pooling" or serializing access to the Office Application to avoid potential deadlocks or data corruption.
4.
Resiliency and Stability: Office 2000, Office XP, and Office 2003 use Microsoft Windows Installer (MSI) technology to make installation and self-repair easier for an end user. MSI introduces the concept of "install on first use", which allows features to be dynamically installed or configured at runtime (for the system, or more often for a particular user). In a server-side environment this both slows down performance and increases the likelihood that a dialog box may appear that asks for the user to approve the install or provide an appropriate install disk. Although it is designed to increase the resiliency of Office as an end-user product, Office's implementation of MSI capabilities is counterproductive in a server-side environment. Furthermore, the stability of Office in general cannot be assured when run server-side because it has not been designed or tested for this type of use. Using Office as a service component on a network server may reduce the stability of that machine, and as a consequence your network as a whole. If you plan to automate Office server-side, attempt to isolate the program to a dedicated computer that cannot affect critical functions, and that can be restarted as needed.
5.
Server-Side Security: Office Applications were never intended for use server-side, and therefore do not take into consideration the security problems that are faced by distributed components. Office does not authenticate incoming requests, and does not protect you from unintentionally running macros, or starting another server that might run macros, from your server-side code. Do not open files that are uploaded to the server from an anonymous Web! Based on the security settings that were last set, the server can run macros under an Administrator or System context with full privileges and compromise your network! In addition, Office uses many client-side components (such as Simple MAPI, WinInet, MSDAIPP) that can cache client authentication information in order to speed up processing. If Office is being automated server-side, one instance may service more than one client, and because authentication information has been cached for that session, it is possible that one client can use the cached credentials of another client, and thereby gain non-granted access permissions by impersonating other users.
(courtesy: http://support.microsoft.com/default.aspx?scid=kb;EN-US;257757)
ASP.Net Tips & Tricks http://aspdud.blogspot.com/
Sunday, October 15, 2006
Tuesday, September 26, 2006
ADO connection string for Excel
If are a diehard ADO user. Here is the connection string for Excel
sXL = "c:\DaniWebExample.xls"
Set Cn = New ADODB.ConnectionCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sXL & ";Extended Properties=Excel 8.0;Persist Security Info=False"Cn.ConnectionTimeout = 40Cn.Open
The rest is the usual ADO recordset retrieving technique
sXL = "c:\DaniWebExample.xls"
Set Cn = New ADODB.ConnectionCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sXL & ";Extended Properties=Excel 8.0;Persist Security Info=False"Cn.ConnectionTimeout = 40Cn.Open
The rest is the usual ADO recordset retrieving technique
Using MS Excel as Database : ADODB
If are a diehard ADO user. Here is the connection string for Excel
sXL = "c:\DaniWebExample.xls"
Set Cn = New ADODB.ConnectionCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & sXL & ";Extended Properties=Excel 8.0;Persist Security Info=False"Cn.ConnectionTimeout = 40
Cn.Open
The rest is the usual ADO recordset retrieving technique
sXL = "c:\DaniWebExample.xls"
Set Cn = New ADODB.ConnectionCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & sXL & ";Extended Properties=Excel 8.0;Persist Security Info=False"Cn.ConnectionTimeout = 40
Cn.Open
The rest is the usual ADO recordset retrieving technique
Saturday, July 08, 2006
VBA - Creating PowerPoint Presentation
Most often we will come across a scenario where powerpoint slides need to be created automatically.
Here is a sample & simple code to do that. This code is created using VBA (Excel 2000)
Sub Create_PowerPoint_Slides()
On Error GoTo Err_PPT
Dim oPA As PowerPoint.Application
Dim oPP As PowerPoint.Presentation
Dim oPS As PowerPoint.Slide
Dim oShape As PowerPoint.Shape
Dim sPath As String
Dim sFile As String
Dim i1 As Integer
sPath = "C:\"
sFile = "MyfileName"
Set oPA = New PowerPoint.Application
oPA.Visible = msoTrue
Set oPP = oPA.Presentations.Add(msoTrue)
For i1 = 1 To 10
oPP.Slides.Add 1, ppLayoutBlank
Next i1
Set oPS = oPP.Slides(1)
Set oShape = oPS.Shapes.AddTextbox(msoTextOrientationHorizontal, 140#, 246#, 400#, 36#)
oShape.TextFrame.WordWrap = msoTrue
oShape.TextFrame.TextRange.Text = "Comments For File : " & sFile
With oShape
.Fill.Visible = msoTrue
.Fill.Solid
.Fill.ForeColor.RGB = RGB(204, 255, 255)
.Line.Weight = 3#
.Line.Visible = msoTrue
.Line.ForeColor.SchemeColor = ppForeground
.Line.BackColor.RGB = RGB(255, 255, 255)
End With
oPP.SaveAs sPath & sFile & ".ppt"
oPP.Close
oPA.Quit
If Not oPS Is Nothing Then Set oPS = Nothing
If Not oPP Is Nothing Then Set oPP = Nothing
If Not oPA Is Nothing Then Set oPA = Nothing
Err_PPT:
If Err <> 0 Then
MsgBox Err.Description
Err.Clear
Resume Next
End If
End Sub
Here is a sample & simple code to do that. This code is created using VBA (Excel 2000)
Sub Create_PowerPoint_Slides()
On Error GoTo Err_PPT
Dim oPA As PowerPoint.Application
Dim oPP As PowerPoint.Presentation
Dim oPS As PowerPoint.Slide
Dim oShape As PowerPoint.Shape
Dim sPath As String
Dim sFile As String
Dim i1 As Integer
sPath = "C:\"
sFile = "MyfileName"
Set oPA = New PowerPoint.Application
oPA.Visible = msoTrue
Set oPP = oPA.Presentations.Add(msoTrue)
For i1 = 1 To 10
oPP.Slides.Add 1, ppLayoutBlank
Next i1
Set oPS = oPP.Slides(1)
Set oShape = oPS.Shapes.AddTextbox(msoTextOrientationHorizontal, 140#, 246#, 400#, 36#)
oShape.TextFrame.WordWrap = msoTrue
oShape.TextFrame.TextRange.Text = "Comments For File : " & sFile
With oShape
.Fill.Visible = msoTrue
.Fill.Solid
.Fill.ForeColor.RGB = RGB(204, 255, 255)
.Line.Weight = 3#
.Line.Visible = msoTrue
.Line.ForeColor.SchemeColor = ppForeground
.Line.BackColor.RGB = RGB(255, 255, 255)
End With
oPP.SaveAs sPath & sFile & ".ppt"
oPP.Close
oPA.Quit
If Not oPS Is Nothing Then Set oPS = Nothing
If Not oPP Is Nothing Then Set oPP = Nothing
If Not oPA Is Nothing Then Set oPA = Nothing
Err_PPT:
If Err <> 0 Then
MsgBox Err.Description
Err.Clear
Resume Next
End If
End Sub
Wednesday, July 05, 2006
Extracting Keywords -- Code
Sub GetKeyWords()
Dim oWA As Word.Application
Dim oWD As Word.Document
Set oWD = Documents("c:\Sample.Doc")
sKeyWords = oWD.BuiltinDocumentProperties("Keywords").Value
If not oWD is nothing then set oWD = nothing
If not oWA is nothing then set oWA = nothing
End Sub
Need Business Long Distance, Voice PRI, and Business VOIP service? Compare free Long Distance Price Quotes from over 30 providers!
Dim oWA As Word.Application
Dim oWD As Word.Document
Set oWD = Documents("c:\Sample.Doc")
sKeyWords = oWD.BuiltinDocumentProperties("Keywords").Value
If not oWD is nothing then set oWD = nothing
If not oWA is nothing then set oWA = nothing
End Sub
Need Business Long Distance, Voice PRI, and Business VOIP service? Compare free Long Distance Price Quotes from over 30 providers!
Saturday, May 27, 2006
SQL Server 2005 - Remote Connection Part I
If you have downloaded the express edition, you may not connect to the server from a remote machine.
In the SQL Server Configuration Manager (SSCM) enable the Remote Connections Option
Under the SQL Native Client Configuration enable TCP/IP protocol (see Figure below)
In the SQL Server Configuration Manager (SSCM) enable the Remote Connections Option
Under the SQL Native Client Configuration enable TCP/IP protocol (see Figure below)

Sunday, May 21, 2006
Welcome to VBA Tips & Tricks
Hi All
Welcome to VBA Tips & Tricks.
All VBA related information will be posted on this blog. Of late, VBA has been disregarded by many software professionals for .Net, c# and other technologies. This blog will also post articles related to them too
Happy reading
Welcome to VBA Tips & Tricks.
All VBA related information will be posted on this blog. Of late, VBA has been disregarded by many software professionals for .Net, c# and other technologies. This blog will also post articles related to them too
Happy reading
Subscribe to:
Posts (Atom)
Download Windows Live Toolbar and personalize your Web experience! Add custom buttons to get the information you care about most.