&引用;无法访问文件";1004导出工作表错误VBA
我无法解决这个错误。我找了这么多,但找不到解决办法。代码工作率为98%。只需要解决2%的问题。&引用;无法访问文件";1004导出工作表错误VBA,vba,excel,Vba,Excel,我无法解决这个错误。我找了这么多,但找不到解决办法。代码工作率为98%。只需要解决2%的问题。 用户表单: 单击浏览按钮,打开“选择文件夹”对话框。所选文件夹路径将显示在文本框中 代码: Dim sItem As String Private Sub browse_Button_Click() Dim fldr As FileDialog Dim strPath As String Set fldr = Application.FileDialog(msoFileDialogFolderPi
用户表单:
单击浏览按钮,打开“选择文件夹”对话框。所选文件夹路径将显示在文本框中 代码:
Dim sItem As String
Private Sub browse_Button_Click()
Dim fldr As FileDialog
Dim strPath As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = strPath
If .Show <> -1 Then Exit Sub
sItem = .SelectedItems(1)
End With
showFilePath.Text = sItem
End Sub
Private Sub cancel_button_Click()
Unload Me
End Sub
Private Sub export_button_Click()
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim xWs As Worksheet
Dim xWb As Workbook
Dim FolderName As String
Application.ScreenUpdating = False
Set xWb = Application.ThisWorkbook
DateString = Format(Now, "yyyy-mm-dd hh-mm-ss")
FolderName = sItem & "\" & xWb.Name & " " & DateString
MkDir FolderName
For Each xWs In xWb.Worksheets
xWs.Copy
If xlsx = True Then
FileExtStr = ".xlsx": FileFormatNum = 51
Unload Me
ElseIf xlsm = True Then
FileExtStr = ".xlsm": FileFormatNum = 52
Unload Me
ElseIf xls = True Then
FileExtStr = ".xls": FileFormatNum = 56
Unload Me
ElseIf xlsb = True Then
FileExtStr = ".xlsb": FileFormatNum = 50
Unload Me
ElseIf csv = True Then
FileExtStr = ".csv": FileFormatNum = 6
Unload Me
ElseIf txt = True Then
FileExtStr = ".txt": FileFormatNum = -4158
Unload Me
ElseIf html = True Then
FileExtStr = ".html": FileFormatNum = 44
Unload Me
ElseIf prn = True Then
FileExtStr = ".prn": FileFormatNum = 36
Unload Me
End If
xFile = FolderName & "\" & Application.ActiveWorkbook.Sheets(1).Name & FileExtStr
Application.ActiveWorkbook.SaveAs xFile, FileFormat:=FileFormatNum '<---ERROR HERE
Application.ActiveWorkbook.Close False
Next
MsgBox "You can find the files in " & FolderName
Application.ScreenUpdating = True
End Sub
Dim sItem作为字符串
专用子浏览按钮点击()
Dim fldr As FILE对话框
将strPath设置为字符串
设置fldr=Application.FileDialog(msoFileDialogFolderPicker)
与fldr
.Title=“选择一个文件夹”
.AllowMultiSelect=False
.InitialFileName=strPath
如果.Show-1,则退出Sub
sItem=.SelectedItems(1)
以
showFilePath.Text=sItem
端接头
专用子取消按钮单击()
卸下我
端接头
专用子导出按钮单击()
Dim FileExtStr作为字符串
Dim FileFormatNum尽可能长
将xWs设置为工作表
Dim xWb作为工作簿
Dim FolderName作为字符串
Application.ScreenUpdating=False
设置xWb=Application.ThisWorkbook
DateString=格式(现在为“yyyy-mm-dd-hh-mm-ss”)
FolderName=sItem&“\”&xWb.Name&“&DateString
MkDir FolderName
对于xWb.工作表中的每个xWs
拷贝
如果xlsx=True,则
FileExtStr=“.xlsx”:FileFormatNum=51
卸下我
ElseIf xlsm=则为真
FileExtStr=“.xlsm”:FileFormatNum=52
卸下我
ElseIf xls=则为真
FileExtStr=“.xls”:FileFormatNum=56
卸下我
ElseIf xlsb=则为真
FileExtStr=“.xlsb”:FileFormatNum=50
卸下我
ElseIf csv=则为真
FileExtStr=“.csv”:FileFormatNum=6
卸下我
ElseIf txt=则为真
FileExtStr=“.txt”:FileFormatNum=-4158
卸下我
ElseIf html=True则
FileExtStr=“.html”:FileFormatNum=44
卸下我
ElseIf prn=则为真
FileExtStr=“.prn”:FileFormatNum=36
卸下我
如果结束
xFile=FolderName&“\”&Application.ActiveWorkbook.Sheets(1).Name&FileExtStr
Application.ActiveWorkbook.SaveAs xFile,FileFormat:=FileFormatNum'当您在VBA中遇到错误时,最好的解决方案是仔细阅读错误消息框。在这种情况下,第一个建议是正确的——“确保指定的文件夹存在”
检查文件夹是否存在的最简单方法是查看路径。可能的解决办法:
MsgBox xFile
它将打印文件夹并允许您从此进行调试。通常错误是可见的,如本例中出现的两个\\
:
编辑:
在这种情况下,OP可以首先检查showFilePath(浏览)是否正确使用:
If Dir(showFilePath.Text) = "" Then
sItem = showFilePath.Text
Else
MsgBox "No folder selected!"
Exit Sub
End If
其次,OP可以检查以下哪种情况适用:
If Right(sItem, 1) = "\" Then 'Backslash is yet present
FolderName = sItem & xWb.Name & " " & DateString
Else
FolderName = sItem & "\" & xWb.Name & " " & DateString 'Add a Backslash
End If
也许是个愚蠢的问题,但是你检查了错误弹出窗口中列出的所有可能的问题了吗?@vityta我本地电脑中的位置。没有共享。@vityta它给我的错误在这一行Application.ActiveWorkbook.SaveAs xFile,FileFormat:=FileFormatNum
@AmanDevrath-我想这个错误可能是因为路径中的两个“\\”。非常感谢您的帮助@维迪亚塔谢谢你。但是,只有在选择了驱动器的情况下,代码中的这种更正才有效,而不是在选择了文件夹的情况下。@Vityata,我已经为OP提供了一些代码,以避免将来出现这些错误。希望你能接受。