这是我正在做的要点。我有一个功能区按钮需要将一个简单的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.Excel
,Microsoft.Office.Interop.Excel
'导入。”
我对此比较陌生,但是我已经尝试了几百个源/方法,用于将分隔数据导入excel,更具体地说是将数据写入单元格/范围。
有人在这里看到我遗失/做错了吗?或者可能有另一件事我可以尝试将数据写入单元格/范围?
答案 0 :(得分:0)
尝试使用ActiveWorkbook.Sheets("Sheet1").Range("A1").Value=3.14159
答案 1 :(得分:0)
Button_2中的代码是否有效?我想你可能需要使用以下内容。
Globals.ThisWorkbook.Worksheets("Sheet1").Range("A1").Value2 = 3.14159
使用您的第一段代码,您的数据文件是否有一行和两列?因为如果有多行,看起来你只会在每次迭代后覆盖第一个单元格。
您可以在每次迭代时递增行数(最简单),或者您可以插入并向下移动在第一个单元格上,以使其推送先前的迭代。您还可以创建一个包含所有数据的较大数组,并立即设置所有行。