我將Excel VBA腳本拼湊在一起,將所有工作表寫入打開的工作簿以分隔製表符分隔的文件(這仍然是「宏」 ?我正在Excel真空中學習)。它一次在一個工作簿上運行良好。這裏是。將工作簿的文件夾循環並使用Excel VBA將所有工作表導出爲製表符分隔的文本
Sub exportSheetsToText()
Dim sWb As String
Dim sFile As String
Dim oSheet As Worksheet
sWb = Left(ActiveWorkbook.FullName, InStr(ActiveWorkbook.FullName, ".") - 1)
For Each oSheet In Worksheets
oSheet.Copy
sFile = sWb & "-" & oSheet.Name & ".txt"
ActiveWorkbook.SaveAs fileName:=sFile, FileFormat:=xlText
ActiveWorkbook.Close SaveChanges:=False
Next oSheet
End Sub
我想縮小這個範圍,以便我可以將此宏應用於工作簿文件夾。我寫了我認爲會遍歷每個滿足過濾器的工作簿的內容,但它不寫入任何.txt文件。這裏是。
Sub exportsSheetsToTextForAll()
Dim sPath As String
Dim sWildcard As String
Dim sMacro As String
Dim oWb As Workbook
Dim oPersWb As Workbook
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Set oPersWb = Workbooks("PERSONAL.XLSB")
sMacro = "'" & oPersWb.Name & "'" & "!exportSheetsToText()"
sPath = "C:\Users\richard\Documents\Research\Data\Excel\Datastream - payout"
sWildcard = "New*.xlsx"
sFile = Dir(sPath & "\" & sWildcard)
Do While Len(sFile) > 0
Workbooks.Open Filename:=sPath & "\" & sFile
Application.Run sMacro
ActiveWorkbook.Close SaveChanges:=False
sFile = Dir
Loop
End Sub
遍歷所有的我的測試文件,但我沒有看到任何效果(即沒有.txt文件並沒有錯誤)。
最後我將在宏中使用非常大的工作簿,因此禁用宏(我本地沒有宏,它們位於專用數據機器上)並在打開之前關閉一個大型工作簿非常重要下一個。
任何想法?謝謝!
我剛剛給它鳥瞰,因爲我現在必須走出任何時刻。這裏有一個建議,雖然...而不是'Workbooks.Open Filename:= sPath&「\」&sFile'嘗試'Set oWB = Workbooks.Open(Filename:= sPath&「\」&sFile)'然後修改你的宏把wb作爲參數,所以'exportSheetsToText()'變成'Sub exportSheetsToText(wb as workbook)''完成這一步。不要在'exportSheetsToText()'中使用Activeworkbook。改用'wb'。 –
是所有** xlsx **文件的擴展名* .xlsx * –
@Philip - 是的。我從Windows資源管理器上下文菜單中創建了一些準系統「新Microsoft Excel Worksheet.xlsx」文件,並使用幾列「RAND()」填充它們。 –