ActiveXComponent app = null; Dispatch doc = null; try { ComThread.InitSTA(); app = new ActiveXComponent("Word.Application"); app.setProperty("Visible", new Variant(false)); Dispatch docs = app.getProperty("Documents").toDispatch(); doc = Dispatch.invoke( docs, "Open", Dispatch.Method, new Object[] {this.templateFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch(); Dispatch bookmarks = Dispatch.get(doc, "Bookmarks").toDispatch(); System.out.println("bookmarks counts = " + Dispatch.get(bookmarks, "Count").getInt()); for (int i = 1; i <= Dispatch.get(bookmarks, "Count").getInt(); i++) { Dispatch item = Dispatch.call(bookmarks, "Item", i).toDispatch(); Dispatch range = Dispatch.get(item, "Range").toDispatch(); System.out.println(Dispatch.get(range, "Text").getString()); } } catch (Exception e) { throw e; } finally { if (doc != null) { Dispatch.call(doc, "Close", new Variant(true)); } if (app != null) { Dispatch.call(app, "Quit"); } ComThread.Release(); }