我正在创建excel文件,该文件仅包含按钮,当单击该按钮时,会将指定(现在只是硬编码)目录中的所有其他excel文件提取到管道分隔的.txt文件中。我过去曾经做过一些编程,但是对VBA不太熟悉,因此我通常通过搜索和重用教程等来工作。
我基本上想做的是:-遍历特定目录-对于每个xls / xlsx文件,创建一个单独的.txt管道分隔的,名称相同的扩展名,并以.txt为扩展名
到目前为止,我已经找到了以下代码:
Sub Run_Coversion()
Dim directory As String
Dim fileName As String
Dim OutputFile As String
Dim myWkBook As Workbook
Dim myRecord As Range
Dim myField As Range
Dim nFileNum As Long
Dim sOut As String
Const DELIMITER As String = "|"
Application.ScreenUpdating = False
directory = "C:\Users\vacek\Documents\EFPIA_Project\Excel_Tool\Files\"
fileName = Dir(directory & "*.xls*")
Do While fileName <> ""
Workbooks.Open (directory & fileName)
OutputFile = directory & fileName & ".txt"
nFileNum = FreeFile
Open OutputFile For Output As #1
Set myWkBook = Workbooks(fileName)
myWkBook.Sheets("Sheet1").Activate
For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
With myRecord
For Each myField In Range(.Cells, Cells(.Row, Columns.Count).End(xlToLeft))
sOut = sOut & DELIMITER & myField.Text
Next myField
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
End With
Next myRecord
End With
Workbooks(fileName).Close
fileName = Dir()
Loop
Application.ScreenUpdating = True
End Sub
问题是,“ For Each”循环遍历正在运行宏的工作簿,而不是打开的工作簿。我尝试过设置该工作簿为活动状态,但无法使其正常工作。任何人都可以帮助我设置此权限吗?
在打开的工作簿中创建对工作表的引用:
Dim sheet As Worksheet
Set sheet = myWkBook.Sheets("Sheet1")
然后Range/Row/Cell ...
在后续代码中使用该变量属性,以防止Range
默认情况下的“裸” ActiveWorkbook
:
For Each myRecord In sheet.Range("A1:A" & sheet.Range("A" & sheet.Rows.Count).End(xlUp).Row)
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句