Версия для слабовидящих
Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

 

= Мир MS Excel/Неверный Формат ячеек Excel при выгрузке данных из 1С - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин, DrMini  
Неверный Формат ячеек Excel при выгрузке данных из 1С
yyyuuu Дата: Понедельник, 28.06.2021, 10:25 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Всем привет друзья.
Не знаю по адресу или нет. Но проблема такая.
Выгружаю в эксель из 1с

Макет.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);



Формат полей у Меня у всех дата. А вот когда сохранил на диске ексель. Дата получается как число и чтобы она стала датой и Я мог сделать нужный фильтр нужно кликнуть два раза и формат становиться такой который нужный.

Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = 0;
Excel.Visible = Ложь;
Excel.DisplayAlerts = Ложь;
КнигаExcel = Excel.Workbooks.Add();
КнигаExcel = Excel.WorkBooks.Open(ПолноеИмяФайла);
Excel.Visible = 0;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;  
Excel.ActiveSheet.Name = "report";
ВсегоКолонок = Excel.ActiveSheet.Cells(1,1).SpecialCells(11).Column;
Область = Excel.ActiveSheet.Range(Excel.ActiveSheet.Cells(1,1), Excel.ActiveSheet.Cells(1,ВсегоКолонок));
Область.AutoFilter();
НомерЛиста = 1;
КнигаExcel.Sheets(НомерЛиста).Range(КнигаExcel.Sheets(НомерЛиста).Cells(2,2),КнигаExcel.Sheets(НомерЛиста).Cells(2,3)).NumberFormat = "ДД.ММ.ГГГГ";


Excel.DoubleClick(); //Пробовал может как то вызывать двойной кликл принудительно, но скорее всего это только имитация а не клик настоящий
    //    
    
//КнигаExcel.Sheets(НомерЛиста).Cells(2, 7).NumberFormat = "dd/mm/yyyy";
КнигаExcel.Sheets(НомерЛиста).Cells(2, 8).NumberFormat = "";
КнигаExcel.Sheets(НомерЛиста).Cells(2, 9).NumberFormatLocal = "ДД.ММ.ГГГГ";  
КнигаExcel.Sheets(НомерЛиста).Cells(2, 11).NumberFormatLocal = "ДД.ММ.ГГГГ";
КнигаExcel.Save();
КнигаExcel.SaveAs("C:\Users\Rem\1234.xls");

КнигаExcel.Close();
Excel.DisplayAlerts = Истина;
Excel.Quit();
Excel = Неопределено;



КнигаExcel.Sheets(НомерЛиста).Range(КнигаExcel.Sheets(НомерЛиста).Cells(2,2),КнигаExcel.Sheets(НомерЛиста).Cells(2,3)).NumberFormat = "ДД.ММ.ГГГГ"


Это работает, формат нужный присваивает, но только все ровно нужно дважды кликнуть чтобы он его изменил.
Я думаю может вызывать какой нибудь код вба который бы делал двойной клик или так нельзя?


Сообщение отредактировал Serge_007 - Понедельник, 28.06.2021, 10:48
 
Ответить
СообщениеВсем привет друзья.
Не знаю по адресу или нет. Но проблема такая.
Выгружаю в эксель из 1с
[vba]
Макет.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);
[/vba]

Формат полей у Меня у всех дата. А вот когда сохранил на диске ексель. Дата получается как число и чтобы она стала датой и Я мог сделать нужный фильтр нужно кликнуть два раза и формат становиться такой который нужный.

