VBA Excel:使标头取决于文件名

时间:2015-05-26 11:16:58

标签: excel vba excel-vba header filenames

我创建了一个宏,负责处理文档的布局,打印属性等。 现在我想添加一种方法来使头文件依赖于文件名。如果在文件名中找到W,则标题应为"每周报告",在任何其他情况下,它应该是"每日报告"。

这是应该处理的大块:

If Filename.Contains("W") Then GoTo Week Else GoTo Day
Week:
    With ActiveSheet.PageSetup
    .LeftHeader = "Weekly report"
    End With
GoTo JumpToThere
Day:
    With ActiveSheet.PageSetup
    .LeftHeader = "Daily report"
    End With
JumpToThere:

(然后代码继续)

我不断收到"运行时错误''对象需要" IF命令出错。 很抱歉打扰,我真的不太了解编码...

2 个答案:

答案 0 :(得分:0)

代码不包含Filename声明和分配,但如果它是string,那么您应该替换:

If Filename.Contains("W") Then

使用

If Filename Like "*W*" Then 

您还可以简化if声明中的逻辑,并摆脱GoTo

With ActiveSheet.PageSetup
    If Filename Like "*W*" Then
      .LeftHeader = "Weekly report"
    Else
      .LeftHeader = "Daily report"
    End If
End With

编辑:

您可以使用开箱即用的Filename属性。如果要比较活动工作簿的名称,则应使用:

If ActiveWorkbook.Name Like "*W*" Then

答案 1 :(得分:0)

请确保您已声明"文件名"并在"文件名"正确的名字即将来临。然后尝试这样 -

If InStr(Filename, "W") > 0 Then GoTo Week Else GoTo Day
    Week:
        With ActiveSheet.PageSetup
        .LeftHeader = "Weekly report"
        End With
    GoTo JumpToThere
    Day:
        With ActiveSheet.PageSetup
        .LeftHeader = "Daily report"
        End With
    JumpToThere: