Link to home
Start Free TrialLog in
Avatar of rene_carballo
rene_carballo

asked on

ADO command to create empty WORD document

The OPEN Method blows up unless "c:\temp\naics_manual.doc' already exists.   What do I add to create the file?

Private Sub WriteToWORD()

Dim wrdApp As Word.Application
       
Set wrdApp = CreateObject("word.Application")
'  what goes here??
wrdApp.Documents.Open "c:\temp\naics_manual.doc"
wrdApp.ActiveDocument.Select
wrdApp.Visible = True
wrdApp.ActiveDocument.SaveAs "c:\temp\naics_manual.doc"
Set wrdApp = Nothing

End Sub
ASKER CERTIFIED SOLUTION
Avatar of Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3]
Flag of Luxembourg image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Also, I would suggest that you use early binding instead of late binding, if possible.
Avatar of rene_carballo
rene_carballo

ASKER

Thanks all.

angleIII's remedy works except:

      1.   d.saveas  "c:\temp\naics_manual.doc"          ...has syntax error, and
      2.  my formatting was dissabled.

How do I associate the formatting with "d" instead of "wrdApp"?

Thanks, Rene'


Here's the whole Subroutine.

-----------------------------------------------------------------------
Private Sub WriteToWORD()

Dim rs_source_qry As ADODB.Recordset
Dim wrdApp As Word.Application
Dim d As Word.Documents
'Dim strCopyFile As String
Dim str_sql As String
Dim str_NAICS_Code_out As String
'Dim int_pad As Integer
Dim rng As Range
'Dim strFileSpec As String

str_sql = "SELECT * FROM qry_2007_union_tbl_all_15th"
Set rs_source_qry = New ADODB.Recordset
rs_source_qry.Open str_sql, CurrentProject.Connection
       

Set wrdApp = CreateObject("word.Application")

On Error Resume Next
Set d = wrdApp.Documents.Open("c:\temp\naics_manual.doc")
If d Is Nothing Then
   Set d = wrdApp.Documents.Add
'   d.SaveAs "c:\temp\naics_manual.doc"
End If
Set rng = ActiveDocument.Range
wrdApp.ActiveDocument.Select
'wrdApp.ActiveDocument.PageSetup.LeftMargin = 0
'With ActiveDocument.PageSetup
'    .LeftMargin = 1
'End With
rng.PageSetup.LeftMargin = 20
rng.PageSetup.TopMargin = 20
rng.PageSetup.BottomMargin = 20
rng.Font.Name = "Times New Roman"
rng.Font.Bold = False
rng.Font.Size = 9


Do While Not rs_source_qry.EOF

    str_NAICS_Code_out = rs_source_qry!NAICS_Code & String(2 * (6 - Len(rs_source_qry!NAICS_Code)), " ")
    'str_NAICS_Code_out = rs_source_qry!NAICS_Code & String(int_pad, " ")
    wrdApp.Selection.typetext str_NAICS_Code_out
    wrdApp.Selection.typetext "  "
    wrdApp.Selection.typetext rs_source_qry!Title
    wrdApp.Selection.typetext " "
    wrdApp.Selection.Font.Superscript = True
    'wrdApp.Selection.Font.Bold = True
    wrdApp.Selection.typetext Nz(rs_source_qry!Country)
    'wrdApp.Selection.Font.Bold = False
    wrdApp.Selection.Font.Superscript = False

    wrdApp.Selection.typeparagraph
    rs_source_qry.MoveNext
Loop
wrdApp.Visible = True
wrdApp.ActiveDocument.SaveAs "c:\temp\naics_manual.doc"

rs_source_qry.Close
'wrdApp.Documents.Close "c:\temp\naics_manual.doc"
Set rs_source_qry = Nothing
Set wrdApp = Nothing

'strFileSpec = ActiveDocument.FullName
'ActiveDocument.Close
'Kill strFileSpec

End Sub
>Dim d As Word.Documents
should be
Dim d As Word.Document

it's a single document, not the documents collection...
and from that point on, you should use the d object instead of ActiveDocument or wrdApp.ActiveDocument, it's safer and faster

also, wrdApp.Selection should be replaced by d.Selection
OK.  Thanks angelIII.  I'm almost done.  But why is my superscript font now dissabled?

_____________
Private Sub WriteToWORD()

Dim rs_source_qry As ADODB.Recordset
Dim wrdApp As Word.Application
Dim d As Word.Document
'Dim strCopyFile As String
Dim str_sql As String
Dim str_NAICS_Code_out As String
'Dim int_pad As Integer
Dim rng As Range
'Dim strFileSpec As String

str_sql = "SELECT * FROM qry_2007_union_tbl_all_15th"
Set rs_source_qry = New ADODB.Recordset
rs_source_qry.Open str_sql, CurrentProject.Connection
       

Set wrdApp = CreateObject("word.Application")

On Error Resume Next
Set d = wrdApp.Documents.Open("c:\temp\naics_manual.doc")
If d Is Nothing Then
   Set d = wrdApp.Documents.Add
   d.SaveAs "c:\temp\naics_manual.doc"
End If
Set rng = d.Range
d.Select
'wrdApp.ActiveDocument.PageSetup.LeftMargin = 0
'With ActiveDocument.PageSetup
'    .LeftMargin = 1
'End With
rng.PageSetup.LeftMargin = 20
rng.PageSetup.TopMargin = 20
rng.PageSetup.BottomMargin = 20
rng.Font.Name = "Times New Roman"
rng.Font.Bold = False
rng.Font.Size = 9


Do While Not rs_source_qry.EOF

    str_NAICS_Code_out = rs_source_qry!NAICS_Code & String(2 * (6 - Len(rs_source_qry!NAICS_Code)), " ")
    'str_NAICS_Code_out = rs_source_qry!NAICS_Code & String(int_pad, " ")
    d.Selection.typetext str_NAICS_Code_out
    d.Selection.typetext "  "
    d.Selection.typetext rs_source_qry!Title
    d.Selection.typetext " "
    d.Selection.Font.Superscript = True
    'd.selection.Font.Bold = True
    d.Selection.typetext Nz(rs_source_qry!Country)
    'd.selection.Font.Bold = False
    d.Selection.Font.Superscript = False

    d.Selection.typeparagraph
    rs_source_qry.MoveNext
Loop
wrdApp.Visible = True
d.SaveAs "c:\temp\naics_manual.doc"

rs_source_qry.Close
'wrdApp.Documents.Close "c:\temp\naics_manual.doc"
Set rs_source_qry = Nothing
Set wrdApp = Nothing

'strFileSpec = ActiveDocument.FullName
'ActiveDocument.Close
'Kill strFileSpec

End Sub
I find this whole binding thing confusing.  angelIII's solution appears to work.  I appear to have corrupted soemething on implementation, to dissable my font specifications.  I'll try to figure this part out on my own.  

Thanks all.
Only my superscript font specification is dissabled.