Имя: Пароль:
1C
 
Открытие файла Excel через ole
0 QuX
 
24.05.07
10:33
Проблема в имени файла... Если оно слишком длинное то программа отказывется его находить и открывать...

Есть ли какие нибудь другие способы открыть файл в програмном модуле...
1 QuX
 
24.05.07
10:40
Вот сам код:


Если ФС.ВыбратьФайл(0,ИмяФайла,Каталог,"Выбери файл с калькуляцией","*.xls",)=1 Тогда
       ИмяФайлаЗапуска=Каталог+ИмяФайла;
   Иначе
       Предупреждение("Файл не выбран. Обработка прервана.");
       Форма.Закрыть(0);
       Возврат;
   КонецЕсли;  
   Попытка
       Эксель=СоздатьОбъект("Excel.Application");
       Эксель.DisplayAlerts=0;
   Исключение
       Сообщить(ОписаниеОшибки()+"; Программа Excel не установленна на данном компьютере");
       Форма.Закрыть(0);
       Возврат;
   КонецПопытки;
   Калк=СоздатьОбъект("Документ.Калькуляция");
   Калк.Новый();
   Книга=Эксель.WorkBooks.Open(ИмяФайлаЗапуска);
   Лист=Книга.WorkSheets(5);
2 Тяпкин
 
24.05.07
10:45
.ВыбратьФайл(0, ИмяФайла, Каталог, "Выбери файл с калькуляцией", "Файлы формата Excel (*.xls)|*.xls", "xls") и ИмяФайлаЗапуска - Строка неограниченная - всё работает
3 Тяпкин
 
24.05.07
10:46
Ну и в Open(СокрЛП(ИмяФайлаЗапуска)); - обязательно
4 smaharbA
 
24.05.07
10:47
(0) Используй диалог ВБА
5 smaharbA
 
24.05.07
10:47
(3) не обязательно, это ограничение адинесины на 64 символа
6 Platon
 
24.05.07
10:47
(0) А что за длинное имя файла покажи
7 smaharbA
 
24.05.07
10:47
+(4) либо ИЕ
8 QuX
 
24.05.07
10:49
каким образом использовать диалог ВБА?
9 Тяпкин
 
24.05.07
10:49
(5) я пол дня файл открыть не мог, пока не догадался пробелы справа поудалять.
10 QuX
 
24.05.07
10:51
Например: "0891 Золушок-презент 18 - 72 стр 4+4,1+1 газет и обл, вкл_2100 шт.xls"
11 QuX
 
24.05.07
10:56
Расскажите про методы ИЕ и ВБА? Синтаксис, примеры кода...
12 dk
 
24.05.07
11:04
(11)
"Sub Main()

   'Declare a variable as a FileDialog object.
   Dim fd As FileDialog

   'Create a FileDialog object as a File Picker dialog box.
   Set fd = Application.FileDialog(msoFileDialogFilePicker)

   'Declare a variable to contain the path
   'of each selected item. Even though the path is a String,
   'the variable must be a Variant because For Each...Next
   'routines only work with Variants and Objects.
   Dim vrtSelectedItem As Variant

   'Use a With...End With block to reference the FileDialog object.
   With fd

       'Use the Show method to display the File Picker dialog box and return the user's action.
       'The user pressed the action button.
       If .Show = -1 Then

           'Step through each string in the FileDialogSelectedItems collection.
           For Each vrtSelectedItem In .SelectedItems

               'vrtSelectedItem is a String that contains the path of each selected item.
               'You can use any file I/O functions that you want to work with this path.
               'This example simply displays the path in a message box.
               MsgBox "The path is: " & vrtSelectedItem

           Next vrtSelectedItem
       'The user pressed Cancel.
       Else
       End If
   End With

   'Set the object variable to Nothing.
   Set fd = Nothing

End Sub" (С) VBA Help
13 Тяпкин
 
24.05.07
11:04
(10) Точно, не найден. Похоже, максимальная длина имени, включая .xls - 110 символов.
14 smaharbA
 
24.05.07
11:05

   Ексель = СоздатьОбъект("Excel.Application");
   Диалог = Ексель.FileDialog(1);
   Диалог.Filters.Clear();
   Диалог.Filters.Add("Ексель", "*.xls");
   Ексель.Visible=-1;
   Диалог.Show();
   Для к = 1 По Диалог.SelectedItems.Count Цикл
       Сообщить(Диалог.SelectedItems.Item(к));
   КонецЦикла;
   Шел=СоздатьОбъект("Shell.Application");
   Шел.MinimizeAll();
   ВвестиСтроку("Активизируем адинес","Активизируем адинес",19,,1);

Есть еще способ используя ИЕ, и есть еще комдиалог
15 smaharbA
 
24.05.07
11:06
(13) 64
16 Тяпкин
 
24.05.07
11:11
(15) а самому попробовать?
17 dk
 
24.05.07
11:14
Про ограничение слышал, но не сталкивался.
Ограничение на Путь+Имя_файла / Путь / Имя_файла?
18 QuX
 
24.05.07
11:14
Чего попробовать?

Я уже месяц пробую... Вот совета прошу...
19 QuX
 
24.05.07
11:16
(16) Сорри... не посмотрел на ответ...
20 Тяпкин
 
24.05.07
11:16
(18)делай имена файлов покороче или переноси их в корневую папку диска.
21 smaharbA
 
24.05.07
11:24
(16) а че мне пробовать я и так знаю выведи сообщить и позырь что выдаст
22 smaharbA
 
24.05.07
11:25
на вложенность и длинну полного пути почти нет ограничения а на имя 64
23 smaharbA
 
24.05.07
11:26
Кстати можно сделать и более адинесовскими методами
24 Тяпкин
 
24.05.07
11:28
(21) У меня 1С взял строку - "C:\Documents and Settings\admin5\Мои документы\0891 Золушок-презент 18 - 72 стр 4+4,1+1 газет и обл, вкл_2.xls", длиннее не захотел.
25 Тяпкин
 
24.05.07
11:29
(23) Понял, важно только имя?
26 smaharbA
 
24.05.07
12:36
(25) да
вот вариант с ИЕ

   ИЕ=СоздатьОбъект("InternetExplorer.Application");
   ИЕ.Navigate("about:blank");
   Пока ИЕ.ReadyState<4 Цикл
       Состояние("Ждем...");
   КонецЦикла;
   Заголовок=""+_GetPerformanceCounter();
   ИЕ.document.write("<title>"+Заголовок+"</title>");
   ИЕ.width=0;
   ИЕ.height=0;
   ИЕ.visible=-1;
   Шел=СоздатьОбъект("WScript.Shell");
   Шел.AppActivate(Заголовок+" - "+ИЕ.name);
   ИЕ.document.write("<input type=file id=ufile><script>document.all.ufile.click()</script>");
   Сообщить(ИЕ.document.all.ufile.value);
   ИЕ.Quit();