我无法弄清楚.FieldName

时间:2014-12-08 17:14:53

标签: excel vbscript

我正在尝试创建我的第一个创建Excel电子表格的VBScript。

我从Excel宏中获得了大部分代码,但项目已经改变,所以现在VBScript需要在外面生存。

我在rStart = .Range上崩溃,但我将代码更改为

 Set rStart = objExcel.Range("A1")

现在我崩溃了 此外,如果有人可以解释为什么一些代码以.ColumnWidth,.Range,.Cells

开头

我查了一些这些东西,它可以来自很多地方。不知道如何确定哪一个。

例如

.Range可以来自Excel.Application或Excel.Application.AutoFilter或Global.Range等。

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
objWorkbook.SaveAs(strFileName)

Dim lMonth 'As Variant
Dim strMonth 'As String
Dim rStart 'As Range
Dim strAddress 'As String
Dim rCell 'As Range
Dim lDays 'As Long
Dim dDate 'As Date

'Add new sheet and format
'Worksheets.Add
objExcel.Worksheets.Add
'ActiveWindow.DisplayGridlines = False
objExcel.ActiveWindow.DisplayGridlines = False
With objExcel.Cells
    .ColumnWidth = 6
    .Font.Size = 8
End With

'Create the Month headings
For lMonth = 1 To 4
    Select Case lMonth
        Case 1
        strMonth = "January"
        Set rStart = .Range("A1") 
        Case 2
        strMonth = "April"
        Set rStart = .Range("A8")
        Case 3
        strMonth = "July"
        Set rStart = .Range("A15")
        Case 4
        strMonth = "October"
        Set rStart = .Range("A22")
    End Select  

    'Merge, AutoFill and align months       
    With rStart         
        rStart.Value = strMonth
        .HorizontalAlignment = xlCenter // Crashing here
        .Interior.ColorIndex = 6        
        .Font.Bold = True           
        With .Range("A1:G1")                
            .Merge              
            .BorderAround xlContinuous              
        End With            
        .Range("A1:G1").AutoFill Destination=.Range("A1:U1")            
    End With        
Next

我尝试过使用

 rStart.HorizonalAlignment = xlCenter
 objExcel.Range.HorizontalAlignment = xlCenter

我正在尝试创建一个外部VBScript,它将创建一个Excel文件(Excel文档中没有模块宏或VBA项目)。

错误消息显示"无法设置Range类的Horizo​​ntalAlignment属性"

2 个答案:

答案 0 :(得分:4)

通过intertrop访问excel时,你需要记住你不再能访问excel中设置的excel常量,因此你必须使用分配给这些常量的值或自己声明这些常量。

Excel Constants enumeration

在代码顶部添加常量。

Const xlCenter = -4108

答案 1 :(得分:1)

鉴于这是在vbscript中,假设您已导入Excel命名空间,请尝试:

rStart.HorizonalAlignment = Constants.xlCenter

点上符号'你提到的。

在面向对象语言中,对象具有属于它们的方法和属性。操作代码要求每个方法/属性都要正确,合格。到它的父母'宾语。因此,例如,单元格中的值可以是完全合格的'即:

objExcel.Workbooks("MyWorkbook").Sheets("MySheet").Range("MyRange").Value = 10

您已在许多地方的代码中使用过这种表示法。

您可以使用With.. End With结构在特定对象上实现多个语句。在这样做时,您可以参考“父母”和“父母”。使用短格式(句号)因此,在上面的简单示例中:

With objExcel.Workbooks("MyWorkbook").Sheets("MySheet").Range("MyRange")
    .value = 10
    .HorizontalAlignment = Constants.xlCenter
End With 

在这里查看Microsoft reference for With

对象的可用性及其各自的方法和属性可以在相应的对象模型中找到。您可以开始exploration of the Excel object model here。例如,如果您使用的是Word或Outlook,则需要引用它们各自的对象模型。

这可以帮助您理顺一些代码并指出作为第一个呼叫端口的关键初始参考源。此VBScript Language Reference也可能是您的有用资源。