2014-09-26 125 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(“标题”)=“我的标题名为”