[vba]
Excel = Новый COMОбъект("Excel.Application");  Excel.DisplayAlerts = 0;  Excel.Visible = Ложь;  Excel.DisplayAlerts = Ложь;  КнигаExcel = Excel.Workbooks.Add();  КнигаExcel = Excel.WorkBooks.Open(ПолноеИмяФайла);  Excel.Visible = 0;  Excel.ActiveWindow.DisplayWorkbookTabs = 1;  Excel.ActiveWindow.TabRatio = 0.6;    Excel.ActiveSheet.Name = "report";  ВсегоКолонок = Excel.ActiveSheet.Cells(1,1).SpecialCells(11).Column;  Область = Excel.ActiveSheet.Range(Excel.ActiveSheet.Cells(1,1), Excel.ActiveSheet.Cells(1,ВсегоКолонок));  Область.AutoFilter();  НомерЛиста = 1;  КнигаExcel.Sheets(НомерЛиста).Range(КнигаExcel.Sheets(НомерЛиста).Cells(2,2),КнигаExcel.Sheets(НомерЛиста).Cells(2,3)).NumberFormat = "ДД.ММ.ГГГГ";      Excel.DoubleClick(); //Пробовал может как то вызывать двойной кликл принудительно, но скорее всего это только имитация а не клик настоящий    //           //КнигаExcel.Sheets(НомерЛиста).Cells(2, 7).NumberFormat = "dd/mm/yyyy";  КнигаExcel.Sheets(НомерЛиста).Cells(2, 8).NumberFormat = "";  КнигаExcel.Sheets(НомерЛиста).Cells(2, 9).NumberFormatLocal = "ДД.ММ.ГГГГ";    КнигаExcel.Sheets(НомерЛиста).Cells(2, 11).NumberFormatLocal = "ДД.ММ.ГГГГ";  КнигаExcel.Save();  КнигаExcel.SaveAs("C:\Users\Rem\1234.xls");  КнигаExcel.Close();  Excel.DisplayAlerts = Истина;  Excel.Quit();  Excel = Неопределено;
[/vba]

[vba]
КнигаExcel.Sheets(НомерЛиста).Range(КнигаExcel.Sheets(НомерЛиста).Cells(2,2),КнигаExcel.Sheets(НомерЛиста).Cells(2,3)).NumberFormat = "ДД.ММ.ГГГГ"
[/vba]
Это работает, формат нужный присваивает, но только все ровно нужно дважды кликнуть чтобы он его изменил.
Я думаю может вызывать какой нибудь код вба который бы делал двойной клик или так нельзя?

Автор - yyyuuu
Дата добавления - 28.06.2021 в 10:25
Serge_007 Дата: Понедельник, 28.06.2021, 10:52 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2750 ±
Замечаний: ±

Excel 2016
Здравствуйте

Если у Вас после выгрузки в ячейках числа а не даты, то используйте в коде VBA:

Selection.NumberFormat = "m/d/yyyy"



ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Если у Вас после выгрузки в ячейках числа а не даты, то используйте в коде VBA:[vba]
Selection.NumberFormat = "m/d/yyyy"
[/vba]

Автор - Serge_007
Дата добавления - 28.06.2021 в 10:52
RAN Дата: Понедельник, 28.06.2021, 11:23 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010

With КнигаExcel.Sheets(НомерЛиста).Range(КнигаExcel.Sheets(НомерЛиста).Cells(2,2),КнигаExcel.Sheets(НомерЛиста).Cells(2,3))
.NumberFormat = "ДД.ММ.ГГГГ"
.FormulaLocal = .FormulaLocal
End With



Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
With КнигаExcel.Sheets(НомерЛиста).Range(КнигаExcel.Sheets(НомерЛиста).Cells(2,2),КнигаExcel.Sheets(НомерЛиста).Cells(2,3)).NumberFormat = "ДД.ММ.ГГГГ".FormulaLocal = .FormulaLocalEnd With
[/vba]

Автор - RAN
Дата добавления - 28.06.2021 в 11:23
Nic70y Дата: Понедельник, 28.06.2021, 11:54 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 9145
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
Цитата Serge_007, 28.06.2021 в 10:52, в сообщении № 2 ( писал(а)):
в коде VBA
это ж не VBA...


ЮMoney 41001841029809
 
Ответить
Сообщение
Цитата Serge_007, 28.06.2021 в 10:52, в сообщении № 2 ( писал(а)):
в коде VBA
это ж не VBA...

Автор - Nic70y
Дата добавления - 28.06.2021 в 11:54
yyyuuu Дата: Понедельник, 28.06.2021, 11:56 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Мужики может быть это и сработало но это 1с.
Я вот честно не знаю сработает ли это на 1с
 
Ответить
СообщениеМужики может быть это и сработало но это 1с.
Я вот честно не знаю сработает ли это на 1с

Автор - yyyuuu
Дата добавления - 28.06.2021 в 11:56
Serge_007 Дата: Понедельник, 28.06.2021, 12:13 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2750 ±
Замечаний: ±

