2013-02-07 89 views
0

在Excel 2010中記錄的Excel宏,我有一個要求用戶點擊移動或複製到新的工作簿,以然後運行在新的工作簿下面的語句之後:使用工作簿中有一個變化的名稱

Sub CSAColorFormattingSSRS2008() 
     ActiveWorkbook.Colors = Workbooks("Book4").Colors 
End Sub 

問題是「Book4」是工作表來自的以前的工作簿,但此工作簿名稱可能會更改。有沒有辦法使用您正在複製的工作簿名稱進行更改?我正在嘗試創建一個按鈕來爲每個人運行這個宏,但所有過去的書名總是不同的。

+0

你可以創建一個程序來設置你想要的顏色,然後調用'ActiveWorkbook'? –

+0

這實際上是針對包含不同列和數據的多個不同工作簿。我實際上在做的是使用SSRS 2008並嘗試修復由於將表單複製到另一個工作簿而導致的顏色錯誤。 – mameesh

回答

1

你可以做這樣的事情,其中​​的按鈕做他們的複製操作,然後設置顏色。

Option Explicit 

Sub CopySetColor() 
Dim strWkb As String, strSheet As String 
strWkb = ThisWorkbook.Name 
strSheet = ActiveSheet.Name 

'get Workbook name to copy to -> ensure that only 2 workbooks are open, this and the one you want to copy to 
Dim wkb As Workbook, wkbCopyTo As Workbook 

For Each wkb In Workbooks 

    If wkb.Name <> strWkb Then 

     Set wkbCopyTo = wkb 
     Exit For 

    End If 

Next 

Sheets(strSheet).Copy Before:=wkbCopyTo.Sheets(1) 

CSAColorFormattingSSRS2008 strWkb 

End Sub 

Sub CSAColorFormattingSSRS2008(strName As String) 

     ActiveWorkbook.Colors = Workbooks(strName).Colors 

End Sub 
+0

我需要實際上手動右鍵單擊工作表選項卡並進行移動或複製,以便我可以選擇我想要的新工作簿。當我運行它時,它將工作表複製到新的工作簿中,但我無法選擇哪一個。是否有可能做到這一點,並選擇你想要複製的工作簿?複製到的工作簿始終與其他工作簿一起打開,但工作簿又可以是任何名稱。 – mameesh

+1

@mameesh,看我的編輯。如果您可以確保只有兩個打開的工作簿是從中複製的工作簿,那麼它將很有用。我沒有把它放在代碼中,但是你可以用'Workbooks.Count'來檢查並使用消息框告訴用戶關閉所有其他工作簿。我意識到這很醜陋,但如果你有超過1個其他工作簿打開,它變得更加困難。您可以使用自己的創造力來找到一種方法,讓用戶選擇哪個工作簿,如果有多個工作簿...就像使用表單上的列表框或其他東西。 –

+0

這就是我所需要的,謝謝 – mameesh

相關問題