【发布时间】:2017-10-26 05:08:22
【问题描述】:
我正在编写一个脚本,该脚本使用 MS Project 文件中的数据填充 Excel 电子表格。我希望脚本能够识别 MS Project 列的标题名称,因为我有许多具有不同名称的自定义列(自定义数字字段填充有不同的名称)
下面的代码是我的尝试,但是在将任务列标题的值写入工作表时出现错误,我在这里做错了吗?
Sub PopulateSheet()
Dim Proj As MSProject.Application
Dim NewProj As MSProject.Project
Dim t As MSProject.Task
Dim xl as workbook
Dim s as worksheet
Dim Newsheet as worksheet
Set Xl = ThisWorkbook
BookNam = Xl.Name
Set Newsheet = Xl.Worksheets.Add
'Code to find and open project files
Set Proj = New MSProject.Application
MsgBox ("Please Select MS Project File for Quality Checking")
'Select Project File
FileOpenType = Application.GetOpenFilename( _
FileFilter:="MS Project Files (*.mpp), *.mpp", _
Title:="Select MS Project file", _
MultiSelect:=False)
'Detect if File is selected, if not then stop code
If FileOpenType = False Then
MsgBox ("You Havent Selected a File")
Exit Sub
End If
'Write the FileOpenType variant to two separate strings
NewProjFilePath = Left$(FileOpenType, InStrRev(FileOpenType, "\"))
NewProjFileName = Mid$(FileOpenType, InStrRev(FileOpenType, "\") + 1)
Newsheet.Name = NewProjFileName
Set s = Newsheet
'Populate spreadsheet header row with column titles from MS Project
s.Range("A1").Value = t.Number1 ***<-- Error '91' - Object variable or With block variable not set***
End Sub
【问题讨论】:
-
您在代码中的哪个位置设置了
t?比如你可以使用Set t = ActiveCell.Task,然后读取t.Number1的值 -
我按照你的建议做了,它用任务的内容而不是列标题填充了单元格。也许我使用了不正确的对象?
-
你读过我的答案和代码deblow吗?它是否按您的预期工作?
-
我试过了,它没有返回 MS Project 中列标题的名称,而是返回列行中的值,所以它不是我要找的。span>
-
你试过我下面的代码了吗?整个?将其复制到新模块中,看看它是否按预期工作
标签: excel vba ms-project