Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net excel应用程序的问题_Vb.net_Excel - Fatal编程技术网

Vb.net excel应用程序的问题

Vb.net excel应用程序的问题,vb.net,excel,Vb.net,Excel,我想要一个能操作excel的应用程序,我是新手,所以我开始寻找例子。顺便说一下,我正在使用Visual Studio 2013 Imports Microsoft.Office.Core Imports Microsoft.Office.Interop Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Butto

我想要一个能操作excel的应用程序,我是新手,所以我开始寻找例子。顺便说一下,我正在使用Visual Studio 2013

Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles Button1.Click
    Dim oXL As 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
End Class
这是我在microsoft支持站点中找到的示例,因此我只想在深入讨论该主题之前尝试一下,但我发现以下错误:

Error 1 'Visible' is not a member of 'System.Windows.Forms.Application'.
    oXL.Visible = True
Error 2 'Workbooks' is not a member of 'System.Windows.Forms.Application'.
    oWB = oXL.Workbooks.Add
Error 3 'Visible' is not a member of 'System.Windows.Forms.Application'.
    oXL.Visible = True
Error 4 'UserControl' is not a member of 'System.Windows.Forms.Application'.
    oXL.UserControl = True
Error 5 'Quit' is not a member of 'System.Windows.Forms.Application'.
    oXL.Quit()
所有的错误都与oXL有关,所以我不知道是否需要另一个导入或其他什么


我必须说我对excel应用程序一无所知,我即将开始这个话题,我真的很想解决这个问题,谢谢。

为什么要这样初始化oXL对象

试试这个:

Dim oXL As Application  
oXL = new Microsoft.Office.Interop.Excel.ApplicationClass();
添加以下导入,而不是
oXL=CreateObject(“Excel.Application”)

Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel
并从参考库中添加参考:

  • 如果要自动化Microsoft Office Excel 2007,则类型库将在“引用”列表中显示为Microsoft Excel 12.0对象库
  • 如果要自动化Microsoft Office Excel 2003,则类型库将在“引用”列表中显示为Microsoft Excel 11.0对象库

查找与2013年相关的。你不能使用NEW关键字,它是不允许的,这就是它消失的原因。

我认为正确的语法是
Set-oXL=CreateObject(“Excel.Application”)
Set
关键字我注意到了,但当我写“Set”时,它会自动消失,不太清楚为什么你会延迟绑定Excel.Application?