Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337

Из Ворда в Ексель сортировка и обратно

29.06.2020, 11:09. Показов 2470. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, есть переменная в макросе Ворда вида
Visual Basic
1
2
3
Dim sText As String
sText = "привет мир"
sText = "привет" & Chr$(13) & "мир" 'то есть с абзацами
как её отдать в Эксель и вернуть с сортировкой
от а до я и наоборот
от наиболее длинной строки в столбце к наиболее короткой и наоборот
при помощи Экселя, закрыть Эксель без вопросов о сохранении? спс
моих знаний хватило только на
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Option Explicit
 
Sub WordExcelWord()
 
'проверить, если Excel уже открыт
'тогда во избежание старта дубля процесса, запускать только новое окно в нём существующем
    Dim objExcel As Variant
    On Error Resume Next
    Set objExcel = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        Set objExcel = CreateObject("Excel.Application")
    End If
 
    objExcel.Visible = True
    objExcel.Workbooks.Add
    Dim sText As String
    sText = "привет мир"
    objExcel.Columns("A") = sText
    objExcel.Columns("A").Sort Key1:=Range("A1"), Order1:=objExcel.xlDescending, Header:=objExcel.xlGuess, _
                               OrderCustom:=1, MatchCase:=False, Orientation:=objExcel.xlTopToBottom, _
                               DataOption1:=objExcel.xlSortNormal
    objExcel.Columns("A").Sort Key1:=Range("A1"), Order1:=objExcel.xlAscending, Header:=objExcel.xlGuess, _
                               OrderCustom:=1, MatchCase:=False, Orientation:=objExcel.xlTopToBottom, _
                               DataOption1:=objExcel.xlSortNormal
 
    'завершаем Excel
    'objExcel.Quit
 
    Set objExcel = Nothing
 
End Sub
не взлетело, но попробовать нужно было.... спс
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.06.2020, 11:09
Ответы с готовыми решениями:

