Aqui está uma abordagem que não usa nenhum VBA. Ele pressupõe que você esteja usando o Windows Word (não funcionará no Mac Word) e
- o número de itens que você deseja no seu documento é fixo (ou seja, não varia aleatoriamente)
- seu "Banco de itens" é uma planilha tabular do Excel, ou seja, todas as linhas contêm as mesmas colunas e a primeira linha contém nomes de colunas.
- os dados do seu modelo precisam vir apenas de uma única linha selecionada aleatoriamente ou, se você precisar de dados de várias linhas, não importa se às vezes são a mesma linha.
Vamos supor que sua pasta de trabalho do Excel esteja em c: \ xl \ rnd.xlsx e os dados estejam na Planilha1.
Ligue para a primeira coluna k e insira o número da linha, para que você tenha
k
1
2
3
...
Chame a segunda coluna r. Na célula B2, coloque a seguinte fórmula
=COUNT(A:A)
Nas células B3, B4, etc., coloque a seguinte fórmula
=RANDBETWEEN(2,$B$2)
Não use a linha 2 (onde k = 1) para seus dados.
Crie e preencha quantas colunas adicionais você precisar (até 255 no total). Se você tiver colunas com textos de memorando (com mais de 255 caracteres), insira um texto de memorando na linha 2. Isso deve garantir que o Word obtenha o texto completo dos campos de memorando posteriores.
No Word, para cada item que você deseja inserir, insira os seguintes campos aninhados, usando o nome da coluna do item de dados que você deseja inserir em vez de "minha coluna"
{ DATABASE \d "c:\\xl\\rnd.xlsx" \s "SELECT mycolumn FROM [Sheet1$] WHERE k = { DATABASE \d "c:\\xl\\rnd.xlsx" \s "SELECT r FROM [Sheet1$] WHERE k = 2" }" }
(certifique-se de dobrar as barras invertidas no nome do caminho e verifique se os dois pares de {} são os colchetes especiais de código de campo que você pode inserir usando ctrl-F9 no Windows Word.
Se você deseja mais de um item da mesma linha do Excel, use a mesma linha de índice (ou seja, k = 2). Se você deseja itens de um registro diferente, use um índice diferente (por exemplo, k = 3)).
Salve seu modelo.
Quando você deseja criar um novo teste (ou o que for),
- Abra o arquivo do Excel, adicione novos dados necessários e recalcule. Salve o arquivo do Excel, mas não o feche. a folha. Isso deve atualizar os valores de RANDBETWEEN
- Faça uma cópia do seu modelo (se for um .docx / m comum, ou abra um novo documento com base nele (se for .dotx / m) e salve-o
- Selecione o corpo do documento (ctrl-A) e pressione F9 para atualizar todos os campos
- Supondo que você esteja satisfeito com os resultados, "corrija" eles selecionando o corpo do documento e pressionando ctrl-shift-F9.
- Salve o documento
Existem desvantagens nessa abordagem, incluindo
- Como mencionado anteriormente, se você precisar que os dados venham de linhas diferentes, isso não garantirá que sejam diferentes, porque r pode ter o mesmo valor para vários valores de k. Suponho que se você não tiver muitos dados, poderá repetir as etapas (1) e (3) até obter um resultado satisfatório. Caso contrário, seria necessário pensar em uma maneira de evitar a obtenção de linhas duplicadas, o que provavelmente envolveria o VBA; nesse caso, você também pode fazer a coisa toda de uma maneira diferente.
- Além disso, atualmente, o Word insere sem ajuda uma marca de parágrafo no início de cada resultado do campo DATABASE. Isso pode ser removido para resultados numéricos e de data usando uma opção de formatação numérica / data e hora, mas não para texto. Se você precisar remover essas marcas de parágrafo, precisará de um mecanismo confiável usando Localizar / Substituir ou (novamente) um pouco de VBA.
- Os campos DATABASE não funcionam em tabelas do Word (e provavelmente em outros locais). Se você precisar colocar dados nesses locais, seria necessário usar um campo SET para definir um marcador como resultado e, em seguida, use um campo REF no qual você deseja os dados.