Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Word 2010宏不工作_Excel_Vba_Ms Word - Fatal编程技术网

Excel Word 2010宏不工作

Excel Word 2010宏不工作,excel,vba,ms-word,Excel,Vba,Ms Word,我有一个Word文档,可以从Excel电子表格导入数据。两个文件都不是我的;我继承了这个问题。在以前版本的Excel电子表格中,数据位于Q列至T列。在新版本中,数据位于R列至U列。使用的代码如下。当我运行文档的早期版本时,没有问题。当我使用新文档导入时,它会立即中断,并显示以下错误代码: 5941-请求的集合成员不存在 调试器突出显示问题代码ElseIf cel.Value”“。新代码如下。(除上述范围外,工作的旧代码完全相同) 有什么想法吗 提前谢谢 Sub ImportComplianceR

我有一个Word文档,可以从Excel电子表格导入数据。两个文件都不是我的;我继承了这个问题。在以前版本的Excel电子表格中,数据位于Q列至T列。在新版本中,数据位于R列至U列。使用的代码如下。当我运行文档的早期版本时,没有问题。当我使用新文档导入时,它会立即中断,并显示以下错误代码:

5941-请求的集合成员不存在

调试器突出显示问题代码
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
Sub-ImportComplianceResults()
Dim fd作为文件对话框,oApp作为Excel.Application,oWb作为Excel.工作簿,iWs作为整数,rData作为Excel.Range
Set fd=Application.FileDialog(msoFileDialogFilePicker)
有fd
'打开模态窗口
.Title=“选择要导入的文件:”
.InitialFileName=“X:\Template\”
.过滤器
.Filters.Add“Excel文件”,“*.xlsx”
.InitialView=msoFileDialogViewList
.AllowMultiSelect=False
如果.Show=-1,则
设置oApp=New Excel.Application
设置oWb=oApp.Workbooks.Open(.SelectedItems(1),True)
'检查所选文件中的工作表
对于oWb.工作表中的每个ws
如果ws.Name=“Compliance Results”或ws.Name=“Résultats de conformité”,则iWs=ws.Index
下一个ws
如果iWs>0,则
设置rData=oWb.工作表(iWs).范围(“R10:T10、R13:U15、R17:U17、R19:U19、R21:U21、R23:U23、R25:U25、R27:U27、R29:U29、R32:U34、R37:U39”)
使用ActiveDocument
对于rData中的每个cel
如果IsError(cel.Value)那么
.选择ContentControlsByTag(单元格地址)。项(1)。Range.Text=“#N/A”
***ElseIf cel.Value“”则
.SelectContentControlsByTag(cel.Address)。项(1)。Range.Text=格式(cel.Value,cel.NumberFormat)***
其他的
.SelectContentControlsByTag(单元格地址)。项(1)。Range.Text=“”
如果结束
下一个细胞
以
MsgBox“数据导入成功”,vbInformation
其他的
MsgBox“所选文件中不存在数据”&vbCr&“导入已取消”,vbCritical
如果结束
关闭错误
“清理资源
设置rData=Nothing
设置oWb=Nothing
设置oApp=Nothing
其他的
MsgBox“导入已取消”,vbCritical
如果结束
以
端接头
尝试使用:

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
...
。。。
其他单元格文本“”则
。选择ContentControlsByTag(单元格地址)。项(1)。Range.Text=cel.Text
...

谢谢你的建议!当我这么做的时候,它在那个点上断裂了。我所做的是将范围修改回原来的方式,并且有效(请注意,数据不在正确的位置),但当我进行此修改时,它不起作用:(谢谢David!我尝试了你的建议,但它没有破坏任何东西,这很好。但是,一旦我尝试使用正确的范围再次导入,它就不再起作用了。我想,在范围内我只看到了一些我没有看到的东西。word文档中总共有4个宏,这可能是其中一个问题吗其他3个是导致问题的原因,而它只是在这个特定的位置断裂?