← ClaudeAtlas

advpl-wordlisted

Use ao gerar/preencher/imprimir documentos do MS Word (carta, contrato, mala direta, .doc/.docx/.rtf/PDF) em ADVPL/TLPP Protheus. A API real de Word é a família de funções OLE_* (OLE_CreateLink/OLE_NewFile/OLE_SetDocumentVar/OLE_UpdateFields/OLE_SaveAsFile/OLE_PrintFile/OLE_CloseFile/OLE_CloseLink) com template .dot/.dotx + DocVariable — mas é CLIENT-SIDE (Word instalado; NÃO roda em REST/JOB/servidor/SmartClient HTML). Para servidor/headless o caminho portável é RTF montado à mão + MemoWrite. NÃO existe MsWord()/FWMSWord/FWGeraWord/FWLerWord/CreateObject("Word.Application") nativo de framework nem writer/reader .docx nativo. Lista funções alucinadas comuns.
JoniPraia/plugadvpl · ★ 13 · Data & Documents · score 69
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];