Перенос текста из Word в Excel в следующей доступной строке - PullRequest
0 голосов
/ 30 октября 2018

Я работаю над «Документом 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

1 Ответ

0 голосов
/ 30 октября 2018

Есть ряд вещей, к которым вам нужно обратиться, так как опубликованный код не будет компилироваться.

  1. Вставьте «опция» в начале модуля. Это заставит вас объявлять переменные перед их использованием.

  2. В VBA IDE перейдите в Tools.Options.Editor и убедитесь, что все поля в «Настройках кода» отмечены. Это гарантирует, что любые ошибки, которые вы делаете в своем использовании кода, будут выделены до того, как вы запустите код.

  3. CreateObject ("Excel.Application") приводит к позднему связыванию. Возможно, вы хотите раннего связывания, чтобы получить лучшую функциональность от intellisense. Поэтому в среде IDE VBA перейдите на страницу Tools.References и убедитесь, что установлен флажок «Библиотека объектов Microsoft Excel 16.0».

Затем вы можете заменить

Set MyXL = CreateObject("Excel.Application")

с

Set MyXL = New Excel.Application
  1. ExWB.Application

Возвращается к родительскому приложению Excel и не требуется. Просто используйте ExWB. Возвращаясь к родительскому приложению, любой дальнейший код после «Приложения». будет ссылаться на активную рабочую книгу приложения, которая может не являться рабочей книгой, в которой вы работаете.

  1. Лист1 не существует (хотя вы уже опубликовали и показали, что это имя «Лист1»). Коллекции листов и рабочих таблиц индексируются с использованием скобок и целого числа или имени рабочего листа / листа в качестве индекса.

    set my_ws = ExWb.WorkSheets (1)

или

set my_ws = ExWb.WorkSheets("Sheet1")

Вы заметите, что я изменил ссылку Sheet1 на Worksheets. (Вам также следует искать разницу между рабочими листами и листами, так как они не совпадают в Excel). Причина, по которой я сделал это изменение, заключается в том, что объект Sheets не поддерживает свойство .Rows. Так что excel, с включенным intellisense, не позволит вам ввести код

ExWb.Sheets("Sheet1").Cells

, так как ничего не появится при вводе. после листов ("Sheet1").

  1. Rows.Count

Это недопустимое утверждение в приложении Word. Он может использоваться только в контексте приложения Excel. Поскольку вы работаете в Word, любая безусловная ссылка на Приложение - это Приложение Word. Вам нужно будет сказать

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)

т.е. правильно указав рабочий лист, с которым вы хотите работать.

  1. FormulaR1C1

Это означает, что текст, который вы получаете из документа Word, является формулой Excel и что вы вводите формулу в свою ячейку. Ваш пост подразумевает, что вы просто хотите вставить текст. Поэтому вам может понадобиться, чтобы ваша последняя строка изменилась на

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

7 Клавиша F1

В VBA IDE, поместив курсор на ключевое слово и нажав клавишу F1, откроется страница справки MS для этого ключевого слова.

Есть много чего переварить, но это должно помочь прояснить, почему ваш код не работает.

Удачи в ваших начинаниях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...