Another problem is that I can't operate with bookmarks that are
located in the header/footer.
Any help appreciated.
Nicolae
void __fastcall TForm1::btnFillBookmarksClick(TObject *Sender)
{
Variant vWApp;
Variant vWDocument;
Variant vBookmarks;
Variant vBookmark;
Variant vSelect;
Variant vOptions;
AnsiString sTemplatePath = "C:\\ProjectsBC\\WordOLEBookmarks";
if (vWApp.IsEmpty())
{
try {
vWApp=Variant::CreateObject("Word.Application");
}
catch(...)
{
ShowMessage("Could not find MS Word installed on this
computer");
return;
}
}
else
{
vWApp=GetActiveOleObject("Word.Application");
}
if (vWApp.IsEmpty())
{
ShowMessage("Unable to find Word application.");
return;
}
vWApp = CreateOleObject("Word.Application");
vWApp.OlePropertySet("Visible", (Variant) true);
vWApp.OleFunction("ChangeFileOpenDirectory", (Variant)
sTemplatePath);
vWDocument = vWApp.OlePropertyGet("Documents");
vWDocument.OleProcedure("Open", (Variant) "bookmarks.doc");
vWDocument = vWApp.OlePropertyGet("ActiveDocument");
vSelect = vWApp.OlePropertyGet("Selection");
vBookmarks = vWDocument.OlePropertyGet("Bookmarks");
int nCount = vBookmarks.OlePropertyGet("Count"); // doesn't matter
if it is uppercase or lowercase
AnsiString sBookName;
vBookmarks = vWDocument.OlePropertyGet("BookMarks");
nCount = vBookmarks.OlePropertyGet("Count");
AnsiString sBookValue;
int i;
for (i=1; i <= nCount; i++) {
vBookmark = vBookmarks.OleFunction("Item", (Variant)i);
sBookName = vBookmark.OlePropertyGet("Name");
// Memo1->Lines->Add(sBookName);
vBookmark = vBookmarks.Exec(Function("Item") << sBookName);
vBookmark.OleProcedure("Select");
sBookValue = "bookmark value " + IntToStr(i);
vSelect.Exec(Procedure("TypeText") << sBookValue);
}
// vWDocument.OleProcedure("SaveAs", (Variant) "C:\\AProjectsBC3\
\SML\\SML01_N_80012345.doc" );
// vWDocument.OleProcedure("Quit");
// vWApp.Exec(Procedure("Quit"));
vWDocument.OleProcedure("Close"); // closes the saved Word document
vWApp.OleProcedure( "Quit" ); // closes Word Application
vWApp = vWDocument = vBookmark = vBookmarks = vSelect = vOptions =
Unassigned;
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
Regards,
Nicolae