Word 2010macros不起作用

我有一个从Excel电子表格导入数据的Word文档。 这两个文件都不是我的; 我已经inheritance了这个问题。 在以前版本的Excel电子表格中,数据位于Q到T的列中。在新版本中,它位于R到U的列中。所使用的代码如下所示。 当我运行文档的以前版本时,没有问题。 只要我用一个新的文档进行导入,就会破坏这个错误代码:

5941 – 收集的请求的成员不存在

debugging器突出显示了代码ElseIf cel.Value <> ""作为问题。 新的代码如下。 (工作的旧代码是完全一样的,除了如上所述的范围之外)。

有什么想法吗?

提前致谢。

 Sub ImportComplianceResults() Dim fd As FileDialog, oApp As Excel.Application, oWb As Excel.Workbook, iWs As Integer, rData As Excel.Range Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd 'Open modal window .Title = "Select file to import:" .InitialFileName = "X:\Template\" .Filters.Clear .Filters.Add "Excel files", "*.xlsx" .InitialView = msoFileDialogViewList .AllowMultiSelect = False If .Show = -1 Then Set oApp = New Excel.Application Set oWb = oApp.Workbooks.Open(.SelectedItems(1), , True) 'Check for worksheet in selected file For Each ws In oWb.Worksheets If ws.Name = "Compliance Results" Or ws.Name = "Résultats de conformité" Then iWs = ws.Index Next ws If iWs > 0 Then Set rData = oWb.Worksheets(iWs).Range("R10:T10,R13:U15,R17:U17,R19:U19,R21:U21,R23:U23,R25:U25,R27:U27,R29:U29,R32:U34,R37:U39") With ActiveDocument For Each cel In rData If IsError(cel.Value) Then .SelectContentControlsByTag(cel.Address).Item(1).Range.Text = "#N/A" ***ElseIf cel.Value <> "" Then .SelectContentControlsByTag(cel.Address).Item(1).Range.Text = Format(cel.Value, cel.NumberFormat)*** Else .SelectContentControlsByTag(cel.Address).Item(1).Range.Text = " " End If Next cel End With MsgBox "Data imported successfully.", vbInformation Else MsgBox "No data exists in selected file." & vbCr & "Import cancelled.", vbCritical End If oWb.Close False 'Cleanup Resources Set rData = Nothing Set oWb = Nothing Set oApp = Nothing Else MsgBox "Import cancelled.", vbCritical End If End With End Sub 

尝试使用:

 ElseIf Not cel.Value = "" Then .SelectContentControlsByTag(cel.Address).Item(1).Range.Text = Format(cel.Value, cel.NumberFormat) 

一旦你得到了错误控制,只是.Text属性而不是.Value。

 ... ElseIf cel.Text <> "" Then .SelectContentControlsByTag(cel.Address).Item(1).Range.Text = cel.Text ...