2014-09-26 97 views
0

首先,我是一個總的Excel互操作性noob。設置excel電子表格的「標題」屬性

我試圖從單元格中獲取日期,然後在文檔保存之前設置文檔的標題爲日期的月份。這是我的代碼:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    ThisWorkbook.Title = DateTime.Month(ThisWorkbook.Sheets("Sheet1").Cell("A10")) 
End Sub 

我不確定任何工作。我在代碼上設置了一個斷點,但是我不能「運行」它,因爲它不是一個宏,而是一個事件處理程序,所以我認爲斷點不會起作用。我沒有得到任何錯誤。我甚至不知道ThisWorkbook.Title是我想要的,我甚至不知道要從單元中獲取月份。

+0

你想要的結果是什麼宏是?您是否嘗試更改保存文檔的文件名? – 2014-09-26 19:58:49

+0

因此,您只需要位於單元格A10中的日期的月份部分?日期的格式是什麼,即MM/DD/YY還是? – DyRuss 2014-09-26 20:00:41

+0

@ jbarker2160 @DyRuss單元格A10有日期。這只是用戶在電子表格中輸入日期的單元格。當您進入Excel中的「文件」菜單時,頁面右側是「屬性」列表。我希望'Title'屬性包含單元格中日期的月份文本。所以如果這個單元格是'8/15/2014',我希望'Title'屬性被設置爲'August' – Pete 2014-09-26 21:03:15

回答

0

文檔的標題是「內置」屬性 - 這是當您右鍵單擊文件並查看屬性時顯示的信息。
Propery page of excel sheet

電子表格的名稱設置上保存,所以你會希望將文件保存爲一個新的名字,如果你想看到文件上的日期本身

A碼這樣的事情應該給你結果你的願望:
(注意,此代碼是VBA,所以它可能需要一些調整的互操作工作

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

Dim FilePath As String 
Dim varName As String 

On Error GoTo ErrorHandler 

' This disables all Excel events. 
Application.EnableEvents = False 

' disable the default behaviour of the save like so: 
Cancel = True 

'you can leave this blank if you want it to save in the default directory 
FilePath = "C:\The path\To\The File" 

varName = Format(ThisWorkbook.Sheets("Sheet1").Cell("A10"),"mmmm") 

ActiveWorkbook.SaveAs Filename:=FilePath & varName & ".xlsx" 

ErrorExit: 
' This makes sure events get turned back on again no matter what. 
Application.EnableEvents = True 
Exit Sub 

ErrorHandler: 
MsgBox "No value submitted - File Not Saved" 
Resume ErrorExit 
End Sub 
+0

我不知道你的意思是'Title'是一個「內置屬性」。這是辦公文件的財產。並非所有文件。我不在乎文件的名稱。我關心'Title'屬性。 – Pete 2014-09-29 13:08:06

0

我認爲這將有助於你的目的:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Application.Caption = MonthName(Month(ThisWorkbook.Sheets("Sheet1").Range("C10").Value)) 
End Sub 

的另一件事是:有下一次打開工作簿時

這個稱號不會。所以:

Private Sub Workbook_Open() 
Application.Caption = MonthName(Month(ThisWorkbook.Sheets("Sheet1").Range("C10").Value)) 
ThisWorkbook.Save 
End Sub 
+0

我已經添加了這些宏,但沒有任何反應。標題不會被設置。據我所知,「Workbook_BeforeSave」和「Workbook_Open」事件沒有被調用。我在'BeforeSave'的第一行添加了一個'MsgBox'調用,但它永遠不會顯示。 – Pete 2014-09-29 13:03:16

+0

你在哪裏添加這些?應該添加到你的vba項目的** ThisWorkbook **下。我已經測試過這些,發現之前確定發佈。 – ZAT 2014-09-29 13:27:15

+0

啊,那是問題所在。謝謝。但另一個問題是我想要設置的是「ThisWorkbook.Title」,而不是「Application.Caption」。如果你會做出更正,我會接受你的答案。謝謝。 – Pete 2014-09-29 13:35:14

1

要更改內置的屬性在Excel中的「標題」:

ActiveWorkbook.BuiltinDocumentProperties(「標題」)=「我的標題名爲」