Сортировка столбцов ексель
Добрый день, форумчане, опять нужна ваша помощь, нужно улучшить данный макрос: Sub MMM() arr1 = .CurrentRegion.Value ReDim arr2(1 To...

Сортировка списка по алфавиту о обратно.
Нужно обеспечить сортировку списка в TListBox по алфавиту,против алфавита,а также восстанавливать порядок умолчания.

Что-то не так с Encoding данных туда и обратно: byte в string и обратно в byte
Добрый день, коллеги! Столкнулся с такой проблемой, причём заметил её не сразу (&quot;вроде бы всё работало&quot;). В общем сразу к...

57
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,732
24.01.2021, 17:16
Студворк — интернет-сервис помощи студентам
Ципихович Эндрю, вероятно, Line Input и затем Split по точке с запятой?
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 17:30  [ТС]
Цитата Сообщение от Punkt5 Посмотреть сообщение
Если один файл
один
Цитата Сообщение от Punkt5 Посмотреть сообщение
кодировка ANSI или cp866
утф-8-пока крякозяблы...
подожду ответ Narimanych

Добавлено через 4 минуты
нашёл Текстовый файл с данными 4х3 перевернуть, то есть переделать в 3х4
Цитата Сообщение от Narimanych Посмотреть сообщение
Workbooks.OpenText Filename:="C:\TTT.txt", Origin:=437 _
        , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
        , Space:=False, Other:=False, TrailingMinusNumbers:=True
0
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,732
24.01.2021, 17:32
Вот такое использовал. Перекодирует файлы 1251->UTF8 (можно и другие кодировки) со сменой, если надо, стиля переноса строк.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Call RecodeFile(tmpFile, FN3, "windows-1251", "utf-8", vbCrLf, vbLf) ' перекодировка из ANSI в UTF-8 (сам эксель умеет только UTF-16 и только если через FSO)
 
' --------------------
Private Sub RecodeFile(InpFile As String, OutFile As String, Src As String, Dst As String, xF As String, xD As String)  ' using http://forum.script-coding.com/viewtopic.php?id=1179
   Dim x As Variant, fs As Object, inText As Variant
 
   Set fs = CreateObject("Scripting.FilesystemObject")
   inText = fs.openTextFile(InpFile, 1).readAll()  ' 1 = ForReading
   x = StrConv(inText, Src, Dst)                   ' Recode
   x = Replace(x, xF, xD)                          ' Change new line style
   Call fs.openTextFile(OutFile, 2, True).write(x) ' 2 = ForWriting, True = Create
End Sub
 
' --------------------
Private Function StrConv(Text As Variant, SourceCharset As String, DestCharset As String)
   Dim Stream As Object
 
   Set Stream = CreateObject("ADODB.Stream") ' https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/stream-object-ado?view=sql-server-ver15
   Stream.Type = 2   ' adTypeText      2  Default. Indicates text data, which is in the character set specified by Charset.
   Stream.Mode = 3   ' adModeReadWrite 3  Indicates read/write permissions.
   Stream.Open
   Stream.Charset = DestCharset     ' Source charset
   Stream.WriteText Text            ' Write text into stream
   Stream.Position = 0              ' The default is 0, which represents the first byte in the stream.
   Stream.Charset = SourceCharset   ' Destination charset
   StrConv = Stream.ReadText        ' Read text from a stream - actually recode
End Function
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
24.01.2021, 17:32
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
утф-8-пока крякозяблы...
подожду ответ Narimanych
Ну, а какая мадонна не позволяет элементарно:
1. поменять расширение на txt,
2. затем открыть обычным блокнотом,
3. сохранить как "текстовый файл", поменяв кодировку с UTF на ANSI.
4. И опять поменять расширение на .csv
5. Открыть excel'ем.

Это если обычный FAR не доступен. В его редакторе это вообще в полтыка делается без пересохранений.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 17:33  [ТС]
точнее
Visual Basic
1
2
3
4
5
6
7
8
Const xlDelimited = 1
Const xlDoubleQuote = 1
 Dim oExcel As Object
    Dim oWorkbook As Object
    'создать объект Microsoft Excel
    Set oExcel = CreateObject("Excel.Application")
    oExcel.Workbooks.OpenText FileName:="c:\11.txt", _
                              Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, TrailingMinusNumbers:=True
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
24.01.2021, 17:43
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
точнее
Описано открытие того же самого файла c csv-структурой только программно и с .txt расширением. Помогло? Так вам нужно программно открывать его? Или это всё же один файл и его надо один раз открыть в Excel? Что-то я уже запутался в ваших скаканиях белкой по древу ТЗ.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 17:47  [ТС]
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Const xlDelimited = 1
Const xlDoubleQuote = 1
 Dim oExcel As Object
    Dim oWorkbook As Object
    'создать объект Microsoft Excel
   Set oExcel = CreateObject("Excel.Application")
    oExcel.Workbooks.OpenText FileName:="c:\11.txt", _
                              Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, TrailingMinusNumbers:=True
что-то не взлетело...

Добавлено через 3 минуты
Цитата Сообщение от Punkt5 Посмотреть сообщение
Ну, а какая мадонна не позволяет элементарно:
1. поменять расширение на txt,
2. затем открыть обычным блокнотом,
3. сохранить как "текстовый файл", поменяв кодировку с UTF на ANSI.
4. И опять поменять расширение на .csv
5. Открыть excel'ем.
.csv-не уверен, что мне подойдёт-потому, что потом его будет читать другое приложение-может и взлетит...
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
24.01.2021, 17:48
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
что-то не взлетело...
Ну так сначала хорошо бы файл в ANSI перегнать, а потом.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 17:51  [ТС]
Цитата Сообщение от Punkt5 Посмотреть сообщение
Описано открытие того же самого файла c csv-структурой только программно и с .txt расширением. Помогло? Так вам нужно программно открывать его? Или это всё же один файл и его надо один раз открыть в Excel? Что-то я уже запутался в ваших скаканиях белкой по древу ТЗ.
нахожусь в Экселе-оттуда говорю что с d:\1.txt закинуть в этот Эксель данные-как-то так

Добавлено через 51 секунду
Цитата Сообщение от Punkt5 Посмотреть сообщение
Ну так сначала хорошо бы файл в ANSI перегнать, а потом
ну так даже с крякозаблами не взлетело
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
24.01.2021, 17:52
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
csv-не уверен, что мне подойдёт-потому, что потом его будет читать другое приложение-может и взлетит...
так что надо-то?
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
как перегнать этот файл в Эксель также разделёнными в строки согласно строк в текстовом файле и в столбцы согласно разделителя ";", спс
Я дал инструкцию для перегона.перед этим надо сконвертировать в ANSI. Попробовали?

или не в Excel?
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
.csv-не уверен, что мне подойдёт-потому, что потом его будет читать другое приложение
Или нужен макрос для чтения этого txt?
Или не макрос?
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 18:01  [ТС]
Цитата Сообщение от Punkt5 Посмотреть сообщение
Я дал инструкцию для перегона.перед этим надо сконвертировать в ANSI. Попробовали?
считаю лучиим без телодвижений-кодом
Цитата Сообщение от Punkt5 Посмотреть сообщение
так что надо-то?
вот это:
Цитата Сообщение от Punkt5 Посмотреть сообщение
как перегнать этот файл в Эксель также разделёнными в строки согласно строк в текстовом файле и в столбцы согласно разделителя ";"
Добавлено через 54 секунды
Цитата Сообщение от Punkt5 Посмотреть сообщение
нужен макрос для чтения этого txt?
макрос
Цитата Сообщение от Punkt5 Посмотреть сообщение
Или не макрос?
макрос
0
Заблокирован
24.01.2021, 18:04
Punkt5, для Ципихович Эндрю, (Катастрофы) объяснять что либо бесполезно. Потому и банят его на всех вменяемых форумах.
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 18:25  [ТС]
Zeag, скажите, а где прописывается имя файла-к которому обращаемся?
0
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,732
24.01.2021, 18:27
Ципихович Эндрю, выше приведен формат вызова
Visual Basic
1
Call RecodeFile(InpFile, OutFile, "windows-1251", "utf-8", vbCrLf, vbLf)
1 аргумент - входной файл
2 аргумент - выходной файл
3 аргумент - входная кодировка (варианты смотреть у MS)
4 аргумент - выходная кодировка
5 аргумент - формат перевода строк во входном файле
6 аргумент - формат перевода строк во выходном файле (если менять не требуется - задать то же, что в 5 аргументе)
1
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
24.01.2021, 18:38
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
считаю лучиим без телодвижений-кодом
А! Тогда вот, код VBS скрипта для загрузки массы таких txt файлов в Excel. Там подробно всё прокомментировано. Там только по умолчанию считается, что файлы в ANSI кодировке. Но если элементарно поправить 36 строку на открытие файла в UTF кодировке, и перед записью в ячейку ещё вызывать преобразование
Цитата Сообщение от Zeag Посмотреть сообщение
Private Function StrConv
, с нужными параметрами, чтобы строку преобразовать из UTF в ANSI, прежде, чем записывать в ячейку - то мне кажется, это должно хоть немного удовлетворить Вашу тягу к коду без телодвижений.
0
Заблокирован
24.01.2021, 18:43
Punkt5, Zeag, чуть погуглите и увидите

SQL.ru
Информация об авторе
Имя Ципихович Эндрю
Статус Заблокированный участник

Говорить с катастрофой - себя не уважать
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
24.01.2021, 18:43
Как загрузить кучу CSV в книгу Excel?
0
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,732
24.01.2021, 18:50
badakhshan, за человека делать - не тот путь, а подсказать можно. Да и другим участникам код может пригодиться. Мы все у кого-то учимся, какие-то наметки берем, а потом с другими делимся.
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
24.01.2021, 19:12  [ТС]
Цитата Сообщение от Zeag Посмотреть сообщение
формат перевода строк во выходном файле
не понял, в выходном файле - столбцы экселевские

Добавлено через 3 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Const xlDelimited = 1
Const xlDoubleQuote = 1
 Dim oExcel As Object
    Dim oWorkbook As Object
    'создать объект Microsoft Excel
   Set oExcel = CreateObject("Excel.Application")
    oExcel.Workbooks.OpenText FileName:="c:\11.txt", _
                              Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, TrailingMinusNumbers:=True
вспомнил его нужно с Ворда делать-даже лучше, но не взлетает...
0
Заблокирован
24.01.2021, 19:16
Zeag, тут не тот случай.
Ципихович Эндрю не слышит, не видит. А завтра снова спросит об очевидном. Специфика такая...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2021, 19:16

текст из ворда
в какой компонент можно скопировать текст из ворда, причем в тексте присутствуют формулы MS Equation?

Из ворда - в лотус
Коллеги, накидайте советов по наиболее оптимальной связке MS Word и лотуса. На тех машинах, где есть ворд, лотуса нет, то есть дальше все...

тег ворда
&lt;o : p&gt; тег ворда валидатор на него ругается выдает ошибку как можно реализировать или исправить ошибку?

For Each в таблице Ворда
я думал, что эти строки For w = 1 To ActiveDocument.Tables.Count Set oTbl = ActiveDocument.Tables(w) Set oCell = oTbl.Range.Cells(1) ...

Сохранения ворда!
Как сохранить документ ворд под именем через Edit... У меня Edit_ом будет фамилия и нужно чтоб ворд сохранялся под этой фамилией... Это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru