Vba 代码错误-保存要求覆盖的CSV文件

Vba 代码错误-保存要求覆盖的CSV文件,vba,excel,Vba,Excel,我的代码给了我错误信息 If Dir(Pth, vbArchive) <> vbNullString Then 您的代码中存在一些问题。我不明白您为什么会收到错误消息,但如果您解决了问题,您就可以更好地找到主要问题 将选项显式置于顶部。如果这样做,则不会出现错误,例如设置变量file\u name$,而是从变量FileName读取 您正在构建带有双反斜杠的路径。也许这不是什么大事,也可能有用。在出现问题的If之前添加Debug.Print Pth。按Ctrl-G以显示调试窗格并研究

我的代码给了我错误信息

If Dir(Pth, vbArchive) <> vbNullString Then

您的代码中存在一些问题。我不明白您为什么会收到错误消息,但如果您解决了问题,您就可以更好地找到主要问题

  • 选项显式
    置于顶部。如果这样做,则不会出现错误,例如设置变量
    file\u name$
    ,而是从变量
    FileName
    读取
  • 您正在构建带有双反斜杠的路径。也许这不是什么大事,也可能有用。在出现问题的
    If
    之前添加
    Debug.Print Pth
    。按Ctrl-G以显示调试窗格并研究输出。打印的文件路径是否存在
  • 不要使用
    vbNullString
    。改为使用
    abc”“
    进行测试

  • 调试时出现了什么错误,以及
    Pth
    的值是多少?大家好,非常感谢您的回答!你能试着粘贴完整的代码吗?你的意思是,因为我对几个答案有点困惑
    Sub Opgave8()
        Dim sh As Worksheet
        Dim Pth As String
    
        Application.ScreenUpdating = False
    
        ' Create default desktop path using windows user id
        user_id = Environ$("USERPROFILE")
        ' Create full path
        file_name$ = "\AdminExport.csv"
        Pth = Environ$("USERPROFILE") & "\Desktop\" & FileName
    
        Set sh = Sheets.Add
    
        For i = 2 To 18288
            If Left(Worksheets("Base").Cells(i, 12), 6) = "262015" Then
                sh.Cells(i, 2) = Worksheets("Base").Cells(i, 4)
            End If
        Next i
    
        sh.Move
    
        If Dir(Pth, vbArchive) <> vbNullString Then
            overwrite_question = MsgBox("File already exist, do you want to overwrite it?", vbYesNo)
        End If
    
        If overwrite_question = vbYes Then
            With ActiveWorkbook
                .SaveAs FileName:=Pth, FileFormat:=xlCSV
                .Close False
            End With
        End If
    
        Application.ScreenUpdating = True
    
    End Sub
    
    Function UniqueRandDigits(x As Long) As String
        Dim i As Long
        Dim n As Integer
        Dim s As String
        Do
            n = Int(Rnd() * 10)
            If InStr(s, n) = 0 Then
                s = s & n
                i = i + 1
            End If
        Loop Until i = x + 1
    
        UniqueRandDigits = s
    End Function