Aqui está uma abordagem que não usa nenhum VBA. Ele pressupõe que você está usando o Windows Word (não funciona no Mac Word) e
- o número de itens que você deseja no documento é fixo (isto é, não variam aleatoriamente)
- o seu "Banco de Itens" é uma planilha tabelada do Excel, ou seja, todas as linhas contêm as mesmas colunas e a primeira linha contém os nomes das colunas.
- ou os dados do seu modelo precisam vir apenas de um único linha aleatoriamente selecionada, ou se você precisar de dados de várias linhas, Não importa se eles são, por vezes, a mesma linha.
Vamos supor que sua pasta de trabalho do Excel esteja em c: \ xl \ rnd.xlsx e os dados estejam na Planilha1.
Chame a primeira coluna k e coloque o número da linha nela, então você tem
k
1
2
3
...
Ligue para 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 forem necessárias (até 255 no total). Se você tiver colunas com textos de memorando (com mais de 255 caracteres), coloque um texto de memorando na linha 2. Isso deve garantir que o Word obtenha o texto completo de quaisquer campos posteriores de memorando.
No Word, para cada item que você deseja inserir, insira os campos aninhados a seguir, usando o nome da coluna do item de dados que você deseja inserir em vez de "mycolumn"
{ 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 garantir que ambos os pares de {} sejam as chaves de código de campo especiais que você pode inserir usando ctrl-F9 no Windows Word.
Se você quiser mais de um item da mesma linha do Excel, use a mesma linha de índice (ou seja, k = 2). Se você quiser itens de um registro diferente, use um índice diferente (por exemplo, k = 3)).
Salvar seu modelo.
Quando você deseja criar um novo teste (ou qualquer outro),
- Abra o arquivo do Excel e adicione os novos dados necessários e, em seguida, recalcule. Salve o arquivo do Excel, mas não o feche. a folha. Isso deve atualizar os valores RANDBETWEEN
- Faça uma cópia do seu modelo (se for um .docx / m comum ou abra um novo documento baseado nele (se for .dotx / m) e salve-o
- Selecione o corpo do documento (ctrl-A) e pressione F9 para atualizar todos os campos
- Assumindo que você está feliz com os resultados, "corrija-os" selecionando o corpo do documento e pressionando ctrl-shift-F9.
- Salvar o documento
Existem desvantagens para essa abordagem, incluindo
- Como mencionado anteriormente, se você precisar que os dados sejam provenientes de linhas diferentes, isso não garante que eles sejam diferentes, porque r pode ter o mesmo valor para vários valores de k. Eu suponho que se você não tem muito dados, você pode repetir os passos (1) e (3) até ter um resultado satisfatório. Caso contrário, seria necessário pensar em um maneira de evitar a obtenção de linhas duplicadas, e isso provavelmente envolver VBA, caso em que você também pode fazer a coisa toda um maneira diferente.
- Além disso, atualmente, o Word insere uma marca de parágrafo na 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 / hora, mas não para texto. Se você precisar remover essas marcas de parágrafo, precisa de um mecanismo confiável usando Find / Replace, ou (novamente) um pouco de VBA. Os campos
- DATABASE não funcionam em tabelas do Word (e provavelmente outros locais). Se você precisar colocar dados nesses locais, precisará use um campo SET para definir um marcador para um resultado e, em seguida, use um campo REF onde você queria os dados.