打开并阅读没有表格名称的CSV文件

我试图编写VBA代码,它将读取给定的CSV文件名,并在写入另一个CSV文件之前对数据进行一些更改。

Set oSht_Input = Workbooks.Open(file_Path, UpdateLinks:=False).Worksheets(extractDataFile.convertedSheetName) lastRow = oSht_Input.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For Rows = 2 To lastRow extractedDataFileRecord.Variable1 = CStr(oSht_Input.Cells(Rows, 1)) .... code continues 

这个代码一般工作正常。

但是,缺点是CSV文件只会将文件名复制到表名中。 因此,我可以安全地假定variablesconvertedSheetName等同于提供的文件名。

如果文件名称足够短,可以将该代码复制到表格名称中。 但是,如果文件名太长,文件名会在表名中被截断,所以我无法得到正确的引用来设置Worksheet对象。

有没有更好的方法来实际获取表单引用,以便我可以读取表单内的单元格值?

如果您正在使用Workbooks.Open,则该过程本质上是一个“文件►打开”,而不是导入到现有的或新的工作表。 以这种方式打开CSV时,只有一个工作表。 使用Sheets(1)工作表对象集合参考或Sheet1表代码名称来引用它。 例:

 Dim rw As Long, lastRow As Long, file_Path As String, wb As Workbook, oSht_Input As Worksheet file_Path = "something" Set wb = Workbooks.Open(file_Path, UpdateLinks:=False) Set oSht_Input = wb.Sheets(1) With oSht_Input lastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For rw = 2 To lastRow 'do stuff to .Cells or .Range here extractedDataFileRecord.Variable1 = CStr(.Cells(rw, 1)) Next rw End With Set oSht_Input = Nothing Set wb = Nothing 

这应该让你去。 我已经使用With ... End With的工作表引用,以便随后的.cells和.range引用只需要以显示父项的句号开头。