Vba 如果将值放入CSV文件中(对于i)

Vba 如果将值放入CSV文件中(对于i),vba,excel,Vba,Excel,我的代码不起作用,我似乎无法在已经提出的问题中找到解决方案 我想将数据粘贴到CSV文件中,但它似乎无法找到它 它在 outputFile.Cells(i,2)=1949.5+(工作表(“基”).Cells(i,5)/2) 这就是我找到数据的地方。有人能看到出了什么问题吗 Sub works() Dim outputFile 'Pointer to the file Dim outputFileName 'Filename of the export file Dim

我的代码不起作用,我似乎无法在已经提出的问题中找到解决方案

我想将数据粘贴到CSV文件中,但它似乎无法找到它

它在

outputFile.Cells(i,2)=1949.5+(工作表(“基”).Cells(i,5)/2)

这就是我找到数据的地方。有人能看到出了什么问题吗

Sub works()

Dim outputFile          'Pointer to the file
Dim outputFileName      'Filename of the export file
Dim outputPath          'Path for the file

Dim numRows
Dim currentRow

Dim writeFile
Dim fileExists

writeFile = vbYes

outputFile = FreeFile
outputFileName = "AdminExport.csv"
outputPath = Application.ActiveWorkbook.Path

fileExists = Dir(outputPath & Application.PathSeparator & outputFileName)

If (fileExists <> "") Then
    writeFile = MsgBox("File already exists at the moment!" & vbCrLf & "Do you want to overwrite it with a new one?", vbYesNo + vbCritical)
End If

If (writeFile = vbYes) Then
    Open outputPath & Application.PathSeparator & outputFileName For Output Lock Write As #outputFile
    'Lock write = VBA har fuld rettighed til dokumentet (Ekslusivt)

    For i = 2 To 18288
        If Left(Worksheets("Base").Cells(i, 12), 6) = "262015" Then
        outputFile.Cells(i, 2) = 1949.5 + (Worksheets("Base").Cells(i, 5) / 2)
        End If
    Next i

    Print #outputFile, "Person_ID;STUDENT_ID_OLD;STUDENT_ID_NEW;ENROLL_PERIOD"
    'Overskrifter i CSV-filen

    numRows = Worksheets("Base").Range("A1").End(xlDown).Row
    For currentRow = 2 To numRows
    'Tæller antal rækker i "Base"

    Print #outputFile, Worksheets("Base").Range("A" & currentRow) & ";" & Worksheets("Base").Range("B" & currentRow)


    Next
End If

Close outputFile
'Lukker den, da vi har 'open' oppe over





End Sub
子工程()
指向该文件的Dim outputFile指针
Dim outputFileName导出文件的文件名
文件的Dim outputPath路径
朦胧的numRows
暗电流行
暗写文件
Dim文件存在
writeFile=vbYes
outputFile=FreeFile
outputFileName=“AdminExport.csv”
outputPath=Application.ActiveWorkbook.Path
fileExists=Dir(outputPath&Application.PathSeparator&outputFileName)
如果(fileExists“”),则
writeFile=MsgBox(“此时文件已存在!”&vbCrLf&“是否要用新文件覆盖它?”,vbYesNo+vbCritical)
如果结束
如果(writeFile=vbYes),则
打开outputPath&Application.PathSeparator&outputFileName,将输出锁写入为#outputFile
'Lock write=VBA har fuld RETTIGED til dokumentet(Ekslusivt)
对于i=2至18288
如果左(工作表(“基本”)。单元格(i,12),6)=“262015”,则
outputFile.Cells(i,2)=1949.5+(工作表(“基”).Cells(i,5)/2)
如果结束
接下来我
打印输出文件“个人ID;学生ID旧;学生ID新;注册期间”
'Overskrifter i CSV文件
numRows=工作表(“基本”).范围(“A1”).结束(xlDown).行
对于currentRow=2到numRows
Tæller antal rækker i“基地”
打印输出文件、工作表(“基本”)范围(“A”和当前行)和“;”和工作表(“基本”)范围(“B”和当前行)
下一个
如果结束
关闭输出文件
卢卡·登,六点开门,完毕
端接头

问题在于您收到错误的行中的这部分代码:

outputFile.Cells(i, 2) 

写入二进制文件时,不能以与Excel中相同的方式引用单元格。为此,您需要使用
print
语句。参见教程。

出于好奇,输出锁的
Open outputPath&Application.pathseptor&outputFileName的不同部分写为#outputFile
做了什么,您知道我可以在哪里读到您在这里使用的语法吗?我最初猜测您的错误是outputfile未设置为file对象,和/或无法直接使用file.cells,但如果无法解析所有代码,则很难说。例如,如果您将一个
Debug.Print outputFile.Name
放在它出错的行之前,那会说什么?