我正在研究“ Word文档”,其中选择了文本并将其转换为变量,例如CCC。
我想将此CCC转移到下一个空行中的“ Excel Workbook” Sheet1。
我正在尝试下面的代码,但似乎什么也没做:
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
答案 0 :(得分:0)
由于发布的代码无法编译,因此您需要处理很多事情。
在模块开头插入“显式选项”。这将迫使您在使用变量之前先声明它们。
在VBA IDE中,转到Tools.Options.Editor,并确保选中“代码设置”中的所有框。这样可以确保在运行代码之前突出显示您在代码用法中遇到的任何错误。
CreateObject(“ Excel.Application”)导致后期绑定。您可能希望早期绑定从智能感知中获得最佳功能。因此,在VBA IDE中,转到Tools.References并确保选中“ Microsoft Excel 16.0 Object Library”复选框。
然后您可以替换
Set MyXL = CreateObject("Excel.Application")
使用
Set MyXL = New Excel.Application
正在引用父excel应用程序,因此不需要。只需使用ExWB。在“应用程序”之后,通过回溯到父应用程序再输入任何代码。将引用该应用程序的活动工作簿,该工作簿可能不是您正在使用的工作簿。
Sheet1不存在(尽管您已经发布并显示它是'Sheet1'的名称)。使用括号并以整数或工作表/工作表名称作为索引来索引工作表和工作表集合。
set my_ws = ExWb.WorkSheets(1)
或
set my_ws = ExWb.WorkSheets("Sheet1")
您会注意到我已将Sheet1引用更改为工作表。 (您还应该查找Worksheets和Sheets之间的差异,因为两者在Excel中并不相同)我进行此更改的原因是Sheets对象不支持.Rows属性。因此,启用了智能感知功能的excel不会让您输入代码
ExWb.Sheets("Sheet1").Cells
,因为当您键入时,不会弹出任何内容。在Sheets(“ Sheet1”)之后。
这是Word应用程序中的无效语句。它只能在Excel应用程序的上下文中使用。因为您在Word中工作,所以任何不合格的对Application的引用都是对Word Application的引用。你需要说
my_count = MyXL.Rows.Count
即使如此,上面的代码也引用了ActiveWorksheet,它可能是也可能不是您使用.Sheets(“ Sheet1”)引用的表。更改
.Sheet1.Cells(Rows.Count, 1)
到
.WorkSheets("Sheet1").Cells(.Rows.count, 1)
注意“。”在“行”前面表示您实际上是在说
.WorkSheets("Sheet1").Cells(ExWb.Sheets("Sheet1").Rows.Count,1)
即正确指定要使用的工作表。
这意味着从Word文档中获取的文本是一个excel公式,并且您正在单元格中输入一个公式。您的帖子暗示您只想插入文字。因此,您可能需要将最后一行更改为
.Cells(.Rows.Count,1).End(xlUp).Offset(1,0)= CCC.Text
7 F1键
在VBA IDE中,将光标置于某个关键字上,然后按F1键将打开该关键字的MS帮助页面。
以上内容有很多要摘录的内容,但这应该有助于弄清为什么代码无法正常工作。
祝您一切顺利。