Excel 2016
Цитата yyyuuu, 28.06.2021 в 11:56, в сообщении № 5 ( писал(а)):
сработает ли это на 1с
Цитата Serge_007, 28.06.2021 в 10:52, в сообщении № 2 ( писал(а)):
после выгрузки в ячейках числа а не даты, то используйте в коде VBA
При чем здесь 1С?
Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата yyyuuu, 28.06.2021 в 11:56, в сообщении № 5 ( писал(а)):
сработает ли это на 1с
Цитата Serge_007, 28.06.2021 в 10:52, в сообщении № 2 ( писал(а)):
после выгрузки в ячейках числа а не даты, то используйте в коде VBA
При чем здесь 1С?
Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...

Автор - Serge_007
Дата добавления - 28.06.2021 в 12:13
Nic70y Дата: Понедельник, 28.06.2021, 12:37 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 9145
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
yyyuuu, а кто мешает в коде 1с попробовать?


ЮMoney 41001841029809
 
Ответить
Сообщениеyyyuuu, а кто мешает в коде 1с попробовать?

Автор - Nic70y
Дата добавления - 28.06.2021 в 12:37
yyyuuu Дата: Понедельник, 28.06.2021, 13:16 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Цитата Serge_007, 28.06.2021 в 12:13, в сообщении № 6 ( писал(а)):
Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...

Никогда не вешал код из 1с на excel
Подскажите тогда пожалуйста в ком какой метод это делает? и можно ли на весь столбец а не только ячейку?
 
Ответить
Сообщение
Цитата Serge_007, 28.06.2021 в 12:13, в сообщении № 6 ( писал(а)):
Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...

Никогда не вешал код из 1с на excel
Подскажите тогда пожалуйста в ком какой метод это делает? и можно ли на весь столбец а не только ячейку?

Автор - yyyuuu
Дата добавления - 28.06.2021 в 13:16
RAN Дата: Понедельник, 28.06.2021, 14:11 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
После строки

Excel = Новый COMОбъект("Excel.Application")


идет работа именно с вновь созданным экземпляром Excel, используя его объекты, свойства и методы.
Поэтому странно, что строка

КнигаExcel.Sheets(НомерЛиста).Cells(2, 7).NumberFormat = "dd/mm/yyyy"


отмечена как не работающая.
1С у меня нет, но из Word'a сей код работает исправно с любым из форматов

Sub qq()
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = True
    Set КнигаExcel = Excel.Workbooks.Add()
    With КнигаExcel.Sheets(1)
        .Range(.Cells(2, 2), .Cells(2, 3)).Value = Date ' или 44375
        .Range(.Cells(2, 2), .Cells(2, 3)).NumberFormat = "dd/mm/yyyy" ' или "dd.mm.yyyy"
    End With
End Sub



Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 28.06.2021, 14:14
 
Ответить
СообщениеПосле строки
[vba]
Excel = Новый COMОбъект("Excel.Application")
[/vba]
идет работа именно с вновь созданным экземпляром Excel, используя его объекты, свойства и методы.
Поэтому странно, что строка
[vba]
КнигаExcel.Sheets(НомерЛиста).Cells(2, 7).NumberFormat = "dd/mm/yyyy"
[/vba]
отмечена как не работающая.
1С у меня нет, но из Word'a сей код работает исправно с любым из форматов
[vba]
Sub qq()    Set Excel = CreateObject("Excel.Application")    Excel.Visible = Тrue    Set КнигаExcel = Excel.Workbooks.Add()    With КнигаExcel.Sheets(1)        .Range(.Cells(2; 2); .Cells(2; 3)).Value = Date ' или 44375        .Range(.Cells(2; 2); .Cells(2; 3)).NumberFormat = "dd/mm/yyyy" ' или "dd.mm.yyyy"    End WithEnd Sub
[/vba]

Автор - RAN
Дата добавления - 28.06.2021 в 14:11
Serge_007 Дата: Понедельник, 28.06.2021, 14:11 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2750 ±
Замечаний: ±

Excel 2016
Цитата yyyuuu, 28.06.2021 в 13:16, в сообщении № 8 ( писал(а)):
Никогда не вешал код из 1с на excel
Не из 1С
Из VBA

