Como você coloca um objeto de caixa de texto sobre uma célula específica ao automatizar o Excel?
-
09-06-2019 - |
Pergunta
Estamos automatizando o Excel usando VB.Net e tentando colocar várias linhas de texto em uma planilha do Excel que podemos configurar para não imprimir.Entre estes teríamos relatórios imprimíveis.Podemos fazer isso se adicionarmos objetos de caixa de texto e definirmos a configuração do objeto de impressão como falso.(Se você tiver outra maneira, por favor me indique)
O código para adicionar uma caixa de texto é:
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 145.5, 227.25, 304.5, 21#)
mas o posicionamento está em pontos.Precisamos de uma maneira de colocá-lo sobre uma célula específica e dimensioná-lo com a célula.Como podemos descobrir onde colocá-lo quando sabemos apenas em qual célula colocá-lo?
Solução
Se você tiver o nome ou posição da célula, poderá fazer:
With ActiveSheet
.Shapes.AddTextbox msoTextOrientationHorizontal, .Cells(3,2).Left, .Cells(3,2).Top, .Cells(3,2).Width, .Cells(3,2).Height
End With
Isso adicionará uma caixa de texto na célula B3.Quando B3 é redimensionado, a caixa de texto também é.
Outras dicas
Quando você copia e cola uma caixa de texto, o Excel colocará a nova caixa de texto sobre a célula selecionada no momento.Portanto, você pode conseguir isso facilmente usando os comandos copiar e colar do VBA.Isso pode ser particularmente útil se você for usar muitas caixas de texto muito semelhantes, já que está efetivamente criando um modelo de caixa de texto.