2015-07-01 24 views
0

我是使用VBA代碼的新手。我有一個手動創建表以及數據透視表的工作簿。對於本書中的每個工作表,我想將數據硬編碼到一個新的工作簿中,並將其保存爲硬編碼工作表的名稱。我有下面的代碼。它正在保存每個工作簿,但工作簿的內容不正確。它每次都在原始工作簿中對第一張工作表的內容進行硬編碼。我試着在代碼的最後設置下一個ActiveSheet,但它失敗了。我提到我不是程序員嗎?請幫忙!包含數據透視表的分裂和硬編碼工作表

Sub Splitbook() 

Dim path As String 
Dim dt As String 
path = CreateObject("WScript.Shell").specialfolders("Desktop") & "\SLF\ " 
Call Shell("explorer.exe" & " " & path, vbNormalFocus) 

Dim ws As Worksheet 
For Each ws In ThisWorkbook.Worksheets 
    ActiveSheet.UsedRange.Select 
    Selection.Copy 
    Workbooks.Add 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
    ActiveWorkbook.SaveAs path & ws.Name, Excel.XlFileFormat.xlOpenXMLWorkbook 
    ActiveWorkbook.Close SaveChanges:=False 
Next ws 
End Sub 
+0

好的。你的問題是什麼?你的代碼有什麼問題?你爲什麼要叫瀏覽器應用程序? –

回答

0

你已經擁有的代碼循環通過你的工作簿的表,所以你不需要從ActiveSheet但是從ws工作表變量拷貝。

您也不需要使用Select來複制數據。

Dim ws As Worksheet 
Dim newBook As Workbook 
For Each ws In ThisWorkbook.Worksheets 
    ws.UsedRange.Copy 
    Set newBook = Workbooks.Add 
    With newBook.Worksheets(1).Range("A1") 
     .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 
     .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
      SkipBlanks:=False, Transpose:=False 
    End With 
    newBook.SaveAs Path & ws.Name, Excel.XlFileFormat.xlOpenXMLWorkbook 
    newBook.Close SaveChanges:=False 
Next ws 
+0

工作完美。這解決了另一個問題,我無法使用.Cells()。公式= .Cells()。Value)在透視表上使用Set/With。謝謝你的幫助!非常感激 – mcpepster

相關問題