繁体   English   中英

试图将数据读入 memory

[英]Trying to read data into memory

我正在尝试将以下数据读入 memory 以将其传递到 Excel 单元格。 但是,它似乎只读作一条“线”。

Component details Export from File:-
="Reference","Description","Number","Custom"
="Hello",="Test data",="J125",="Door"
="Hello",="Test data",="J126",="Door"
="Hello",="Test data",="J127",="Door"
="Hello",="Test data",="J128",="Door"
="Hello",="Test data",="J129",="Door"
="Hello",="Test data",="J130",="Door"

这是我正在使用的代码:

strfile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "CATIA Data")

If strfile = False Then
    GoTo HERE:
End If
Open strfile For Input As #1
    
        ROW_NUMBER = 1
        Do Until EOF(1)

           Line Input #1, linefromfile
           counter = 1

           Result = Split(linefromfile, ",")
           For i = LBound(Result()) To UBound(Result())
               DisplayText = DisplayText & Result(i) & vbNewLine
               counter = counter + 1
                   
               J = i + 1
               ws.Cells(ROW_NUMBER, J) = Replace(Result(i), Chr(34), "")
           Next i
        
           ROW_NUMBER = ROW_NUMBER + 1                        
        Loop
Close

不幸的是,对于我想用这个宏做的比较和更新,导入 CSV 会工作得很好,我认为导入 memory 然后选择我想放入工作表的数据位会更干净。

您有几个直接问题会导致错误。

  1. 你的UboundLBound编码是错误的。 去掉括号。
  2. 您需要将更多引号插入到 excel 中作为像="Hello"这样的公式,或者您需要替换公式和引号(不清楚您的目标是什么)。
  3. 如果您想在某些列而不是其他列上使用文字公式,则需要为该列创建一个 if 语句。

我针对您的测试文本文件运行了下面修改后的代码,并得到了以下结果。 您可以在此处查看/测试您是否获得了自己的文件副本

在此处输入图像描述

Sub fixCSVLOAD()

strfile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "CATIA Data")
Dim ws As Worksheet
Set ws = ActiveSheet

Open strfile For Input As #1
    
        ROW_NUMBER = 1
        Do Until EOF(1)

           Line Input #1, linefromfile
           counter = 1

           Result = Split(linefromfile, ",")
           For i = LBound(Result) To UBound(Result)
               DisplayText = DisplayText & Result(i) & vbNewLine
               counter = counter + 1
                   
               j = i + 1
               If i = 2 Then
                ws.Cells(ROW_NUMBER, j) = Replace(Result(i), Chr(34), "")
                Else
                
                ws.Cells(ROW_NUMBER, j) = Replace(Result(i), Chr(34), """")
                
                End If
                
           Next i
        
           ROW_NUMBER = ROW_NUMBER + 1
        Loop
Close


End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM