Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
将下一行中的文字从Word传输到Excel可用_Excel_Vba_Ms Word - Fatal编程技术网

将下一行中的文字从Word传输到Excel可用

将下一行中的文字从Word传输到Excel可用,excel,vba,ms-word,Excel,Vba,Ms Word,我正在研究“Word文档”,其中选择一个文本并将其转换为变量,比如CCC 我想将此CCC转移到下一空行的“Excel工作簿”表1中 我正在尝试以下代码,但它似乎没有做任何事情: Set CCC= Selection.Range.PARAGRAPHS(1).Range Set MyXL = CreateObject("Excel.Application") MyXL.Visible = True Set eXwb = MyXL.Workbooks.Open("C:\Users\dell\Deskt

我正在研究“Word文档”,其中选择一个文本并将其转换为变量,比如CCC

我想将此CCC转移到下一空行的“Excel工作簿”表1中

我正在尝试以下代码,但它似乎没有做任何事情:

Set CCC= Selection.Range.PARAGRAPHS(1).Range
Set MyXL = CreateObject("Excel.Application")
MyXL.Visible = True
Set eXwb = MyXL.Workbooks.Open("C:\Users\dell\Desktop\WEBD\LIST.xlsm")
With eXwb.Application
        .Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).FormulaR1C1 = CCC
End With
在此之前,我使用了以下工作正常的代码,我希望对其进行改进:

 With eXwb.Application
     .Sheets("Sheet1").Select
     .ActiveCell.FormulaR1C1 = CCC
     .ActiveCell.Offset(1, 0).Range("A1").Select
 End With

由于发布的代码无法编译,因此需要解决许多问题

  • 在模块开头插入“option explicit”。这将迫使您在使用变量之前声明它们

  • 在VBA IDE的go Tools.Options.Editor中,并确保勾选了“代码设置”中的所有框。这将确保在运行代码之前突出显示您在代码使用中犯的任何错误

  • CreateObject(“Excel.Application”)会导致后期绑定。您可能希望早期绑定从intellisense获得最佳功能。因此,请在VBA IDE中转到Tools.References,并确保选中“Microsoft Excel 16.0对象库”复选框

  • 然后,您可以替换

    Set MyXL = CreateObject("Excel.Application")
    

  • ExWB.应用程序
  • 正在引用回父excel应用程序,不需要。只需使用ExWB。通过引用回父应用程序,“application.”之后的任何其他代码都将引用应用程序的activeworkbook,该应用程序可能不是您正在使用的工作簿

  • Sheet1不存在(尽管您已经发布并显示它是“Sheet1”的名称)。工作表和工作表集合使用括号和整数或工作表/工作表名称作为索引编制索引

    设置我的工作表(1)

  • 您会注意到我已将Sheet1引用更改为工作表。(您还应该查找工作表和工作表之间的差异,因为它们在Excel中不相同)我进行此更改的原因是工作表对象不支持.Rows属性。因此,启用intellisense的excel将不允许您输入代码

    ExWb.Sheets("Sheet1").Cells
    
    因为在您键入时不会弹出任何内容。后页(“第1页”)

  • 行,数一数
  • 这是Word应用程序中的无效语句。它只能在Excel应用程序的上下文中使用。因为您使用的是Word,所以对应用程序的任何无保留引用都是对Word应用程序的引用。你需要说

    my_count = MyXL.Rows.Count
    
    即使如此,上面的代码还是引用了ActiveWorksheet,它可能是也可能不是您正在使用.Sheets(“Sheet1”)引用的工作表。改变

    注意行前面的“.”,这意味着您实际上是在说

    .WorkSheets("Sheet1").Cells(ExWb.Sheets("Sheet1").Rows.Count,1)
    
    i、 e.正确指定要使用的工作表

  • 公式1c1
  • 这意味着您从Word文档中获取的文本是excel公式,并且您正在单元格中输入公式。您的帖子暗示您只想插入文本。因此,您可能需要将最后一行更改为

    .Cells(.Rows.Count,1).End(xlUp).Offset(1,0)=CCC.Text

    7按F1键

    在VBA IDE中,将光标放在关键字上,然后按F1键将打开该关键字的MS帮助页面

    上面有很多东西需要消化,但它应该有助于澄清代码不起作用的原因


    祝你好运。

    我认为应该是
    CCC。Text
    ,因为
    CCC
    是一个单词对象范围。为什么要将变量作为公式1c1输入单元格?您可能希望尝试使用更多不同的步骤,而不是将所有内容都放在一行代码中。然后,你可以一步一步地浏览代码,看看什么是什么。当你以编程方式创建excel时,默认情况下它是不可见的。在设置MyXL行后添加MyXL.visible=True。另外,应该是eXwb,那里不应该有应用程序。@L42我尝试了
    CCC.Text
    仍然没有发生任何事情@teylyn那么我应该用什么来代替
    公式1c1
    @Harassedad使用了
    eXwb.visible=True
    仍然是same@Muhammad比拉尔:交叉张贴在:。对于交叉发帖礼仪,请阅读:我根据您的每个建议制定了这个
    。工作表(“Sheet1”)。单元格(eXwb.Sheets(“Sheet1”)。行数,1)。结束(xlUp)。偏移量(1,0)=CCC.Text
    ,效果很好。现在我想知道是否可以使用1行,然后向前移动,因为这段代码跳过了第一行。我认为您需要更好地理解行和End方法的结果。我的朋友。当你更好地理解时,你将能够自己解决问题,或者提出更具体的问题。
    my_count = MyXL.Rows.Count
    
    .Sheet1.Cells(Rows.Count, 1)
    
    .WorkSheets("Sheet1").Cells(.Rows.count, 1)
    
    .WorkSheets("Sheet1").Cells(ExWb.Sheets("Sheet1").Rows.Count,1)