Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.08.2007, 18:49   #1
Nasya
Пользователь
 
Регистрация: 22.06.2007
Сообщений: 19
По умолчанию Даты не даты

Подскажите, кто сталкивался с проблемой, есть два файла, в одном файле есть столбцы с датами (даты распознаются), второй файл открывает программно первый файл и копирует из него данные, но после копирования даты не распознаются, только после двойного щелчка в ячейке.
Код:
 
iPath = ThisWorkbook.Path & "\"
    
     iFileName = Dir(iPath & "Сделки.csv")
    Workbooks.Open Filename:=iPath & iFileName
    Set TxtFile = ActiveWorkbook
    TxtFile.Sheets(1).UsedRange.Copy Destination:=OrigWB.Sheets("Сделки").Range("A1")
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Application.DisplayAlerts = True
И в результате вот такие даты, как во вложении, подскажите как с этим бороться.
Вложения
Тип файла: zip образец.zip (21.4 Кб, 23 просмотров)
Nasya вне форума
Старый 21.08.2007, 20:30   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Есть предложение: не бороться с последствиями болезни (хотя, в принципе, это возможно), а открыть файл .csv как текстовый (ибо, по сути, это и есть текстовый файл) указав, при этом, формат данных для нужных столбов, как дату (ДМГ). Осуществить указанное действо можно различными способами, например, как импорт текстового файла (QueryTables.Add(Connection:="TEXT; ...) или воспользоваться методом OpenText :

Код:
iPath = ThisWorkbook.Path & "\"
iFileName = iPath & "Сделки.csv"
 
If Dir(iFileName) = "" Then
   MsgBox "Импортируемый файл изволит отсутствовать", , ""
   Exit Sub
End If
 
On Error GoTo ErrHandler
 
With Application
     .ScreenUpdating = False
     .DisplayAlerts = False
     .Calculation = xlManual
     ' и т.д. по необходимости
     
     .Workbooks.OpenText Filename:=iFileName, _
     Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
     Tab:=True, Semicolon:=False, Comma:=False, Space:=False, _
     Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), Array(3, 4))
     'желательно проверить правильность всех параметров
     
     '.ActiveWorkbook.Worksheets(1).UsedRange.Copy Destination:=...
     .ActiveWorkbook.Close saveChanges:=False
 
ErrHandler:
     .Calculation = xlAutomatic
     .DisplayAlerts = True
     .ScreenUpdating = True
End With
pashulka вне форума
Старый 21.08.2007, 21:48   #3
Nasya
Пользователь
 
Регистрация: 22.06.2007
Сообщений: 19
По умолчанию

Объясните, пожалуйста, а как же все таки скопировать эти данные, и как указать формат столбцов.........это ж не так ведь:

.ActiveWorkbook.Worksheets(1).Colum ns(1).NumberFormat = "dd/mm/yy;@"

в коде этого нет........а тут такая срочность..
Скопировала Ваш код, но копирование закомментировано, раскомментировала....естественно тот же результат, я бы в справке порылась про opentext, да компонент не установлен дома...

Последний раз редактировалось Nasya; 21.08.2007 в 21:59.
Nasya вне форума
Старый 22.08.2007, 20:18   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Копирование можно оставить из первого примера, а за установку нужного формата, при импорте текстового файла, отвечает необязательный именованный аргумент FieldInfo, т.е. в данном примере для первого столбца устанавливается Общий формат, а для второго и третьего столбца - MDY date
P.S. Кстати, информацию касательно метода OpenText можно скачать здесь.

Если же, после открытия файла .csv, Вы всё равно столкнётесь с проблемой дат, то перед/после копирования можно использовать что-то вроде :

Код:
With .ActiveWorkbook.Worksheets(1)
     With Intersect(.UsedRange, .Range("B:C"))
          .NumberFormat = "dd/mm/yy"
          .Copy
          .PasteSpecial Paste:=xlPasteValues
 
          '.Value = .Value
     End With
End With

Последний раз редактировалось pashulka; 22.08.2007 в 20:26.
pashulka вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формат даты Green_C@t Общие вопросы Delphi 3 22.09.2009 10:05
Наращивание даты chekanoff Общие вопросы Delphi 5 28.02.2008 18:22
Запрет изменения даты Viteef Общие вопросы Delphi 0 20.02.2008 05:09
Вычисление даты завтрашнего дня meteora Помощь студентам 3 18.01.2008 11:18
вычитание даты zetrix Microsoft Office Excel 3 10.11.2006 06:30