excel - Excel VBA 运行时错误“70”:权限被拒绝
问题描述
这是 VBA 模块脚本:
Sub ExportToTXT()
Dim wsData As Variant
Dim myFileName As String
Dim FN As Integer
Dim p As Integer, q As Integer
Dim path As String
Dim myString As String
Dim lastrow As Long, lastcolumn As Long
lastrow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
lastcolumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
path = "C:\Users\MiniMe\Desktop\GE2\"
For p = 7 To lastcolumn
wsData = ActiveSheet.Cells(8, p).Value
'If wsData = "" Then Exit Sub
myFileName = ActiveSheet.Cells(1, p).Value
myFileName = myFileName & ".txt"
myFileName = path & myFileName
'MsgBox myFileName
For q = 7 To lastrow
myString = myString & " " & Cells(q, p)
FN = FreeFile
Open myFileName For Output As #FN
Print #FN, myString
Close #FN
Next q
myString = ""
Next p
End Sub
我正在使用 VBA 模块将 Excel 列导出到 TXT 文件中,但出现运行时错误 70(权限被拒绝)。如果我一遍又一遍地运行脚本,它会在每个 TXT 文件中产生更多的 TXT 文件或字符,但最终仍然会出现相同的错误。调试显示错误发生在Open myFileName For Output As #FN
. 由于 Excel 文件包含大量数据,我想知道 VBA 脚本是否正在尝试继续输出循环中的下一个 TXT 文件,而尚未完成当前 TXT 文件的输出。这只是一个猜测,因为我对 VBA 完全陌生,而且非常无能。
我一直在尝试自己解决问题,但似乎无法克服这个障碍。有什么想法吗?提前非常感谢您!这是为了一个非常好的原因。
解决方案
您不需要多次打开和关闭文件。要么将其从内部q
循环中取出,要么每隔一段时间冲洗myString
一次。在代码中,对文本文件的写入被排除在循环之外。
Sub ExportToTXT()
Dim wsData As Variant
Dim myFileName As String
Dim FN As Integer
Dim p As Long, q As Long
Dim path As String
Dim myString As String
Dim lastrow As Long, lastcolumn As Long
lastrow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
lastcolumn = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
path = "C:\Users\MiniMe\Desktop\GE2\"
For p = 7 To lastcolumn
wsData = Sheets("Sheet1").Cells(8, p).Value
'If wsData = "" Then Exit Sub
myFileName = ActiveSheet.Cells(1, p).Value
myFileName = myFileName & ".txt"
myFileName = path & myFileName
'MsgBox myFileName
myString = ""
For q = 7 To lastrow
myString = myString & " " & Cells(q, p)
Next q
FN = FreeFile
Open myFileName For Output As #FN
Print #FN, myString
Close #FN
Next p
End Sub
编辑:p
并q
声明为Long
@Tim Williams 的以下更正并Write #FN, myString
更改为Print #FN, myString
推荐阅读
- reactjs - 使用 Web 组件的单元测试反应
- postgresql - postgres createdb 语言环境问题
- android - 运行我的应用程序后,所有文件代码都更改为无效代码
- android - 当 backstack 中的片段可见时调用 onCreateOptionsMenu,但旧菜单对象仍然存在
- html - 如何创建不受边框半径影响的上直下边框
- katalon-studio - 如何使用具有超时值的 WebUI.getUrl().contains('atlassian')
- java - 在localhost:8443上启动spring应用程序时如何修复'java.io.IOException:toDerInputStream拒绝标签类型60'
- java - 使用@ElementCollection 时出错:org.hibernate.MappingException:无法确定类型:java.util.Set,在表中:列
- list - 颤振 - 如何计算列表中数据的平均值?
- windows - Docker xDebug 未连接到 VSCode