Цитата yyyuuu, 28.06.2021 в 13:16, в сообщении № 8 ( писал(а)):
в ком какой метод это делает?
RAN в своем посте написал


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата yyyuuu, 28.06.2021 в 13:16, в сообщении № 8 ( писал(а)):
Никогда не вешал код из 1с на excel
Не из 1С
Из VBA

Цитата yyyuuu, 28.06.2021 в 13:16, в сообщении № 8 ( писал(а)):
в ком какой метод это делает?
RAN в своем посте написал

Автор - Serge_007
Дата добавления - 28.06.2021 в 14:11
yyyuuu Дата: Вторник, 29.06.2021, 02:17 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Цитата RAN, 28.06.2021 в 14:11, в сообщении № 9 ( писал(а)):
отмечена как не работающая.
1С у меня нет, но из Word'a сей код работает исправно с любым из форматов
Sub qq()
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = True
    Set КнигаExcel = Excel.Workbooks.Add()
    With КнигаExcel.Sheets(1)
        .Range(.Cells(2, 2), .Cells(2, 3)).Value = Date ' или 44375
        .Range(.Cells(2, 2), .Cells(2, 3)).NumberFormat = "dd/mm/yyyy" ' или "dd.mm.yyyy"
    End With
End Sub
Смотрите если Я так же читаю эксель, беру значение и помещаю в Value то тоже работает. ВРоде как обрабатывает и ставит не число а дата. Хотелось бы на сервер не передовать ком да и чтобы на всю колонку вешалась дата и без кликов лишних

 
Ответить
Сообщение
Цитата RAN, 28.06.2021 в 14:11, в сообщении № 9 ( писал(а)):
отмечена как не работающая.
1С у меня нет, но из Word'a сей код работает исправно с любым из форматов
Sub qq()
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = True
    Set КнигаExcel = Excel.Workbooks.Add()
    With КнигаExcel.Sheets(1)
        .Range(.Cells(2, 2), .Cells(2, 3)).Value = Date ' или 44375
        .Range(.Cells(2, 2), .Cells(2, 3)).NumberFormat = "dd/mm/yyyy" ' или "dd.mm.yyyy"
    End With
End Sub
Смотрите если Я так же читаю эксель, беру значение и помещаю в Value то тоже работает. ВРоде как обрабатывает и ставит не число а дата. Хотелось бы на сервер не передовать ком да и чтобы на всю колонку вешалась дата и без кликов лишних


Автор - yyyuuu
Дата добавления - 29.06.2021 в 02:17
yyyuuu Дата: Вторник, 29.06.2021, 02:39 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Ребята подскажите пожалуйста, вроде бы как решение нашел.

  //Создание Кнопки
Кнопка1=КнигаExcel.Worksheets(1).Buttons.Add(420.5, 12.5, 89.5, 17.5);
//первые 2 цифарки (420.5, 12.5, , ) это координаты точки
//вторые 2 цифарки размеры кнопки длина ширина (, , 89.5, 17.5)
Кнопка1.Caption="даты";
Кнопка1.OnAction = "CommandButton1_Click";

VBComponents = КнигаExcel.VBProject.VBComponents;
Кол = VBComponents.Count();
Модуль = VBComponents.Add(1);
Модуль.CodeModule.InsertLines(1,МакросСЗ);



Создаю кнопку, вешаю макрос.

МакросСЗ = "Sub CommandButton1_Click()
|Set Excel = CreateObject(""Excel.Application"")
|Excel.Visible = True
|Set КнигаExcel = Excel.Workbooks.Add()
|With КнигаExcel.Sheets(1)
|.Range(.Cells(2, 2), .Cells(2, 3)).Value = 44375
|.Range(.Cells(2, 2), .Cells(2, 3)).NumberFormat = ""dd/mm/yyyy""
|End With
|End Sub";


Ошибка
К сообщению приложен файл: 0705222.png (12.7 Kb)


Сообщение отредактировал yyyuuu - Вторник, 29.06.2021, 02:52
 
