advpl-wordlisted
Install: claude install-skill JoniPraia/plugadvpl
# advpl-word — MS Word (.doc/.docx/.rtf) no Protheus
> ⛔ **A API oficial de Word é a família de funções `OLE_*`** (automação OLE do Word) + template `.dot/.dotx` com `DocVariable`. **NÃO existe classe `MsWord()`, nem `FWMSWord`, nem writer binário `.docx` nativo, nem reader de Word nativo.** E o `OLE_*` é **client-side** (Word instalado na estação SmartClient) — **não roda em REST/JOB/servidor nem SmartClient HTML**. Para gerar documento server-side, o caminho portável é **RTF + `MemoWrite`** (o Word abre `.rtf`).
## ⚠️ Funções que NÃO existem (rejeite — são alucinação)
| Nome falso | Realidade |
|---|---|
| `MsWord()` / `MsWord():New()` | ❌ não existe classe Word (o paralelo `MsExcel` não tem irmão Word) — use a família `OLE_*` |
| `FWMSWord` / `FWMsWordXlsx` / `FWMsWordEx` | ❌ não existe framework de geração de Word (≠ `FWMsExcelXlsx`) |
| `FWGeraWord` / `GeraDocx` / `FWDocx` / `WordToPDF` | ❌ inventados |
| `FWLerWord` / `LeWord` / `MsRetDoc` / `WordToArray` | ❌ não há leitura nativa de `.doc`/`.docx` |
| `CreateObject("Word.Application")` | ❌ COM cru não é o padrão ADVPL — o framework expõe via `OLE_CreateLink`/`OLE_*` |
| `oWord:nHandle` / `oWord:_NewFile()` / `oWord:_End()` | ❌ membros de uma classe MsWord inexistente |
> Regra de ouro: antes de usar qualquer `*Word*`/`*Docx*`, confirme no índice (`/plugadvpl:find function <nome>`). A API real começa com `OLE_`.
## Decisão: onde o documento é gerado?
```dot
digraph word {
"Gerar documento Word" [shape=diamond];