Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / June 2005

Tip: Looking for answers? Try searching our database.

Document Creation

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Grant Reid - 30 Jun 2005 08:52 GMT
Hi

Realy hope someone out there can help. I'm busy with a proof of concept at a
client, an investment bank, who has a requirement to automate the monthly
distribution reports from within Word (Word 2003). I have done some VBA work
years back but that was Excel specific, so I'm pretty clueless, hence my cry
for help.

My first objective is to write some code within a document that does the
following when a user clicks a button;

[1] Connect to MS SQL database and query a table called "Fund".
[2] Create a folder, named "Reports_Out" within the current directory if it
does not already exist.
[3] Create and save a copy of the current document within the "Reports_Out"
directory for each Fund with the following naming convention
"<FundName>_<CurrentDate>.doc"

Any help with coding a solution to this would be much appreciated.

Kind Regards - Grant
Jezebel - 30 Jun 2005 09:32 GMT
Other than actually writing it for you, it's hard to see how to answer this.
There's nothing tricky about coding it, and most of the code would be
exactly the same if you were doing it in Excel. If I were quoting it as a
professional job, I'd allow half a day for initial coding, and another two
or three for finding out what the client *really* wanted.

> Hi
>
[quoted text clipped - 22 lines]
>
> Kind Regards - Grant
Grant Reid - 30 Jun 2005 12:27 GMT
Hi

I've cobbled together some code which pretty much satisfies my initial
requirement, but there are some issues which I hope someone can shed some
light on.

[1] I'm able to connect to the database
[2] I'm able to create the folder "Reports_Out" if it does not exist
[3] I'm able to create a copy of the document with the required naming
convention within the "Reports_Out" folder

but........

I want the original document to remain open as the script runs, creating the
new files and then closing them. What is happening now is that as the script
runs, the original document closes. Can someone shed some light on this and
perhaps point out what it is that I'm doing wrong and possibly suggest how I
can accomplish this within my Loop. Any help would be much appreciated. See
script below.

Kind Regards - Grant

Sub CreateReports()
   Dim FSO As FileSystemObject
   Dim NewDir As String
   Dim newName As String

   Dim rs As New ADODB.Recordset
   Dim sConnectString As String
   Dim sSQL As String
   Dim sDSN As String
   Dim sUID As String
   Dim sPWD As String

   Set FSO = CreateObject("Scripting.FileSystemObject")
   NewDir = ActiveDocument.Path & "\Reports_Out"

   sDSN = "GRANTNTSRV - SIM"
   sUID = "sa"
   sPWD = "sybase"
   sConnectString = "Data Source=" & sDSN & ";UID=" & sUID & ";PWD=" & sPWD
& ";"
   sSQL = "SELECT Fund FROM ""Fund"""

   'Check for existance of "Reports_Out" Folder
   'and create if it doesn't exist
   If Not FSO.FolderExists(NewDir) Then
       FSO.CreateFolder NewDir
   End If

   'open a recordset
   rs.Open sSQL, sConnectString

   Do While Not rs.EOF
       With ActiveDocument
           'Save current document
           .Save
           newName = rs.Fields("Fund")
           newName = newName & " " & Format(Now, "ddd, dd mmm yyyy") &
".doc"
           .SaveAs FileName:=NewDir & "\" & newName
           '.Close
       End With
       'access next record
       rs.MoveNext
   Loop

End Sub

> Hi
>
[quoted text clipped - 17 lines]
>
> Kind Regards - Grant
Jezebel - 01 Jul 2005 00:09 GMT
The issue is this: you start with an open document, then save it repeatedly
under new names. It's not that the original document closes, just that on
exit you're left with the last name you saved it under. Simplest fix would
be to re-open the original at the end of the routine.

Separately, you're saving each document twice, which is obviously
unnecessary. And your code will throw an error if the recordset is empty,
but maybe that never happens.

> Hi
>
[quoted text clipped - 98 lines]
>>
>> Kind Regards - Grant
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.