试图将数组写入单元格范围

时间:2013-05-12 02:59:31

标签: arrays excel vba range ribbon

这是我正在做的要点。我有一个功能区按钮需要将一个简单的2列CSV文件逐行读入一维数组,然后我需要将数组写入excel的前两列。

我已成功读入数组(下面的msgbox行确认),但我不能为我的生活得到任何东西写入工作表。

Imports Microsoft.Office.Tools.Ribbon
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Tools.Excel
Imports System.Text
Imports Microsoft.Office.Core
Imports Microsoft.VisualBasic.FileIO

Public Class MyRibbon

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click

        Dim filename As String = "C:\DATA_csvtest.TXT"
        Dim fields As String()
        Dim delimiter As String = ","
        Using parser As New TextFieldParser(filename)
            parser.SetDelimiters(delimiter)
            While Not parser.EndOfData
                ' Read in the fields for the current line
                fields = parser.ReadFields()
                ' Add code here to use data in fields variable.

                MsgBox(fields(0) + " " + fields(1)) 'verifies above code is working

                Range("A1:B1").Value2 = fields

            End While
        End Using

    End Sub



    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button2.Click

        Worksheet("Sheet1").Range("A1").Value = 3.14159

    End Sub



    Private Sub MyRibbon_Load(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs) Handles MyBase.Load

    End Sub

End Class

Button1_Click子句中,我在Range("A1:B1").Value2 = fields上收到错误“范围是一种类型,不能用作表达式”。

Button2_Click sub中,我只想看看是否可以为单个单元格写入静态值。我在不同的SO或MSDN帖子上找到了确切的代码行......我现在不记得了。无论哪种方式,我都会得到“'工作表'含糊不清,从命名空间或类型'Microsoft.Office.Tools.ExcelMicrosoft.Office.Interop.Excel'导入。”

我对此比较陌生,但是我已经尝试了几百个源/方法,用于将分隔数据导入excel,更具体地说是将数据写入单元格/范围。

有人在这里看到我遗失/做错了吗?或者可能有另一件事我可以尝试将数据写入单元格/范围?

2 个答案:

答案 0 :(得分:0)

尝试使用ActiveWorkbook.Sheets("Sheet1").Range("A1").Value=3.14159

答案 1 :(得分:0)

Button_2中的代码是否有效?我想你可能需要使用以下内容。

Globals.ThisWorkbook.Worksheets("Sheet1").Range("A1").Value2 = 3.14159

使用您的第一段代码,您的数据文件是否有一行和两列?因为如果有多行,看起来你只会在每次迭代后覆盖第一个单元格。

您可以在每次迭代时递增行数(最简单),或者您可以插入向下移动在第一个单元格上,以使其推送先前的迭代。您还可以创建一个包含所有数据的较大数组,并立即设置所有行。