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

Вход

Регистрация

Напомнить пароль

 

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

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

Всем привет друзья.
Не знаю по адресу или нет. Но проблема такая.
Выгружаю в эксель из 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]
Это работает, формат нужный присваивает, но только все ровно нужно дважды кликнуть чтобы он его изменил.
Я думаю может вызывать какой нибудь код вба который бы делал двойной клик или так нельзя?


Сообщение отредактировал 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
Группа: Админы
Ранг: Местный житель
Сообщений: 14333
Репутация: 2368 ±
Замечаний: ±

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

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


Яндекс-деньги: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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5443
Репутация: 1096 ±
Замечаний: 0% ±

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


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

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

Excel 2010
в коде VBA
это ж не VBA...


ЮMoney(Яндекс Деньги) 41001841029809
 
Ответить
Сообщение
в коде 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
Группа: Админы
Ранг: Местный житель
Сообщений: 14333
Репутация: 2368 ±
Замечаний: ±

Excel 2010
сработает ли это на 1с
после выгрузки в ячейках числа а не даты, то используйте в коде VBA
При чем здесь 1С?
Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...


Яндекс-деньги:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
сработает ли это на 1с
после выгрузки в ячейках числа а не даты, то используйте в коде VBA
При чем здесь 1С?
Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...

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

Код VBA надо использовать в Excel, после выгрузки, я же написал об этом...

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

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

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

2010
После строки
[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 = 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
[/vba]


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

Сообщение отредактировал 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 = 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
[/vba]

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

Excel 2010
Никогда не вешал код из 1с на excel
Не из 1С
Из VBA

в ком какой метод это делает?
RAN в своем посте написал


Яндекс-деньги:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Никогда не вешал код из 1с на excel
Не из 1С
Из VBA

в ком какой метод это делает?
RAN в своем посте написал

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

отмечена как не работающая.
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 то тоже работает. ВРоде как обрабатывает и ставит не число а дата. Хотелось бы на сервер не передовать ком да и чтобы на всю колонку вешалась дата и без кликов лишних

 
Ответить
Сообщение
отмечена как не работающая.
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% ±

Ребята подскажите пожалуйста, вроде бы как решение нашел.
[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 = 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";
[/vba]
Ошибка
К сообщению приложен файл: 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 = 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";
[/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% ±

[vba]
Код
МакросСЗ = "  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;
[/vba]
Сделал запись макроса, повесил на кнопку не работает все еще


Сообщение отредактировал yyyuuu - Понедельник, 05.07.2021, 09:18
 
Ответить
Сообщение[vba]
Код
МакросСЗ = "  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;
[/vba]
Сделал запись макроса, повесил на кнопку не работает все еще

Автор - yyyuuu
Дата добавления - 05.07.2021 в 09:18
Мир MS Excel » Вопросы и решения » Excel и другие приложения » » Неверный Формат ячеек Excel при выгрузке данных из 1С (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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