Данные в формате 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.
итд
Содержание
- Открытие, ожидание, сохранение, закрытие и копирование файла с помощью команд пакетного файла Windows.
- 2 ответа
- Developing.ru
- Запуск файлов Excel через «Назначенные задания» Windows.
- Запуск макроса из батника
- 18 ответов
- Bat файл открыть файл excel
Открытие, ожидание, сохранение, закрытие и копирование файла с помощью команд пакетного файла Windows.
С моим .bat я хотел бы:
- открыть файл xlsx,
- ожидание 2 мин,
- закрыть файл с параметрами сохранения
- скопируйте этот файл в другую папку.
На данный момент я могу скопировать и вставить файл, но я не знаю, как его открыть с cmd, и сохранить их.
Спасибо за помощь.
2 ответа
Мари (TooLong;ToRead) в бессвязных комментариях
Я предложил более простой альтернативный способ сделать то, что вам нужно в этом случае, — использовать простой инструмент командной строки, см. Утилита Orlandos Sendkeys (пример — это почти то, что вы хотите сделать)
- скачать sendkeys с cpap.com.br/orlando
- посмотреть, как работает демо
- откройте excel с чистого листа и в CMD> запустите эту демонстрационную строку
SendKeys.exe 1.5 10 «Microsoft Excel» «Hello!
- адаптируйте свою версию ключей Excel, так как %(FS) – это ALT File Save на английском языке
@KJ Спасибо, KJ, к сожалению, я не могу загрузить Orlando на свой компьютер.
Поэтому мы продолжаем делать это более грязным способом, но вам по-прежнему нужны средства для сохранения файла путем вызова автосохранения, что проще всего сделать с помощью расширенного макроса Excel в исходном коде .xlsm, во всяком случае
После всех этих изменений ваш нерабочий файл теперь должен быть заменен в вашем вопросе как
REM-копирование файла, который НЕ был сохранен с использованием ключей на этом этапе, НЕ будет
REM — это то, что вам действительно нужно для решения вашей проблемы, если только вы не используете макрос?
REM см. далее
Я думаю, что ЕСЛИ вы ограничены (политикой ИТ) в командной строке, лучше всего написать свой собственный макрос автосохранения, однако МОЯ проблема в том, что я не знаю, нужен ли он вам для более чем одного ввода. .xlsm.
Так что сохраните это как OpenRunSaveExit.vbs в вашей рабочей папке, где находится ваш .bat. Есть причина, по которой я НЕ использовал пробелы или & в имени для более позднего шага.
Как указал Питер в своем ответе, вам нужно /WAIT перед xcopy и в зависимости от того, как ваша обработка файлов vbs настроена, вам может не понадобиться Wscript в стартовой строке
ТЕПЕРЬ замените свой .bat на этот
И проверьте, работает ли он без необходимости тасккилла.
Наконец зачем использовать .bat из 2-4 строк, поскольку ярлык на рабочем столе потенциально проще в использовании. Поэтому создайте ярлык для файла .vbs (щелкните правой кнопкой мыши файл .vbs, а на английском — «Создать ярлык») и, где бы он ни был создан, переместите его на рабочий стол.
Затем измените свойства следующим образом (где & имеет особое значение, поэтому имя файла .vbs НЕ должно содержать пробелов или &.)
Источник
Developing.ru
Запуск файлов Excel через «Назначенные задания» Windows.
Довольно часто это использую в работе,
но кое-что до сих пор в этой системе осталось загадкой.
1. При установке режима выполнения задания «При загрузке компьютера»
файл XLS не открывается, на некоторых станциях откроется один Excel и все.
Планировщик упорно пишет в столбце состояния «Выполняется. «
2. Если задание выполняю по времени, файл нормально открывается, но виде окна,
почему-то не на весь экран, как мне хотелось бы.
Что делаю — расширяю окно приблизительно на весь экран, либо пишу при старте.
А если открывать не XLS файл, а именно Excel и передавать файл в командной строке?
Что касается окна, то попробуйте еще дополнительно использовать команду START.
START /MIN EXCEL — запускает excel в свернутом состоянии
START /MAX EXCEL — в развернутом
START EXCEL — по умолчанию (определяется самим приложением)
Naeel Maqsudov, спасибо,
В общем попробовал кое-что, получились следующее.
1. Для запуска файла .xls при старте системы,
можно воспользоваться Автозагрузкой (о чем доходчиво написано в справке «Использование ключей автозагрузки при запуске Excel»
Создаем в папке Автозагрузка ярлык с указанием объекта —
«C:Program FilesMicrosoft OfficeOfficeEXCEL.EXE» C:temp1Книга123.xls,
там же можно поставить опцию Окно — «Развернутое на весь экран»
2. Для запуска файла .xls по времени
можно воспользоваться «Назначенными заданиями» Windows, при этом в качестве объекта запускать
— либо сам файл .xls, но без возможности управлять окном,
— либо bat-файл с ключами команды START, если bat-ник лежит в той же папке, где и файл .xls, проходит следующий вариант:
START /MAX Книга123.xls
Но если файл .xls все равно содержит макросы, то чтобы не создавать все эти ярлыки и bat-файлы, лучше макросом при старте выполнять:
Источник
Запуск макроса из батника
18 ответов
Поместите макрос в модуль кода объекта «Эта книга» («ThisWorkbook») вашей персональной книги макросов.
Замените исходный заголовок макроса на такой:
Sub Workbook_Open()
Макрос должен выполниться автоматически при открытии любой рабочей книги, если, конечно, позволяют настройки безопасности Excel.
Originally posted by Dmitrii
Поместите макрос в модуль кода объекта «Эта книга» («ThisWorkbook») вашей персональной книги макросов.
Замените исходный заголовок макроса на такой:
Sub Workbook_Open()
Макрос должен выполниться автоматически при открытии любой рабочей книги, если, конечно, позволяют настройки безопасности Excel.
Зашел в макрос в персоноальной книге, заменил заголовок но ничего не происходит, не можете написать поподробнее как сделать?
Я писал: «Поместите макрос в модуль кода объекта «Эта книга» («ThisWorkbook») Вашей персональной книги макросов».
Originally posted by Dmitrii
Я писал: «Поместите макрос в модуль кода объекта «Эта книга» («ThisWorkbook») Вашей персональной книги макросов».
я открыл 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
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
Нормально но работает только ан новые книги когда открываешь старые экселевские файлы он выдает ту же ошибку
Хотелось бы видеть код запускаемого макроса, а попутно узнать, с какой версией 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 макрос берет некоторые столбцы и сохраняет именно их в тектовом файле с разделителями табуляции
Причина ошибки в том, что персональная книга макросов запускается до того, как открывается обрабатываемая книга. Естественно, первый же оператор обращения к объекту рабочего листа (в данном случае 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 (в ХР посмотреть не могу, нет его у меня).
Originally posted by Dmitrii
Причина ошибки в том, что персональная книга макросов запускается до того, как открывается обрабатываемая книга. Естественно, первый же оператор обращения к объекту рабочего листа (в данном случае 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 (в ХР посмотреть не могу, нет его у меня).
Поместил, не ругается но и не работает. А как вы думаете нельзя ли этот макрос как нибудь доработать?нужно чтобы он одни стобцы сохранял в один текстовый файл с разделителями табуляции и не запрашивал о перезаписи а другие столбцы в другой файл и тоже самое.Не поможете? а то написал нечто походжее на конвертор из SAP в Oracle все дело в этом встало, начну еще и это учить-голова разорвется:-))
Источник
Bat файл открыть файл excel
Сообщения: 231
Благодарности: 8
Спасибо. Только как пользоваться?
Я вставил код в файл .тхт. Затем изменил расширение на .ps1
ПКМ — Выполнить с помощью PowerShell. Запустилась cmd, промелькнула красная строка и закрылось cmd.
Начал ждать, но ничего не произошло.
или другие времена имеют место впоследствии быть? »
Ладно бы запускать Excel по времени, а закрывать то как? Как минимум, надо это делать корректно, книгу, ИМХО, следует сохранить »
Сообщения: 27625
Благодарности: 8086
Источник
Adblock
detector
» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″>
I designed an excel spreadsheet that takes data from a server using an RTD feed and processes it. I want the excel file to open automatically during the computers startup. The way that I have decided to go about doing this is to write a batch script that opens the excel file and to then put that batch script in the computers startup folder.
The problem I am running into relates to the batch script. The RTD feed does not work if I use the default shortcut for excel. Instead I have to use a shortcut that has the following target line:
"C:Program Files (x86)Microsoft OfficerootOffice16EXCEL.EXE" /a "CompanyExcelAddin.CompanyFunctions"
I am able to open the file using this command line
start `"C:Program Files (x86)Microsoft OfficerootOffice16EXCEL.EXE" "C:...filename.xlsm"`
but I am not able to open a file using the following bash command
start "C:Program Files (x86)Microsoft OfficerootOffice16EXCEL.EXE" /a "CompanyExcelAddin.CompanyFunctions" "C:...filename.xlsm"
If I open it using the first batch script the RTD feed doesn’t work. If I try to run the second script the batch script doesn’t run.
How do I write a batch script that takes command line arguments for the startup program?
Проблема: мне нужно открыть документ Excel, запустить макрос, сохранить документ под отдельным именем (XXXX_YYYYMMDD), закрыть документ Excel.
Решение 1. Я думаю, что могу использовать файл.bat, чтобы открыть Excel, запустить макрос, сохранить и переименовать файл.
Вопрос решения 1: а) Я не знаю, как передать путь к файлу в качестве параметра. б) я знаю, как написать процесс на языке сценариев для.bat
Решение 2: Я думаю, что могу использовать файл.bat, чтобы открыть Excel, и создать макрос, который однажды откроется в Excel, запустит его, переименует Excel и закроет его.
Вопрос решения 1: а) Я не знаю, как передать путь к файлу в качестве параметра.
PS: Абсолютно новый с кодированием.bat
Другие предложения приветствуются
Большое спасибо за Вашу помощь
2013-01-15 15:25
3
ответа
Вы можете попробовать с гибридным файлом bat/jscript:
rem ("open macro")/*
@echo off
call cscript //nologo //E:jscript excelfile.xsls
goto :eof
*/
var objExcel = new ActiveXObject ("Excel.Application");
objExcel.Application.Run(""+WScript.Arguments.Item(0)+!mymacro");
rem (){}
Если макрос внедрен в лист, вам нужно создать объект листа и получить к нему доступ.
2013-01-15 22:37
Чтобы ответить на ваш первый вопрос, вы можете передать имя файла в качестве параметра, используя
batfile.bat yourexcelfile.xls
и получить к нему доступ из командного файла, используя %1
,
Тем не менее, я не знаю, как делать другие макро-вещи, но если вы узнаете, вы можете использовать это, чтобы собрать это вместе!:)
2013-01-15 16:10
Я не уверен, возможно ли это с BAt-Files, но я думаю, что сценарий powersheel мог бы сделать это…. Если это не вариант, вы можете попытаться добавить макрос в запуск файла — так что он запускается когда файл открывается…
2013-01-15 16:56
The fault must be your path isn’t actually referencing what you think it is or, an issue with the locale may be, or how it’s recognizing characters…
I just created the following
"C:Program Files (x86)Microsoft OfficeOffice14EXCEL.EXE" "C:UsersDRookDesktopa d c.xlsx"/e "C:UsersDRookDesktopMy File . dia"
It works as expected (meaning, no error message) from command prompt and a .bat file.
I suspect that the file isn’t referenced correctly some how or that your may have some locale setting which is confusing it!
To be certain (just to rule it out), find the MyFile.dia
and rename it My File . dia
in Explorer. Then, with the shift button held, right click your file (file.dia) and select the option Copy as path
Then paste this as the final parameter in your command.
Remember, if you didn’t create this string yourself and copied and pasted it from another source, the » marks may not do what you think they should. I suggest you re-write the entire string and then test it. Or copy my string above and test that, just rename the paths.
If D:
is not a local drive, then I suggest testing with everything on your desktop (or at least, a local location where you won’t have any issues with networking or permissions).
I have even tried it with similar directory structure and it works fine.
Edit
I would also attempt each parameter one at a time to ensure the path is correct. So, within the command prompt type
«C:Program Files (x86)Microsoft OfficeOffice14EXCEL.EXE» and press enter
Then
«D:Desktoplibsxlam+apps+diagramViewerdiagramViewer.xlsm» and press enter
Then
«D:DesktopMyFile.dia» and press enter
Then
«D:DesktopMy File . dia» and press enter
Edit 2
Right, I can now see / understand the fault better but offer only 1 solution which is a solution you don’t want — don’t allow white space.
What is happening when I send white space in the parameter is I get the following message from Excel (note, my parameter is e/"C:UsersDRookDesktopMy File . dia"
)
Note, then problem is Excel appears to be swapping white space with the extension (so therefore see’s the white space, assumes it’s the end of a file name and creates the extension).