本帖最后由 huchuanxing 于 2016-11-24 14:13 编辑
以下是导出工作簿内各工作表成单个文件的VBA代码,把它放在工作簿里能导出工作表成单个文件,当我把代码放在加载宏里运行时,不会导出工作簿里的工作表,而是导出了加载宏里的工作表,且保存的路径是在加载宏文件夹,要使它在加载宏里能正常运行,应如何修改代码?
Sub 导出工作表() On Error Resume Next Dim FolderPath As String, FolderNameAs String, BN As String Dim ReturnValue As Integer BN = ActiveWorkbook.Name FolderPath = ThisWorkbook.Path FolderName = Mid(BN, 1, InStrRev(BN,".", Len(BN)) - 1) Dim MyFile As Object Set MyFile =CreateObject("Scripting.FileSystemObject") If MyFile.folderexists(FolderPath& "\" & FolderName & "-Saved") Then ReturnValue =MsgBox("文件夹已存在,是否更新内容?",vbOKCancel, "Caution!") If ReturnValue = 2 ThenExit Sub Else MyFile.CreateFolder(FolderPath & "\" & FolderName & "-Saved") Set MyFile = Nothing End If Application.ScreenUpdating = False Application.DisplayAlerts = False Dim i As Integer For i = 1 To Sheets.Count Set Wk = Workbooks.Add Workbooks(BN).Sheets(i).Copy before:=Wk.Worksheets("Sheet1") Wk.SaveAs FolderPath& "\" & FolderName & "-Saved\" &ThisWorkbook.Sheets(i).Name Wk.Close Next i Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
Sub 导出工作表()
On Error Resume Next
Dim FolderPath As String, FolderName As String, BN As String
Dim ReturnValue As Integer, Wb As Workbook
BN = ActiveWorkbook.Name
Set Wb = ActiveWorkbook
FolderPath = Wb.Path 'ThisWorkbook.Path
FolderName = Mid(BN, 1, InStrRev(BN, ".", Len(BN)) - 1)
Dim MyFile As Object
Set MyFile = CreateObject("Scripting.FileSystemObject")
If MyFile.folderexists(FolderPath & "\" & FolderName & "-Saved") Then
ReturnValue = MsgBox("文件夹已存在,是否更新内容?", vbOKCancel, "Caution!")
If ReturnValue = 2 Then Exit Sub
Else
MyFile.CreateFolder (FolderPath & "\" & FolderName & "-Saved")
Set MyFile = Nothing
End If
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim i As Integer
For i = 1 To Sheets.Count
Set wk = Workbooks.Add
Workbooks(BN).Sheets(i).Copy 'before:=wk.Worksheets("Sheet1")
ActiveWorkbook.SaveAs FolderPath & "\" & FolderName & "-Saved\" & Wb.Sheets(i).Name
ActiveWorkbook.Close
wk.Close
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
2楼老师可能是这个意思,我测试,是能用的
|