Ответить
СообщениеРебята подскажите пожалуйста, вроде бы как решение нашел.
[vba]
  //Создание Кнопки  Кнопка1=КнигаExcel.Worksheets(1).Buttons.Add(420.5, 12.5, 89.5, 17.5);  //первые 2 цифарки (420.5, 12.5, , ) это координаты точки  //вторые 2 цифарки размеры кнопки длина ширина (, , 89.5, 17.5)  Кнопка1.Caption="даты";  Кнопка1.OnAction = "CommandButton1_Click";VBComponents = КнигаExcel.VBProject.VBComponents;  Кол = VBComponents.Count();  Модуль = VBComponents.Add(1);  Модуль.CodeModule.InsertLines(1,МакросСЗ);
[/vba]

Создаю кнопку, вешаю макрос.
[vba]
МакросСЗ = "Sub CommandButton1_Click()  |Set Excel = CreateObject(""Excel.Application"")  |Excel.Visible = Тrue  |Set КнигаExcel = Excel.Workbooks.Add()  |With КнигаExcel.Sheets(1)  |.Range(.Cells(2, 2), .Cells(2, 3)).Value = 44375  |.Range(.Cells(2, 2), .Cells(2, 3)).NumberFormat = ""dd/mm/yyyy""  |End With  |End Sub";
[/vba]
Ошибка

Автор - yyyuuu
Дата добавления - 29.06.2021 в 02:39
yyyuuu Дата: Вторник, 29.06.2021, 02:41 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

В колонках значения уже есть, колонки 3,7,8
в них можно макросом поставить дата, при этом дважы не кликать на поле чтобы там встала дата а не число?
А если все будет работать, кнопку сделать невидимой и при открытие нажимать или из кода vba так же


Сообщение отредактировал yyyuuu - Вторник, 29.06.2021, 02:43
 
Ответить
СообщениеВ колонках значения уже есть, колонки 3,7,8
в них можно макросом поставить дата, при этом дважы не кликать на поле чтобы там встала дата а не число?
А если все будет работать, кнопку сделать невидимой и при открытие нажимать или из кода vba так же

Автор - yyyuuu
Дата добавления - 29.06.2021 в 02:41
yyyuuu Дата: Воскресенье, 04.07.2021, 15:10 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Кто нибудь может подсказать ребята?
 
Ответить
СообщениеКто нибудь может подсказать ребята?

Автор - yyyuuu
Дата добавления - 04.07.2021 в 15:10
yyyuuu Дата: Понедельник, 05.07.2021, 09:18 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

МакросСЗ = "  Sub CommandButton1_Click()
|    Columns(""I:I"").Select
|    Selection.TextToColumns Destination:=Range(""I1""), DataType:=1, _
|        TextQualifier:=1, ConsecutiveDelimiter:=False, Tab:=True, _
|        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
|        :=Array(1, 1), TrailingMinusNumbers:=True
|End Sub ";


VBComponents = КнигаExcel.VBProject.VBComponents;
Кол = VBComponents.Count();
Модуль = VBComponents.Add(1);
Модуль.CodeModule.InsertLines(1,МакросСЗ);
//Выключаем ругательства
Excel.DisplayAlerts = 0;

Excel.Visible = 0;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;


Сделал запись макроса, повесил на кнопку не работает все еще


Сообщение отредактировал yyyuuu - Понедельник, 05.07.2021, 09:18
 
Ответить
Сообщение[vba]
МакросСЗ = "  Sub CommandButton1_Click()  |    Columns(""I:I"").Select  |    Selection.TextТoColumns Destination:=Range(""I1""), DataТype:=1, _  |        ТextQualifier:=1, ConsecutiveDelimiter:=False, Тab:=Тrue, _  |        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _  |        :=Array(1, 1), ТrailingMinusЧumbers:=Тrue  |End Sub ";    VBComponents = КнигаExcel.VBProject.VBComponents;  Кол = VBComponents.Count();  Модуль = VBComponents.Add(1);  Модуль.CodeModule.InsertLines(1;МакросСЗ);  //Выключаем ругательства  Excel.DisplayAlerts = 0;    Excel.Visible = 0;  Excel.ActiveWindow.DisplayWorkbookTabs = 1;
[/vba]
Сделал запись макроса, повесил на кнопку не работает все еще

Автор - yyyuuu
Дата добавления - 05.07.2021 в 09:18
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!