Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 对产生正确结果的代码的修改。啊哈,我的错误。谢谢你这么说。尽管如此,在这里,这是一个很好的例子,说明了为什么解释代码如此重要。请编辑你的帖子,并从你的评论中添加解释,以便将来的读者真正了解。不要把解释作为评论。 Sub SplitCSVFile() 'Sp_Excel_Vba - Fatal编程技术网

Excel 对产生正确结果的代码的修改。啊哈,我的错误。谢谢你这么说。尽管如此,在这里,这是一个很好的例子,说明了为什么解释代码如此重要。请编辑你的帖子,并从你的评论中添加解释,以便将来的读者真正了解。不要把解释作为评论。 Sub SplitCSVFile() 'Sp

Excel 对产生正确结果的代码的修改。啊哈,我的错误。谢谢你这么说。尽管如此,在这里,这是一个很好的例子,说明了为什么解释代码如此重要。请编辑你的帖子,并从你的评论中添加解释,以便将来的读者真正了解。不要把解释作为评论。 Sub SplitCSVFile() 'Sp,excel,vba,Excel,Vba,对产生正确结果的代码的修改。啊哈,我的错误。谢谢你这么说。尽管如此,在这里,这是一个很好的例子,说明了为什么解释代码如此重要。请编辑你的帖子,并从你的评论中添加解释,以便将来的读者真正了解。不要把解释作为评论。 Sub SplitCSVFile() 'Splits a text or csv file into smaller files with a user defined number (max) of lines or rows. The new files get the origin


对产生正确结果的代码的修改。啊哈,我的错误。谢谢你这么说。尽管如此,在这里,这是一个很好的例子,说明了为什么解释代码如此重要。请编辑你的帖子,并从你的评论中添加解释,以便将来的读者真正了解。不要把解释作为评论。
Sub SplitCSVFile()
'Splits a text or csv file into smaller files with a user defined number (max) of lines or rows. The new files get the original file name + a number (1, 2, 3 etc.).

Dim sFile As String  'Name of the original file
Dim sText As String  'The file text
Dim lStep As Long    'Max number of lines in the new files
Dim vX, vY           'Variant arrays. vX = input, vY = output
Dim iFile As Integer 'File number from Windows
Dim lCount As Long   'Counter
Dim lIncr As Long    'Number for file name
Dim lMax As Long     'Upper limit for loop
Dim lNb As Long      'Counter
Dim lSoFar As Long   'How far did we get?

On Error GoTo ErrorHandle

'Select a file
sFile = Application.GetOpenFilename()

'If the user cancelled
If sFile = "False" Then Exit Sub

'Ask the user for max number of lines per file.
lStep = Application.InputBox("Max number of lines/rows?", Type:=1)

'Arrays have zero as LBound, so we subtract 1
lStep = lStep - 1

'Read the file text to sText
sText = _
CreateObject("Scripting.FileSystemObject").OpenTextFile(sFile).ReadAll

'Put the text into the array vX. Carriage return–linefeed combination will add a new row to the array.
 vX = Split(sText, vbCrLf)

'Free memory
sText = ""

'Start a loop that will run until all rows in the array have been read and saved into new files. The variable lSoFar keeps track of how far we are in vX.
Do While lSoFar < UBound(vX)
   'If the number of rows minus lSoFar is bigger than max number of rows, the array vY is dimensioned to max number of rows.
   If UBound(vX) - lSoFar >= lStep Then
      ReDim vY(lStep)
      'lMax is set = last rownumber to be copied to vY.
      lMax = lStep + lSoFar
   Else
      'Else we dimension vY to the number of rows left.
      ReDim vY(UBound(vX) - lSoFar)
      'Last row to copy is last row in vX
      lMax = UBound(vX)
   End If

   lNb = 0
   'Now we copy the rows from vX to vY
   For lCount = lSoFar To lMax
      vY(lNb) = vX(lCount)
      lNb = lNb + 1
   Next

   'lSoFar keeps track of how far we got in vX
   lSoFar = lCount

   'Get a free file number
   iFile = FreeFile

   'Increment the number for the new file name
   lIncr = lIncr + 1

   'Save vY as a CSV file
   'Open sFile & "-" & lIncr & ".csv" For Output As #iFile
    Open Replace(sFile, ".csv", "") & "_" & lIncr & ".csv" For Output As #iFile
      'The Join function makes a text string from the array elements.
      Print #iFile, Join$(vY, vbCrLf)
   Close #iFile
Loop

Erase vX
Erase vY

Exit Sub
ErrorHandle:
MsgBox Err.Description & " Procedure SplitTextFile"
End Sub
Print #iFile, Join$(vY, vbCrLf)
Print #iFile, IIf(lIncr = 0, "", vX(0) & vbCrLf) & Join$(vY, vbCrLf)