Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 Net Excel插件,如何按名称将数据写入特定工作表?_Vb.net_Excel_Vba - Fatal编程技术网

Vb.net Net Excel插件,如何按名称将数据写入特定工作表?

Vb.net Net Excel插件,如何按名称将数据写入特定工作表?,vb.net,excel,vba,Vb.net,Excel,Vba,这就是我的问题。我正在将旧的Excel宏转换为Excel加载项,以便与同事更轻松地共享。我是VB.net新手,但我正在尽我所能,所以请对我放松 我有一个Windows窗体,允许用户输入数据,当他们点击“输入数据”按钮时,数据应该从窗体转到特定的工作表。代码如下: Imports Excel = Microsoft.Office.Interop.Excel Public Class Form_CutListEntry Dim xApp As New Excel.Application

这就是我的问题。我正在将旧的Excel宏转换为Excel加载项,以便与同事更轻松地共享。我是VB.net新手,但我正在尽我所能,所以请对我放松

我有一个Windows窗体,允许用户输入数据,当他们点击“输入数据”按钮时,数据应该从窗体转到特定的工作表。代码如下:

Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form_CutListEntry

    Dim xApp As New Excel.Application
    Dim wss As Microsoft.Office.Tools.Excel.Worksheet


    Private Sub Btn_InsertJobInfo_Click(sender As Object, e As EventArgs) Handles Btn_InsertJobInfo.Click
        wss = xApp.Worksheets("Job Info")

        'Check that all data is entered
        If Trim(TxtBx_CustomerName.Text) = "" Then
            TxtBx_CustomerName.Focus()
            MsgBox("Please enter a Customer Name")
            Exit Sub
        End If

        If Trim(TxtBx_OrderNum.Text) = "" Then
            TxtBx_OrderNum.Focus()
            MsgBox("Please enter an Order Number")
            Exit Sub
        End If

        If Trim(TxtBx_CutlistAuthor.Text) = "" Then
            TxtBx_CutlistAuthor.Focus()
            MsgBox("Please enter your initials")
            Exit Sub
        End If

       'Write data to excel worksheet. 
        wss.Cells(3, 1) = "Customer Name: " + TxtBx_CustomerName.Text
        wss.Cells(4, 1) = "Order Number: " + TxtBx_OrderNum.Text
        wss.Cells(5, 1) = "Todays Date: " + TxtBx_TodaysDate.Text
        wss.Cells(6, 1) = "Cutting List Prepared By: " + TxtBx_CutlistAuthor.Text

        Exit Sub
    End Sub
(注意,我删除了注释和一些不相关的额外部分,因此下面的详细错误消息具有错误的行号)

我可以从excel很好地打开windows窗体,但当我输入一些数据并单击“输入数据”时,会发生以下情况:

An exception of type 'System.Runtime.InteropServices.COMException' occurred in Toms CutList Maker.dll but was not handled in user code
Additional information: Exception from HRESULT: 0x800A03EC
在这一行:

wss = xApp.Worksheets("Job Info")
有没有人能用这个给我指点写作方向

如果有人感兴趣,以下是完整的错误详细信息:

 System.Runtime.InteropServices.COMException was unhandled by user code
  ErrorCode=-2146827284
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=Microsoft.Office.Interop.Excel
  StackTrace:
       at Microsoft.Office.Interop.Excel.ApplicationClass.get_Worksheets()
       at Toms_CutList_Maker.Form_CutListEntry.Btn_InsertJobInfo_Click(Object sender, EventArgs e) in d:\tom\documents\visual studio 2013\Projects\Toms CutList Maker\Toms CutList Maker\CutList Entry.vb:line 15
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  InnerException: 

不能直接从Excel应用程序中引用工作表。工作表集合是工作簿对象的一部分。工作簿集合是应用程序对象的一部分

请尝试以下方法:

Dim xApp As New Excel.Application 
Dim wss As Microsoft.Office.Tools.Excel.Worksheet
Dim wb As Microsoft.Office.Tools.Excel.Workbook

....

wb = xApp.Workbooks("My Workbook.xlsx") 'replace with your workbook name and proper file extension
wss = wb.Worksheets("Job Info")

您直接从Excel中得到一个错误。 我做了同样的事情,这就是我得到的:

Dim xlWorkBook As Excel.Workbook = xlapp.Workbooks.Add(Application.StartupPath + "\My Workbook.xlsx")
xlWorkBook.Sheets.Add("Job Info")
Dim xlWorkSheet As Excel.Worksheet = xlWorkBook.Sheets("JobInfo")

确保您试图打开的工作簿存在。

工作表对象不是
Excel应用程序对象
的成员,而是
工作簿对象
的成员,后者是
Excel应用程序对象
的成员。因此,首先设置
工作簿
,然后设置
工作表
。好吧,我试过了,我就是这样写的:“wb=xApp.Workbooks(“CUTLISTMAKER”)wss=wb.Worksheets(“Job Info”)。无论出于什么原因,我都会得到类似的错误,但它表示索引无效。我还尝试使用wb=xApp.ActiveWorkbook,这也给了我一个错误。请尝试使用“CUTLISTMAKER.xlsx”或任何适用于您的文件的文件扩展名。获取相同的错误仍然很遗憾,错误不在作业信息行,而在新的wb=xApp.Workbooks行。老实说,如果我能改变工作簿的名称,我宁愿让它与ActiveWorkbook一起工作。如果我将其更改为:wb=xApp.ActiveWorkbook,那么在wss=wb.Worksheets(“作业信息”)行上会出现“System.NullReferenceException”错误,
wb=ThisApplication.Workbooks(“CUTLISTMAKER.xlsx”)
告诉我没有声明“ThisApplication”,我可以继续声明,但我们会回到原点,对吗?还是有其他的方式来申报?