【问题标题】:Trying to write array to range of cells试图将数组写入单元格范围
【发布时间】:2013-05-12 02:59:31
【问题描述】:

这是我正在做的要点。我有一个功能区按钮,需要将一个简单的 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 子中,我只是想看看是否可以将静态值写入单个单元格。我在不同的 SO 或 MSDN 帖子上找到了确切的代码行......我现在不记得了。无论哪种方式,我都得到“'工作表'不明确,从命名空间或类型'Microsoft.Office.Tools.ExcelMicrosoft.Office.Interop.Excel'导入。”

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

有没有人看到我在这里缺少/做错了什么?或者也许还有另一件事我可以尝试将数据写入单元格/范围?

【问题讨论】:

  • 所以你在 VB.NET 上,你想创建一个新的 Excel 工作簿并添加 CSV 文件的值,对吧?

标签: arrays excel vba range ribbon


【解决方案1】:

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

【讨论】:

  • 我试过了,得到这个错误:'ActiveWorkbook'没有声明。由于其保护级别,它可能无法访问。
【解决方案2】:

您在 Button_2 中的代码有效吗?我认为您可能需要使用以下内容。

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

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

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

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 2016-02-29
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多