Уважаемые форумчане, вынужден обратиться с вопросом следующего характера: С Вашей же помощью мне удалось из кусочков составить код, который при запуске осуществляет копирование данных с листа Excelи вставляет эти данные на вновь созданный лист Word.
Но мне не удается реализовать заключительный этап своего замысла – мне необходимо вновь созданный файл Word предложить пользователю сохранить в исходной папке (папка где размещается файл Excel) с заготовкой имени файла. При этом команда на сохранение должна отдаваться именно пользователем, а не сохранятся автоматически.
Очень хочу реализовать свой замысел именно следующим образом: 1. Запуск макроса из книги Excel. 2. Копирование данных. 3. Создание листа Word. 4. Вставка данных на лист Word. 5. Вызов диалогового окна для сохранения файла с возможностью редактировать имя файла перед его сохранением. Путь сохранения (по умолчанию) должен быть предложен в папку, в которой сохранен Исходный файл Excel. – здесь мне требуется Ваша помощь!!! 6. После сохранения Пользователем файла завершение работы макроса.
Мне удалось найти решение этой задачи, но только в коде VBA для Word. Перечитал очень много тем, но так и не смог перевести данный код на понятный язык для Excel
Данная тема близка к моей проблеме, но использовать под свои нужды не смог, так как в диалоговом окне не возможно выбрать расширение файла, а это мне тоже необходимо.
WithDialogs(wdDialogFileSaveAs) ' а вот здесь при запуске макроса вылетает ошибка. ------------ Либо подключите библиотеку ворд в референсах, либо замените вордовские константы на их числовые значение.
Александр Моторин написал: как вариант вызвать диалог сохранения вордовский
Александр, спасибо за подсказку! Данной строкой диалог вызывается, однако путь сохранения по умолчанию в "Мои документы", а мне необходимо в папку с исходным файлом Excel, так как исходный файл "кочует" из папки в папку. Кроме того не совсем ясно как прописать "заготовку" имени для созданного файла Word. Как я понял в диалоге отражаются первые слова из текстового документа. Может я что-то упустил из Ваших ответов ниже ... ?
Добрый день, уважаемые форумчане! Выражаю благодарность Александру Моторину за его труд! К сожалению сразу мне не удалось отписаться, был в отъезде.
Короче говоря проследовал я по пути Александра М. на домашнем ПК (Windows Vista, Ofice 2010), но путь мой был не долог. При запуске макроса выдает ошибку activex component can't create object и выделяет следующую строку в коде: ... Dim DLG As CommonDialog Set DLG = New CommonDialog ' здесь ошибка Dim sPath As String ...
В референсах CommonDialog подключен (я его и включал и отключал и снова включал без успеха).
При этом при запуске на рабочем компьютере (наша организация работает в облаке, возможно там более новая версия офиса) он сработал без ошибок (правда там были другие нюансы, но основная задача выполнялась).
Подскажите пожалуйста что мне сделать, чтобы с файлом можно было работать и на домашнем ПК и на рабочем ?
Чтобы работало на всех компах, - про CommonDialog надо забыть
варианты на выбор (взято из постов выше): 1) FunctionGetFileName - функция вызова диалогового окна 2) .Application.Dialogs(84).Show - вызов одного из встроенных в Word / Excel диалоговых окон
Игорь, я рассматривал каждое из этих предложений, возможно не достаточно внимательно и с пониманием, но все же ...
1) FunctionGetFileName - функция вызова диалогового окна - вызывает диалоговое окно, как я понял, именно для открытия файлов, а мне необходимо окно для сохранения файлов.
2) .Application.Dialogs(84).Show - вызов одного из встроенных в Word / Excel диалоговых окон Данной строкой диалог вызывается, однако путь сохранения по умолчанию в "Мои документы", а мне необходимо в папку с исходным файлом Excel, так как исходный файл "кочует" из папки в папку. Кроме того не совсем ясно как прописать "заготовку" имени для созданного файла Word. Как я понял в диалоге отражаются первые слова из ]текстового документа.
Пока продолжаю ковыряться ... Появилась мысль макросом из Excel создать во вновь созданном документе Word макрос, который сразе же и запустить в Ворде. Наверное это не реально, но ...