use strict; use warnings; use DBI; use Win32::OLE; # check if Word exists and is running my $word = Win32::OLE->GetActiveObject('Word.Application'); die "Word not Installed" if $@; # start Word program instance if required or die if unable to unless (defined $word) { $word = Win32::OLE->new('Word.Application', sub { $_[0]->Quit; } ) or die 'Cannot start Word'; } # hide/show the document $word->{Visible} = 0; # Create new document my $d = $word->Documents->Add; # define selection my $s = $word->Selection; #set lines to be written to document ######################### retrive data from MS Access ################## my $db_file = 'D:\test\Test2000Format.mdb'; my $dbh = DBI->connect( 'dbi:ADO:Provider=Microsoft.Jet.OLEDB.4.0;Data Source='.$db_file, ) or die $DBI::errstr; my $sqlstatement="SELECT Library FROM Manuscripts"; #working perfectly, Library column has normal text #$sqlstatement="SELECT MSContents FROM Manuscripts"; #MScontents column has OLE word object my $sth = $dbh->prepare($sqlstatement); $sth->execute || die "Could not execute SQL statement ... maybe invalid?"; #output database results while (my @row = $sth->fetchrow_array) { print @row,"\n"; my $text = "@row"; #just for testing $s->TypeText($text); #write in another new doc } # save our object $word->WordBasic->FileSaveAs("D:\\test\\new.doc"); #new word document