Как открыть excel файл через bat
Ребята, такая проблема-сделал макрос и сохранил в персноальной книге макросов (PERSONAL.xls).Теперь стоит задача открыть написать батник, который открывает определенных экселевский файл, выполняет этот макрос и закрывает этот экселевский файл.Батник на открытие написать не проблема а как подцепить туда макрос?Нужно позарез.
Тиль
Originally posted by Тиль
Ребята, такая проблема-сделал макрос и сохранил в персноальной книге макросов (PERSONAL.xls).Теперь стоит задача открыть написать батник, который открывает определенных экселевский файл, выполняет этот макрос и закрывает этот экселевский файл.Батник на открытие написать не проблема а как подцепить туда макрос?Нужно позарез.
Тиль
Поместите макрос в модуль кода объекта "Эта книга" ("ThisWorkbook") вашей персональной книги макросов.
Замените исходный заголовок макроса на такой:
Sub Workbook_Open()
Макрос должен выполниться автоматически при открытии любой рабочей книги, если, конечно, позволяют настройки безопасности Excel.
Originally posted by Dmitrii
Поместите макрос в модуль кода объекта "Эта книга" ("ThisWorkbook") вашей персональной книги макросов.
Замените исходный заголовок макроса на такой:
Sub Workbook_Open()
Макрос должен выполниться автоматически при открытии любой рабочей книги, если, конечно, позволяют настройки безопасности Excel.
Зашел в макрос в персоноальной книге, заменил заголовок но ничего не происходит, не можете написать поподробнее как сделать?
Originally posted by Тиль
Зашел в макрос в персоноальной книге, заменил заголовок но ничего не происходит, не можете написать поподробнее как сделать?
Я писал: "Поместите макрос в модуль кода объекта "Эта книга" ("ThisWorkbook") Вашей персональной книги макросов".
Originally posted by Dmitrii
Я писал: "Поместите макрос в модуль кода объекта "Эта книга" ("ThisWorkbook") Вашей персональной книги макросов".
я открыл personal.xls и изменил заголовок макроса, или не так надо, теперь при открытии любой книги открывается personal.xls. Если честно не допонял ""Эта книга" ("ThisWorkbook") Вашей персональной книги макросов"", да, там внизу есть место расположения макроса, но там и показывается этот макрос. или что-то не так понял?
Originally posted by Тиль
я открыл personal.xls и изменил заголовок макроса, или не так надо, теперь при открытии любой книги открывается personal.xls. Если честно не допонял ""Эта книга" ("ThisWorkbook") Вашей персональной книги макросов"", да, там внизу есть место расположения макроса, но там и показывается этот макрос. или что-то не так понял?
Я говорю о следующем:
1. Запускаем редактор VBA.
2. В окошке обозревателя проектов находим:
VBAProject(PERSONAL.XLS) - Microsoft Excel Objects - ЭтаКнига (или ThisWorkbook для англоязычной версии).
3. Указываем на компонент "ЭтаКнига" "мышью" и 2 раза щёлкаем левой кнопкой. Должно открыться пустое окно модуля кода, связанного с выбранным компонентом.
4. Сюда и помещаем макрос с заголовком Sub Workbook_Open().
Эсли этот вариант кажется Вам почему-либо неприемлемым, то можно оставить макрос в том модуле кода проекта, где он находится, но заголовок заменить на такой: Sub Auto_Open().
Originally posted by Dmitrii
Я говорю о следующем:
1. Запускаем редактор VBA.
2. В окошке обозревателя проектов находим:
VBAProject(PERSONAL.XLS) - Microsoft Excel Objects - ЭтаКнига (или ThisWorkbook для англоязычной версии).
3. Указываем на компонент "ЭтаКнига" "мышью" и 2 раза щёлкаем левой кнопкой. Должно открыться пустое окно модуля кода, связанного с выбранным компонентом.
4. Сюда и помещаем макрос с заголовком Sub Workbook_Open().
Эсли этот вариант кажется Вам почему-либо неприемлемым, то можно оставить макрос в том модуле кода проекта, где он находится, но заголовок заменить на такой: Sub Auto_Open().
Пробовал выдает ошибку
Run-time error '1004'
Method 'Range' of object '_Global' failed
Originally posted by Тиль
Пробовал выдает ошибку
Run-time error '1004'
Method 'Range' of object '_Global' failed
1. Каким из предложенных вариантов воспользовались?
2. В какой момент появляется ошибка?
3. Попробуйте что-нибудь совсем простое, например:
Sub Workbook_Open() 'Sub Auto_Open()
MsgBox "Работает"
End Sub
Originally posted by Dmitrii
1. Каким из предложенных вариантов воспользовались?
2. В какой момент появляется ошибка?
3. Попробуйте что-нибудь совсем простое, например:
Sub Workbook_Open() 'Sub Auto_Open()
MsgBox "Работает"
End Sub
Нормально но работает только ан новые книги когда открываешь старые экселевские файлы он выдает ту же ошибку
Originally posted by Тиль
Нормально но работает только ан новые книги когда открываешь старые экселевские файлы он выдает ту же ошибку
Хотелось бы видеть код запускаемого макроса, а попутно узнать, с какой версией Excel Вы работаете.
Хотелось бы видеть код запускаемого макроса, а попутно узнать, с какой версией Excel Вы работаете.
Sub Workbook_Open() 'Sub Auto_Open()
Columns("B:B").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 14
Range("B:B,P:P,Q:Q,S:S,T:T,AB:AB").Select
Range("AB1").Activate
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("C:E").Select
Selection.NumberFormat = "0.00"
Range("A1").Select
ChDir "C:\"
Sheets(". 3").Select
ActiveWindow.SelectedSheets.Delete
Sheets(". 2").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.SaveAs Filename:="C:\666.txt", FileFormat:=xlText, _
CreateBackup:=False
ActiveWindow.Close
End Sub
эксель 2000 макрос берет некоторые столбцы и сохраняет именно их в тектовом файле с разделителями табуляции
Originally posted by Тиль
Sub Workbook_Open() 'Sub Auto_Open()
Columns("B:B").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 14
Range("B:B,P:P,Q:Q,S:S,T:T,AB:AB").Select
Range("AB1").Activate
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("C:E").Select
Selection.NumberFormat = "0.00"
Range("A1").Select
ChDir "C:\"
Sheets(". 3").Select
ActiveWindow.SelectedSheets.Delete
Sheets(". 2").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.SaveAs Filename:="C:\666.txt", FileFormat:=xlText, _
CreateBackup:=False
ActiveWindow.Close
End Sub
эксель 2000 макрос берет некоторые столбцы и сохраняет именно их в тектовом файле с разделителями табуляции
Причина ошибки в том, что персональная книга макросов запускается до того, как открывается обрабатываемая книга. Естественно, первый же оператор обращения к объекту рабочего листа (в данном случае Columns("B:B").Select) не знает, с каким объектом работать.
1. Добавьте в самое начало кода Вашего макроса такой, например, фрагмент:
Dim myFile, pntFile As Object
Dim fileInfo, bookName As String
fileInfo = "c:\info.txt"
Set myFile = CreateObject("Scripting.FileSystemObject")
Set pntFile = myFile.OpenTextFile(fileInfo, 1)
bookName = pntFile.ReadLine
pntFile.Close
Workbooks.Open fileName:="c:\" & bookName
Таким образом можно открыть рабочую книгу до начала её обработки.
В файле info.txt должна быть только одна строка с именем файла книги, например, КНИГА1.XLS.
Разумеется, возможны разнообразные модификации предложенного фрагмента в зависимости от Ваших потребностей и вкусов.
2. Весь код Вашего макроса поместите в простой модуль проекта персональной книги макросов и дайте ему (макросу) заголовок Sub Auto_Open().
В итоге всё должно заработать (у меня, например, работает).
Теперь об используемой Вами версии Excel. Вы не ошиблись, действительно 2000?
Дело в том, что у меня в Excel 2000 Ваш макрос не работает из-за параметров SearchFormat:=False, ReplaceFormat:=False метода Replace, а работает только в Excel 2003 (в ХР посмотреть не могу, нет его у меня).
Добавлено через 57 минут
Не вариант. Осталась все таки проблема. Как сохранить файл после его открытия. Файл открывается, связи автоматом обновляются, и надо его сохранить. Может ли такое батник?Сохранить файл excel.
Открыть, сохранить, закрыть файл
программа осуществляет обработку данных из файла.Главное меню имеет вид: 1)файл 2)редактировать.
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл
Макрос должен запускаться, спрашивать - какой файл ему взять. Открыть его, разделить определенную.
Открыть txt файл в Excel и сохранить в xls формате
Здравствуйте! мне нужно данные из txt файла пересохранить в .xls формате. тем много, но конкретных.
и батник сохранить в кодировке 866, т.к. символы кириллицы присутствуют.
Но это только открыть. а вот с сохранением и закрытием - бяда, корректно это делать cmd не умеет, увы.
используйте powershell
Например так:
Попробовал, создал.
Файл открывается, выскакивает окно с запросом сохранения файла и все.
Потом Powershell выдает "Произошла ошибка при вызове метода ****.ApplicationClass не содержит метод с именем "saveas".
Если пробовать через просто "save" то сохраняет файл но как то коряво, весом всего в 1кб и эксель его не может открыть.
Все спасибо. Работает! Первый раз столкнулся с Powershel, пришлось скрипты разрешить и добавил строчку копирования после сохранения в другую папку
Подскажите, можно ли открыть файл в Excel в одном формате (.dbf) и сохранить в другом (.xls)?
Через командную строку естественно.
Данные в формате dbf переводятся в формат xls.
Можно назвать это программированием,
но можно и просто инженерной задачей.
Случай (A) - Excel установлен и больше не хочется ничего устанавливать.
Тогда использовать либо powershell ( если Windows 7 и новее ),
либо VBScript ( В Windows XP и старее ).
Технология OLE Automation
Случай (B) - и Excel не установлен и больше не хочется ничего устанавливать,
но необходимые ODBC-драйвера w системе присутствуют.
Тогда использовать либо powershell ( если Windows 7 и новее ),
либо VBScript ( В Windows XP и старее ).
Технология ActiveX + ADO
Случай (C) - Excel не установлен, но есть желание установить доп. язык программирования
( Perl, Python, Java etc ) + соответств. модули для чтения из DBF и записи в XLS.
В этом случае даже не обязателен Windows, можно всё сделать и из под Linux.
(D) найти бесплатный dbf-to-xls converter
(E) Установить бесплатный LibreOffice/OpenOffice, если платный MS Office нежелателен
и применить схемы A или B.
Как создать file.txt, открыть его, вписать строку, сохранить и закрыть в Python 3.2
Здравствуйте. В теме практически уже все сказано. Сейчас штудирую книгу Саммерфилд Python 3.
Открыть xls файл, найти значение, скопировать в другой файл, закрыть первую
Привет. Имеются file1.xls и file2.xls. Нужно написать макрос, которая сначала открывает.
Открыть для записи текстовый файл data.txt и записать в него полученный массив, закрыть файл
Составить программу с подпрограммами для выполнения следующего алгоритма (предусмотреть процедуры.
Из excel открыть/закрыть, проверить открыто ли какое-либо приложение
Ребята подскажите, как организовать в excel-е процедуру открытия/закрытия другого приложения.
Открыть и закрыть файл
Помогите новичку пожалуйста. Вообщем вот код который запускает файл, ждет 10 секунд, и запускает.
Открыть\закрыть текстовый файл
здравствуйте если открываю так: Dim ProcID As Long Debug.Print Папка & File ProcID =.
Добрый вечер! Можно ли запустив файл через bat записать его путь в ячейку Excel. Допустим есть вордовский файл через контекстное меню запускаем его через bat файл, сам батник должен запустить excel и записать в ячейку путь вордовского файла.
Запуск файла, путь к которому хранится в БД при клике на ячейку DbGrid-а
В ячейке DBGrid'а лежит в виде обычной текстовой строки путь до файла. Как сделать, чтобы при.
Эксель. Запись данных в выделенную ячейку
Необходимо передать данные из формы в ячейку, которую выделил пользователь, как это можно.
Записать данные в определенную ячейку эксель на node.js
нужен код на node.js есть код который читает данные но как записать не могу понять var fs =.
Решение
1) В 3-ей строчке вместо C:\test\1.xlsx указываете путь к excel-файлу
2) Для проверки работоспособности просто перетащите файл на батник (контекстное меню я думаю реализуете сами, в интернете полно информации)
Karen87, работает, путь файла записывает. Единственное не запускается эксель файл автоматически.
На счет контекстного меню реализую сам)
Добавлено через 1 минуту
b0gus, цель копирование (переноса) файла с дальнейшем отправкой по почте.
Ingush, а что значит не запускает excel-файл автоматически? Excel запускается, открывает файл, записывает данные и закрывается, но все это происходит в скрытом режиме
Karen87, надо чтобы он открывался. Добавил команду start "" "%file_excel%" , не знаю правильно сделал, но все работает
Вывод данных на типовую форму в эксель в нужную ячейку
Здравствуйте. ребят помогите прописать код кнопки печати а аксессе, чтобы данные выводились на.
Экспорт результата запроса из Акцесс в определенную ячейку эксель
Просмотрела очень много тем и попробовала много кодов,но так ничего и не нашла, то ошибки,то просто.
Как перенести часть данных из ячейки эксель в другую ячейку
Просьба помочь! нужно перенести из одной ячейки: UAH:384, USD:15, RUB:1067, EUR:13 только 1067.
Открытие существующей книги эксель и передача значения textbox в ячейку, по нажатию кнопки
Пытаюсь разобраться,куча обрывочной информации в интернете.Но что-то у меня не выходит. открыть.
Указать путь к файлу в макросе, через ячейку
Добрый день, мне требуется создать макрос на обновление связей ежемесячно, но возникла проблема с.
как я могу решить это? Справка MS не помогает.
изменить:
реагирует Комментарии Дэйва, я пробовал:
и все работает нормально. Проблема начинается когда я пытаюсь включить /e переключатель для передачи аргументов в Excel. Именно. ..
они не производят никаких ошибок, проблема в том, что Excel не понимает, что последний файл является то, что я хотел бы передать файл xlsm, а не другой файл, который будет открыт в Excel. Сказать об этом Excel .dia должен быть параметром, обрабатываемым .xlsm, единственное, что я нашел, чтобы работать было удаление пробелов вокруг "/ e". Отсюда
работает по назначению, однако
ошибка должна быть ваш путь на самом деле не ссылаясь на то, что вы думаете, что это или, проблема с локали может быть, или как он распознает символы.
Я просто создал следующую
Я подозреваю, что файл не ссылается правильно некоторые, как или что ваш может иметь некоторые настройки локали, которая путает его!
чтобы быть уверенным (просто чтобы исключить это), найдите MyFile.dia и переименовать его My File . dia в Проводнике. Затем, с помощью shift кнопка удерживается, щелкните правой кнопкой мыши файл (файл.dia) и выберите опцию Copy as path
затем вставьте его в качестве последнего параметра команды.
помните, если вы не создали эту строку самостоятельно и скопировали и вставили ее из другого источника, " метки могут не делать то, что вы думаете. Я предлагаю вам переписать всю строку, а затем проверить его. Или скопируйте мой строка выше и проверить, что, просто переименовать пути.
If D: не является локальным диском, тогда я предлагаю протестировать все на вашем рабочем столе (или, по крайней мере, локальное местоположение, где у вас не будет проблем с сетью или разрешениями).
Я даже пробовал его с подобной структурой каталогов, и он отлично работает.
Edit
Я также попытался бы каждый параметр по одному, чтобы обеспечить путь является правильным. Итак, в командной строке введите
"C:\Program файлы (x86)\Microsoft Office\Office14\EXCEL.EXE " и нажмите введите
"D:\Desktop\libs\xlam + приложения+diagramViewer\diagramViewer.файл xlsm" и нажмите введите
"D:\Desktop\MyFile.Диа" и нажмите клавишу введите
"Файл D:\Desktop\My . Диа" и нажмите введите
Edit 2
хорошо, теперь я могу лучше видеть / понимать неисправность, но предлагаю только 1 решение, которое является решением, которое вы не хотите - не допускайте пробелов.
Примечание, то проблема Excel, как представляется, замена пробелов с extension (поэтому смотрите пустое пространство, предполагает, что это конец имени файла и создает расширение).
После того как Microsoft ввела новые форматы в пакете Office 2007 жить пользователям стало гораздо интересней. Несовместимость с предыдущими версиями без установки конвертера и попытки привыкнуть к интерфейсу в виде ленты были лишь малой частью возникших проблем. Но данная статья не об этом, она о том, что можно сделать с документом формата Office 2007/2010 из командной строки, даже если у вас не установлен Microsoft Office.
Сначала немного теории, формат Office 2007/2010 представляет собой подвид XML, внутри он содержит специальным образом отформатированный текст с которым можно работать любым текстовым редактором. Снаружи мы видим файл с расширением docx, представляющий собой архив формата ZIP. Следовательно, для работы нам понадобится архиватор понимающий ZIP и блокнот. Все действия мы будем автоматизировать используя bat файлы.
Для начала нам понадобится исходный документ формата docx. Его можно создать самостоятельно или взять из архива, вместе с остальными примерами к статье. Для начала создадим на диске C папку для рабочих файлов и назовем ее OfficeXMLBat. С помощью Microsoft Word создаем внутри папки документ с именем Source.docx примерно такого содержания:
Для начала мы сделаем так, чтобы после запуска пакетного файла в поле Дата автоматически прописывалась сегодняшняя дата. Для начала нам необходимо выбрать архиватор работающий со стандартными ZIP архивами, остановим свой выбор на 7-ZIP. Из всего комплекта поставки , для работы в консоли, нам понадобятся только два файла 7z.exe и 7z.dll. Для тех у кого этот архиватор уже установлен необходимые файлы обычно находятся в папке Program Files\7-Zip, остальным проще взять эти файлы из архива или установить 7-ZIP. Сначала извлечем содержимое из документа Source.docx в папку Source, сделать это можно из вашего любимого архиватора или из консоли 7z.exe x Source.docx -oC:\OfficeXMLBat\Source\ -aoa. В результате в папке Source будет создан набор файлов из которых и состоит документ формата Office 2007/2010. Из всех представленных файлов нам будет интересен только один, из папки word, с именем document.xml, в котором и хранится содержимое документа. Откроем его в обычном блокноте или вашем любимом HEX редакторе (правой кнопкой по файлу - Открыть с помощью - Блокнот ;). Внутри ищем строку 01.05.1980, которую мы будем менять на сегодняшнюю дату. Принцип работы будет такой - мы выделяем и копируем весь текст до строки 01.05.1980 после чего вставляем его в отдельный файл, а потом копируем содержимое после строки 01.05.1980 и вставляем в другой файл. Для работающих в блокноте понадобится открыть еще один экземпляр блокнота, в который будет вставляться результат копирования. При сохранении из блокнота не забываем выбрать кодировку UTF-8 и поместить результат в папку OfficeXMLBat.
В примере, первый файл называется part1.txt, а второй part2.txt. Описание как надо выделять, копировать и сохранять в блокноте, я опущу - должен же быть у этой статьи минимальный порог вхождения ;). В результате у нас получается две половинки исходного файла с вырезанной датой. Легко представить, что склеив две половинки с сегодняшней датой и вставив получившийся файл обратно в архив мы получим нужный нам результат. Осталось это все реализовать в виде bat файла.
Сначала определимся откуда будет запускаться командный файл, для нас это папка на диске c с именем OfficeXMLBat, поэтому первой строкой в командном файле будет переход в эту папку:
Теперь выведем в файл с именем date.txt сегодняшнюю дату
Склеим файлы part1.txt date.txt part2.txt в один общий файл с именем document.xml и сохраним его в папку Source\word
Осталось собрать документ обратно, заархивировав содержимое папки Source в документ с именем Create.docx
На этом написание скрипта закончено, после запуска получившегося батника в папке появится файл Create.docx, открыв который мы увидим сегодняшнюю дату
Весь получившийся батник сохранен в файле create.bat, исходный текст:
В принципе этого достаточно для понимания как это все работает. Создадим еще один пример, более сложный. В файл Create2.docx будем добавлять не только дату, но и время, кроме того будем проверять папку на наличие файла report1.txt, если он есть то в колонке "Отчет сдал" впишем Да, иначе Нет. Получится этакая система контроля сдачи отчета.
Для начала разрежем файл document.xml на 4 части, разделителями послужат строки Дата (01.05.1980), Время (10:55), Отчет сдал (Да). В результате в папке будет 4 новых файла, part1b.txt part2b.txt part3b.txt part4b.txt, которые мы будем склеивать в новый документ. Осталось переписать скрипт:
Первые три строчки это переход в нужную папку и вывод текущего времени и даты в соответствующие файлы. Потом идет проверка существования файла report1.txt и, в зависимости от этого, в файл rep.txt выводится Yes или No. Последние две строки склеивают все в один документ и упаковывают его в архив. Дабы не засорять пример непечатными символами в примере Да/Нет выводится на английском языке, в готовом варианте здесь можно писать по русски, но только в кодировке UTF-8, например сохраняя файл из блокнота. После запуска скрипта и открытия файла Create2.docx мы увидим следующее:
Заботливый Word подчеркнул надпись на английском, но в целом поставленная задача успешно решена. Если в нашу рабочую папку закинуть файл report1.txt любого размера, то после запуска скрипта надпись No сменится на Yes, что как бы показывает что отчет сдан.
Подобный метод несложно распространить на Linux/Unix и любые другие системы со встроенным скриптовым языком. В принципе то же самое может делать простейшая программа на любом языку высокого уровня, но помня как, сисадмины относятся к незнакомым exe файлам на сервере, консольный метод можно тоже признать жизнеспособным. Недостатком можно посчитать привязку к архиватору 7-Zip, но использовать архивацию в ZIP, встроенную в Windows, из консоли неудобно, а другие консольный архиваторы никто не отменял. В конце концов, можно воспользоваться DOS архиватором родом из 80-х PKZIP или написать оболочку для zlib - простор для модификаций огромен ;). Все примеры к статье можно скачать здесь.
Читайте также: