Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
A automatização é um processo que permite que aplicações estão escritas em linguagens como Visual Basic controlem programaticamente outras aplicações. Automatização para o Excel permite-lhe efectuar acções tais como criar um novo livro, adicionar dados ao livro ou criar gráficos. Com o Excel e outras aplicações do Microsoft Office, praticamente todas as acções que pode executar manualmente através da interface do utilizador também podem ser executadas programaticamente utilizando a automatização.
Excel expõe esta funcionalidade programática através de um modelo de objecto. O modelo de objecto é um conjunto de classes e métodos que servem como correspondentes aos componentes lógicos do Excel. Por exemplo, existe um objecto de aplicação , um objecto de livro e um objecto de folha de cálculo , cada um dos quais contêm a funcionalidade desses componentes do Excel. Para aceder ao modelo de objecto a partir do Visual Basic. NET, pode definir uma referência de projecto à biblioteca de tipos.
Este artigo demonstra como definir a referência de projecto adequada a biblioteca de tipos de Excel para o Visual Basic .NET e fornece código de exemplo para automatizar o Excel.
Criar um cliente de automatização do Microsoft Excel
Inicie o Microsoft Visual Studio NET..
No menu ficheiro , clique em Novo e, em seguida, clique em projecto . Seleccione Aplicação do Windows dos tipos de projecto do Visual Basic. É criado o Form1 por predefinição.
Adicione uma referência objecto do Microsoft Excel biblioteca . Para o fazer, siga estes passos:
No menu projecto , clique em Adicionar referência .
No separador COM , localizar a Biblioteca de objectos do Microsoft Excel e, em seguida, clique em Seleccionar .
Nota O Microsoft Office 2003 inclui Primary Interop Assemblies (PIAs). Microsoft Office XP não inclui PIAs, mas pode ser transferidos. Para obter mais informações sobre PIAs do Office XP, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
328912
(http://support.microsoft.com/kb/328912/
)
Microsoft Office XP principais interop assemblies (PIAs) estão disponíveis para transferência
Clique em OK no Adicionar referências caixa de diálogo para aceitar as selecções.
No menu Ver , seleccione a caixa de ferramentas para visualizar a caixa de ferramentas e, em seguida, adicione um botão ao Form1.
Faça duplo clique em Button1 . Aparece a janela código para o formulário.
Na janela de código, localize o seguinte código:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
substituir o código anterior com o seguinte código:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
' Start Excel and get Application object.
oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
oWB = oXL.Workbooks.Add
oSheet = oWB.ActiveSheet
' Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "First Name"
oSheet.Cells(1, 2).Value = "Last Name"
oSheet.Cells(1, 3).Value = "Full Name"
oSheet.Cells(1, 4).Value = "Salary"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
' Create an array to set multiple values at once.
Dim saNames(5, 2) As String
saNames(0, 0) = "John"
saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
' Fill A2:B6 with an array of values (First and Last Names).
oSheet.Range("A2", "B6").Value = saNames
' Fill C2:C6 with a relative formula (=A2 & " " & B2).
oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
oRng = oSheet.Range("A1", "D1")
oRng.EntireColumn.AutoFit()
' Manipulate a variable number of columns for Quarterly Sales Data.
Call DisplayQuarterlySales(oSheet)
' Make sure Excel is visible and give the user control
' of Excel's lifetime.
oXL.Visible = True
oXL.UserControl = True
' Make sure that you release object references.
oRng = Nothing
oSheet = Nothing
oWB = Nothing
oXL.Quit()
oXL = Nothing
Exit Sub
Err_Handler:
MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
End Sub
Private Sub DisplayQuarterlySales(ByVal oWS As Excel.Worksheet)
Dim oResizeRange As Excel.Range
Dim oChart As Excel.Chart
Dim oSeries As Excel.Series
Dim iNumQtrs As Integer
Dim sMsg As String
Dim iRet As Integer
' Determine how many quarters to display data for.
For iNumQtrs = 4 To 2 Step -1
sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"
iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _
Or vbMsgBoxSetForeground, "Quarterly Sales")
If iRet = vbYes Then Exit For
Next iNumQtrs
' Starting at E1, fill headers for the number of columns selected.
oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""
' Change the Orientation and WrapText properties for the headers.
oResizeRange.Orientation = 38
oResizeRange.WrapText = True
' Fill the interior color of the headers.
oResizeRange.Interior.ColorIndex = 36
' Fill the columns with a formula and apply a number format.
oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=RAND()*100"
oResizeRange.NumberFormat = "$0.00"
' Apply borders to the Sales data and headers.
oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin
' Add a Totals formula for the sales data and apply a border.
oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=SUM(E2:E6)"
With oResizeRange.Borders(Excel.XlBordersIndex.xlEdgeBottom)
.LineStyle = Excel.XlLineStyle.xlDouble
.Weight = Excel.XlBorderWeight.xlThick
End With
' Add a Chart for the selected data.
oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
oChart = oWS.Parent.Charts.Add
With oChart
.ChartWizard(oResizeRange, Excel.XlChartType.xl3DColumn, , Excel.XlRowCol.xlColumns)
oSeries = .SeriesCollection(1)
oSeries.XValues = oWS.Range("A2", "A6")
For iRet = 1 To iNumQtrs
.SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
Next iRet
.Location(Excel.XlChartLocation.xlLocationAsObject, oWS.Name)
End With
' Move the chart so as not to cover your data.
With oWS.Shapes.Item("Chart 1")
.Top = oWS.Rows(10).Top
.Left = oWS.Columns(2).Left
End With
' Free any references.
oChart = Nothing
oResizeRange = Nothing
End Sub
Adicione o seguinte código para a parte superior do Form1.VB:
Imports Microsoft.Office.Core
Testar o cliente de automatização
Prima F5 para criar e executar o programa.
No formulário, clique em Button1 . O programa inicia o Excel e preenche dados numa nova folha de cálculo.
Quando for pedido para introduzir dados de vendas trimestrais, clique em Sim . Um gráfico ligado aos dados trimestrais é adicionado à folha de cálculo.
Para obter mais informações sobre o Excel e do Visual Basic, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
219151
(http://support.microsoft.com/kb/219151/
)
Como automatizar o Microsoft Excel a partir do Visual Basic
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 301982
(http://support.microsoft.com/kb/301982/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.