Всем привет.
Не могу придумать способ реализации для вроде бы элементарного действия.
Итак, есть кнопка на панели инструментов, при нажатии которой должно выскочить диалоговое окно выбора файла, после чего выбранный файл (CSV или XLS) должен открыться в Excel (в той копии приложения, из которой запущен макрос)
Разумеется, я знаю, как вывести диалоговое окно выбора файла.
Итак, у меня есть путь к файлу (CSV или XLS), и мне надо программно открыть этот файл.
С файлами Excel проблем нет - тут поможет Workbooks.Open ИмяФайла
А вот с CSV - проблема.
Когда мы открываем CSV файл через встроенную в Excel кнопку открытия файла (или Ctrl + O, что то же самое,
Excel АВТОМАТИЧЕСКИ распознаёт, какой разделитель столбцов используется.
Когда же мы открываем файл программно, Excel использует настроенные в системе (или в самом Excel) разделители.
А в моём случае, разделители в CSV могут быть любые, и хотелось бы, чтобы Excel сам определял разделитель.
Стал я пробовать различные варианты:
(предположим, что путь в файлу CSV мы уже знаем)
Const CSVfilename = "C:\test.csv"
Sub test1()
Workbooks.Open CSVfilename
End Sub
Sub test2()
Workbooks.OpenText CSVfilename
End Sub
Sub test3()
ThisWorkbook.FollowHyperlink CSVfilename
End Sub
Sub test4()
Application.Dialogs(xlDialogOpen).Show
End Sub
Sub test5()
Shell """" & Application.Path & "\excel.exe" & """ /dde " & CSVfilename
End Sub
Sub test6()
CreateObject("wscript.shell").Run CSVfilename
End Sub
Варианты 1-4 открывают файл, неверно распознав разделитель столбцов
Вариант 5 открывает корректно, но - в новой копии Excel, что неприемлимо
(как использовать ключи командной строки, чтобы отправить файл в запущенный Excel, я не знаю)
Вариант 6 открывает файл в программе, назначенной для CSV по-умолчанию (у меня это Notepad++)
Поскольку код будет использоваться на множестве компов, этот вариант не подходит.
У кого какие идеи?
Вроде бы, этот вопрос уже обсуждался, - но поиском не смог найти ответ.
Не могу придумать способ реализации для вроде бы элементарного действия.
Итак, есть кнопка на панели инструментов, при нажатии которой должно выскочить диалоговое окно выбора файла, после чего выбранный файл (CSV или XLS) должен открыться в Excel (в той копии приложения, из которой запущен макрос)
Разумеется, я знаю, как вывести диалоговое окно выбора файла.
Итак, у меня есть путь к файлу (CSV или XLS), и мне надо программно открыть этот файл.
С файлами Excel проблем нет - тут поможет Workbooks.Open ИмяФайла
А вот с CSV - проблема.
Когда мы открываем CSV файл через встроенную в Excel кнопку открытия файла (или Ctrl + O, что то же самое,
Excel АВТОМАТИЧЕСКИ распознаёт, какой разделитель столбцов используется.
Когда же мы открываем файл программно, Excel использует настроенные в системе (или в самом Excel) разделители.
А в моём случае, разделители в CSV могут быть любые, и хотелось бы, чтобы Excel сам определял разделитель.
Стал я пробовать различные варианты:
(предположим, что путь в файлу CSV мы уже знаем)
Const CSVfilename = "C:\test.csv"
Sub test1()
Workbooks.Open CSVfilename
End Sub
Sub test2()
Workbooks.OpenText CSVfilename
End Sub
Sub test3()
ThisWorkbook.FollowHyperlink CSVfilename
End Sub
Sub test4()
Application.Dialogs(xlDialogOpen).Show
End Sub
Sub test5()
Shell """" & Application.Path & "\excel.exe" & """ /dde " & CSVfilename
End Sub
Sub test6()
CreateObject("wscript.shell").Run CSVfilename
End Sub
Варианты 1-4 открывают файл, неверно распознав разделитель столбцов
Вариант 5 открывает корректно, но - в новой копии Excel, что неприемлимо
(как использовать ключи командной строки, чтобы отправить файл в запущенный Excel, я не знаю)
Вариант 6 открывает файл в программе, назначенной для CSV по-умолчанию (у меня это Notepad++)
Поскольку код будет использоваться на множестве компов, этот вариант не подходит.
У кого какие идеи?
Вроде бы, этот вопрос уже обсуждался, - но поиском не смог найти ответ.