【发布时间】:2015-06-06 00:11:26
【问题描述】:
我想做什么。
将启用宏的 Excel 文档发送给我的同事,其中包含一个可打开保存文件对话框然后生成此 csv 的工作宏。
我做了什么?
我在 Excel 2013 中制作了一个 VBA 宏,它在我的机器上运行良好。但是,当我将此启用宏的 excel 表发送给我的同事时,他得到:
Microsoft Office Excel 无法访问文件“我的计算机上文档的路径”。有几个可能的原因:
- 文件名或路径不存在。
- 该文件正被另一个程序使用。
- 您尝试保存的工作簿与当前打开的工作簿同名
我的来源:
Sub Convert2CSV()
Dim fileName As String
fileName = "OrderSedel_" & Format(Now, "yyyy-mm-dd hh mm") & ".csv"
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "xxx"
.AllowMultiSelect = False
.InitialFileName = fileName
.FilterIndex = 15
result = .Show
If (result <> 0) Then
' create file
fileName = Trim(.SelectedItems.Item(1))
fnum = FreeFile
Open fileName For Output As fnum
' Write the csv data from form record set
For i = 7 To ActiveSheet.UsedRange.Rows.Count
If ( _
(Not Trim(Cells(i, 1).Value & vbNullString) = vbNullString Or _
Not Trim(Cells(i, 3).Value & vbNullString) = vbNullString) And _
Not Trim(Cells(i, 9).Value & vbNullString) = vbNullString) Then
'Check EAN (Trim). If No EAN get Bolist ArtNum
If (Trim(Cells(i, 3).Value & vbNullString) = vbNullString) Then
Print #fnum, Cells(i, 1).Value & ";" & Cells(i, 9).Value
Else
Print #fnum, Cells(i, 3).Value & ";" & Cells(i, 9).Value
End If
End If
Next i
' close file
Close #fnum
End If
End With
End Sub
【问题讨论】:
-
我没有要测试的 2013,但是您可以浏览
.FileDialog的属性,看看是否有可以设置的默认目录属性?可能是默认目录以某种方式“卡”在 your 机器上的路径上,如果您在代码中将其设置为%My Documents%之类的东西,它可能会在运行时解决该问题并且拿起你同事的MyDocuments,而不是尝试访问你的。 -
关于我上面的评论,尝试设置
.InitialFileName“设置或返回一个字符串,表示最初显示在文件对话框中的路径或文件名。” .我花了一分钟在MS Docs 中找到它 -
我正在设置 InitialFileName :(
-
这个错误可能是非宏观问题。工作簿中是否有一些数据链接(普通 Excel 功能、数据 - 连接)?一些使用指定路径的公式,一些其他的表连接? Ilustration of what I mean
-
@BranislavKollár 正确的名称应该是 Excel 启用宏的工作簿(请参阅我的附件图片)。对此感到抱歉。