Как использовать Word 2007 VBA для копирования всего текста и замены его в документе CSV для строк

Как использовать Word 2007 (или Word 2003) VBA для копирования всего текста и вставки его в документ csv с четырьмя строками. Например: «Я люблю мир». Это будет:

I -    Line 1 - page 1 - Paragraph 1
love - Line 1 - page 1 - Paragraph 1
the -  Line 1 - page 1 - Paragraph 1
word - Line 1 - page 1 - Paragraph 1

person jbofelli    schedule 06.07.2011    source источник
comment
Скопировать весь текст из документа Word или откуда-то еще? Вы упоминаете CSV-файл с одним столбцом, но описание вашей таблицы Access похоже на несколько столбцов ...   -  person Tim Williams    schedule 07.07.2011
comment
Имейте в виду, что при использовании базы данных MS Access максимальное количество столбцов в таблице составляет 255 (насколько я помню).   -  person Christoph Jüngling    schedule 07.07.2011


Ответы (1)


Следующий код должен выводиться в файл .csv.

Примечание! Сначала добавьте ссылку на dll среды выполнения сценариев Microsoft (scrrun.dll):

Из окна VBA Tools-> References-> Check Microsoft Scripting Runtime dll

Вот код, который работает (вы можете создать макрос и поместить в него код):

Dim wordsArray, arrayElement
Dim delimiter As String
Dim fileName As String
Dim fso As FileSystemObject
Dim outputFile As textStream

'select all document's content
ActiveDocument.Select

'provide delimiter
delimiter = InputBox("Please enter delimiter to use")

'split the selected content and place it inside the array
wordsArray = Split(Selection.Text, delimiter)

'generate output file name
fileName = "C:\Output.csv"

'create new FileSystem object and open text stream to write to
Set fs = New FileSystemObject
Set outputFile = fs.CreateTextFile(fileName, True) 'note file will be overwritten

'iterate through array and write to the file
For Each arrayElement In wordsArray
    'Use the following code to place each word into separate COLUMN
    'outputFile.Write (arrayElement) & ","

    'Use the following code to place each word into separate ROW
    outputFile.WriteLine (arrayElement)
Next

'close output stream
outputFile.Close

Вы можете массировать его в зависимости от ваших потребностей ...

Надеюсь это поможет.

person Igor Turman    schedule 06.07.2011
comment
Этот код не помог. Этот код вставляет весь текст (равный исходному текстовому файлу) в файл csv. Каждая строка по одному слову. - person jbofelli; 07.07.2011
comment
Код действительно делает то, о чем вы просили. Это будет похоже на: первый столбец (I); вторая колонка (любовь) .. и т. д. Учитывая всю полемику в вашем вопросе, я подумал, что последние слова были именно тем, что вы искали ... - person Igor Turman; 07.07.2011
comment
Эврика !!! Код сработал. Я внес небольшие изменения в ваш код: 1) Я отключил 'delimiter = InputBox (Пожалуйста, введите разделитель для использования)'; 2) Измените на 'wordsArray = Split (Selection.Text,)'; 3) Измените на 'outputFile.Write ( arrayElement) и vbCrLf '. - person jbofelli; 07.07.2011
comment
@jbofelli Не могли бы вы отметить мой ответ как лучший, поскольку он сработал и сделал то, о чем вы просили? Однако одно замечание. Строка НЕ ​​ЯВЛЯЕТСЯ столбцом. Когда вы добавляете символы возврата каретки и / или перевода строки в конец строки (vbCrLf), вы фактически создаете новую строку ROW, а не COLUMN ... - person Igor Turman; 07.07.2011
comment
@jbofelli Вы разместили свой второй вопрос в качестве ответа. Это не позволяет некоторым пользователям (в том числе и мне) отвечать на него из-за отсутствия очков репутации. Я бы предложил опубликовать его как отдельный вопрос по stackoverflow. - person Igor Turman; 07.07.2011
comment
Извините, мой английский. Исправляя сказанное ранее, я имею в виду строку, а не столбец. Выложу отдельный вопрос. - person jbofelli; 08.07.2011
comment
@jbofelli Спасибо! не могли бы вы отметить его как принятый ответ, щелкнув контур флажка слева от ответа. Еще раз спасибо! - person Igor Turman; 08.07.2011