Здравствуйте всем. Просматривая форумы «Планета Excel» и дружественных ему ресурсов, читая статьи о написании программ для автоматизации Excel, о становлении профессионалов на путь занятия любимым делом –Excel, я осознала насколько много ещё не знаю об Excel, макросах и VBA. При этом если о последних двух я кое-что слышала, кое-что мне когда-то демонстрировали, а использовать их я начала совсем –совсем недавно, то Excel давно и пылко люблю. До недавнего времени считала себя опытным пользователем, а теперь, после близкого знакомства с VBA и макросами даже и не знаю к какой категории пользователей себя отнести.. Новые знания, они как Солнце, так ярко сияют, теплым светом манят, а применять их ещё у меня еле-еле получается (или не получается вовсе).
Но собственно, я не о себе вам хотела рассказать. И не поэтому так назвала свой пост. Когда-то давно, в 2010г. на портале «Buhonline.ru” напечатали мою статью для начинающих бухгалтеров, в которой я рассказывала об использовании Excel при разработке форм для ведения бухгалтерского учета. Наверное, с практической точки зрения для профессиональных программистов моя статья ничего не даст, но в комментариях к ней разгорелась дискуссия об использовании Excel , и об Excel как таковом. До сих пор помню, что одна из форумчан сравнила Excel …с велосипедом.
Итак, если Вам интересно мнение пользователей об Excel -форумчан Бухонлайна (бухгалтеров, экономистов, юристов) , то вот комментарии к статье http://www.buhonline.ru/forum/index?g=posts&t=14815 Спасибо за внимание.
Добрый день. Игорь, спасибо за ответ. Вечером попробую Ваши коды.
Честно говоря, я в VBA ничего не понимаю, с необходимостью применить макросы столкнулась буквально в прошлом месяце, подыскиваю себе понятную литературу, немного читала Гарнаева.
Насчет моих вопросов. Вопрос №2 я немного некорректно сформулировала, имелось в виду, подойдет ли макрос, импортирующий из rtf в Excel для такой же цели для файла в формате txt (импорта txt в Excel)
' Импорт строк в Excel из RTF Sub ToExcelFromWord()
' --> Менять только здесь Const MyFile = "C:\1.rtf" ' <-- Путь, имя, тип файла RTF Const Destination = "J4" ' <-- Адрес первой ячейки импорта ' <--
Dim wdApp As Object, wdDoc As Object, IsNewApp As Boolean Dim txt$, i&, Arr, wdWSm, x
' Открыть RTF On Error Resume Next Set wdApp = GetObject(, "Word.Application") If Err <> 0 Then Err.Clear Set wdApp = CreateObject("Word.Application") IsNewApp = True Else With wdApp i = .Documents.Count .ScreenUpdating = False wdWS = .WindowState If wdWS <> 0 Then .WindowState = 0 End With End If Set wdDoc = wdApp.Documents.Open(MyFile, , True) If Err <> 0 Then MsgBox "Не найден файл: " & MyFile, vbExclamation: Err.Clear: GoTo exit_ On Error GoTo 0 'exit_
' Скопировать из Word в масссив Arr txt = wdDoc.Content txt = Replace(wdDoc.Range.Text, Chr(7), "") Arr = Split(txt, vbCr) ' Заморозить Excel With Application .EnableEvents = False .ScreenUpdating = False .Calculation = xlCalculationManual End With ' Скопировать из масссива Arr - в Excel With Range(Destination) ' Очистить Set x = Cells(Rows.Count, .Column).End(xlUp) If x.Row >= .Row Then Range(.Offset(0), x).ClearContents ' Скопировать With .Resize(UBound(Arr), 1) .NumberFormat = "@" .Font.Name = "Courier New" .Font.Size = 10 .Value = Application.Transpose(Arr) .Columns.AutoFit End With End With
exit_: ' Поймать ошибку If Err <> 0 Then MsgBox Err.Description ' Закрыть RTF wdDoc.Close 0 Set wdDoc = Nothing ' Закрыть приложение Word или оживить его (если ранее был открыт) With wdApp If IsNewApp Then .Quit Else If .Documents.Count < i Then .Documents.Add .WindowState = wdWS .ScreenUpdating = True End If End With Set wdApp = Nothing ' Отморозить Excel With Application .EnableEvents = True .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub
мой компьютер ругается "run time error..." вроде бы на вот эту строку макроса (подсвечивает желтым). Value = Application.Transpose(Arr) Как поправить правильно эту строку я не знаю, поискала ещё в интернете.
Нашла вот такой макрос
Скрытый текст
Sub OpenRtfAndPasteToSheets() Dim wd As Object Dim ns As Worksheet
On Error Resume Next 'запускаем Word Set wd = GetObject("", "Word.Application" If Err.Number <> 0 Then Err.Clear Set wd = CreateObject("Word.Application" If Err.Number <> 0 Then Exit Sub End If
On Error GoTo BAD
Do 'получаем имя файла f = Application.GetOpenFilename("Файлы RTF, *.rtf,Все файлы, *.*" If TypeName(f) = "Boolean" Then Exit Do 'если Отмена, то выход 'откроем выбранный файл Set wdd = wd.Documents.Open(f) ' wd.Visible = True 'копируем содержимое всего документа t = wdd.Content.Copy 'создаем новый лист для этого документа Set ns = ActiveWorkbook.Worksheets.Add 'вставляем скопированные данные в новый лист ns.Paste Destination:=ns.Cells(1, 1) 'немного отформатируем ns.Cells.WrapText = False ns.Columns.AutoFit ns.Rows.AutoFit wdd.Close Loop wd.Quit Set wd = Nothing Exit Sub BAD: MsgBox Err.Description On Error Resume Next wd.Quit Set wd = Nothing End End Sub
Пробовала его запустить, безрезультатно.
Ещё один вопрос, макрос для rtf подойдет для txt ? Спасибо заранее.