Как да свържа Notepad с Excel?

0 одобрения 0 неодобрения
попитан 2016 декември 7 в VBA от Дянко Алексиев
редактиран 2017 януари 6

Здравейте,

Има ли начин да отворя текстови файл в Notepad чрез Excel VBA? Благодаря много предварително! Искам също така да мога да копирам информацията от текстовия файл в Ексел. Проблема е, че когато отварям текстовия файл с Ексел, файла не се отваря правилно и някои букви се визуализират грешно. За целта е необходимо текстовия файл първо да мине през Notepad и после да се конвентира в Ексел. Благодаря изключително много, още веднъж! Много съм притиснат със сроковете, трябва да завърша с проекта си до края на седмицата..

Това е, което успях да напиша дотук, но работи само, когато вече съм копирал текста ръчно:

Sub CopyFromNotepad()

Workbooks.Add 'Opens a new workbook
NewWb = ActiveWorkbook.name
ThisWorkbook.Activate
Workbooks(NewWb).Activate
Range("A1").Select
ActiveSheet.Paste 'Pastes Notepad content to Excel
End Sub

1 отговор

0 одобрения 0 неодобрения
отговорени 2016 декември 7 от BgExcelAdmin цар (651 точки)

 

Sub OpenWithNotepad()

'create a folder called OLAttachments in your username Folder
'change username in the link below with your own username

MyFile = Shell("C:\WINDOWS\notepad.exe C:\Users\Username\OLAttachments\MyFile.txt", vbNormalFocus)
    SendKeys "^a", True  '^A selects everything already in the txt file.
    SendKeys "^c", True '^C copies everyting in tht txt file
Workbooks.Add 'Opens a workbook
NewWb = ActiveWorkbook.name
ThisWorkbook.Activate
Workbooks(NewWb).Activate
Range("A1").Select
ActiveSheet.Paste 'Pastes Notepad content to Excel
End Sub

5 коментари

коментиран 2016 декември 7 от Дянко Алексиев начинаещ (10 точки)
Благодаря Ви много! Спасихте ми проекта :)
коментиран 2017 януари 6 от Дянко Алексиев
Здравейте, възникна ми още един проблем. Има ли начин да не се вижда когато макрото маркира текста и копира текстовия файл? Това, което се случва е, че екранът "пресветва" в тъмно синьо за част от секундата, което дразни зрението ми. Има ли вариант да не го виждам това нещо. Опитах със application.screenupdating = false, но не се получава нищо. Имате ли някакви идеи как да направя така, че да не виждам като премигва екрана?
коментиран 2017 януари 6 от vbafreak
Здравей, Дянко,
Така става, когато се правят неща, които са лишени от логика и смисъл. Защо трябва да отваряш текстови файл в Notepad, след като през vba можеш сравнително лесно да прочетеш цялото съдържание в Ексел? На твое място аз бих използвал метода filesystemobject, за да "прочета" текстовия файл и да взема нужните данни. Ако проблемът е в енкоудинга, може да го отвориш като ascii (0). OpenAsTextStream се нарича метода, който ти трябва.
коментиран 2017 януари 6 от Ивайло
Аз бих те насочил в друга посока.. Защо не опиташ да намалиш размера на текстовия файл? Ако го намалиш до такава степен, че да не го виждаш (примерно 1 пиксел), ти няма да виждаш нищо от самия прозорец.
коментиран 2017 януари 6 от Дянко Алексиев
Vbafreak, благодаря за отговора. Аз се опитах да използвам filesystemobject метода, но не ми подрежда колоните по правилния начин в Ексел. Затова се ориентирах към другия вариант, а именно да търся начин да го отворя  с Ноутпад. Сега го отварям с Ноутпад, но не мога да го направя така, че да не го виждам.

Ивайло, благодаря за идеята. Наистина, как не се бях сетил досега. Ще проуча тези възможности.
Добре дошли в българския форум за Ексел и Майкрософт офис! Тук можете да питате хора със знания и опит, както и да споделите знанията и опита си с другите.
...