我需要读取一个Excel文件,解析并将结果写入另一个Excel文件

时间:2018-05-13 02:09:44

标签: excel-vba vba excel

我无法弄清楚为什么在尝试编译代码时收到错误消息。我需要从输入文件中读取21行,以在现有的excel文件中创建一个新记录。然后我需要重复大约3000行输入的过程。

在我的While语句中突出显示(filenum)并收到错误消息: 编译错误;预期结束子

---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:

Expected End Sub
---------------------------
OK   Help   
---------------------------

以下是一些代码:

Sub btnProcessData_Click()

Dim FileNum As Integer
FileNum = FreeFile()

Open "filename" For Input As #FileNum

Dim DataLine As String
Dim strCallNum As String
a bunch of Dim statements appear here

While Not EOF(FileNum)
 Sub CallInvoiceNums()
    Line Input #FileNum, strDataLine
     strCallNum = strDataLine
     MsgBox strCallNum
     Line Input #FileNum, strDataLine
     strInvoiceNum = strDataLine
     MsgBox strInvoiceNum
    Line Input #FileNum, strDataLine
     strText_String = strDataLine
     MsgBox strText_String

      Sub Break_String()
       WrdArray() = Split(text_string)
       For i = LBound(WrdArray) To UBound(WrdArray)
         strg = strg & vbNewLine & "Part No. " & i & " - " & WrdArray(i)
       Next i
       strArrayElements = UBound(WrdArray, 2)
       MsgBox strg
      End Sub
 End Sub
Wend

End Sub

1 个答案:

答案 0 :(得分:0)

我已经格式化了代码,因此它是可读的。为此,我选择了代码,然后单击带花括号的按钮。我怀疑不可读的代码是导致投票失败的原因。

你在另一个中声明一个sub。你有:

Sub btnProcessData_Click()
 . . .
While Not EOF(FileNum)
Sub CallInvoiceNums()

您必须先与btnProcessData结束End Sub才能开始Sub CallInvoiceNums

Sub和Function声明不能嵌套。如果您需要进一步的帮助,请尝试分离您的潜艇,然后再回来。

<强>更新

您的代码即将结束:

  Sub Break_String()
   WrdArray() = Split(text_string)
   For i = LBound(WrdArray) To UBound(WrdArray)
     strg = strg & vbNewLine & "Part No. " & i & " - " & WrdArray(i)
   Next i
   strArrayElements = UBound(WrdArray, 2)
   MsgBox strg
  End Sub

这看起来好像你想把这个代码拆分为一个子程序,但却没有。如果您删除了Sub Break_String()End Sub,则看起来好像剩下的代码可以正常工作。 Sub CallInvoiceNums()及其匹配的End Sub也是如此。您是否熟悉使用不同方法声明子例程和函数的语言?

我不明白你的前缀。我已经用语言编程了传统的变量名称前缀和表示其类型的代码。 “wrd”可能用于16位或32位整数,但在WrdArray中,您将其用于字符串数组。您在strArrayElements中存储了一个32位整数。请解释一下。