:: Visual Foxpro, Foxpro for DOS
Не работает под VFP копирование строки с форматированием в Excel-таблице
Kaskad
Автор

Сообщений: 214
Откуда: Новосибирск
Дата регистрации: 24.10.2007
Пожалуйста, помогите! Не понимаю, почему в коде

NumStr = 99
CntClmns = 77
m.loExcel.range(m.loExcel.Cells(NumStr,1),m.loExcel.Cells(NumStr, CntClmns)).copy
NumStr = NumStr + 1
m.loExcel.range(m.loExcel.Cells(NumStr,1), m.loExcel.Cells(NumStr, ColnmCnt)).Pastespecial(xlPasteFormats),
где xlPasteFormats = -4122

не вставляется формат - объединение, выравнивание... Что я не так делаю?
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Если в экселе, в окне Immediate (Alt-F11) руками проделать тоже самое, то "вставляется" ?

Если да, то попробуй опять из фокса, но в режиме видимости экселя. Бывает, что в режиме невидимого экселя работает немного по-другому.
Также можно ли обойтись без .Copy - .Pastespecial, прямым присваиванием (может, без .Range) ?
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
CntClmns и ColnmCnt - это просто здесь опечатка или в коде так и есть?
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Kaskad
Автор

Сообщений: 214
Откуда: Новосибирск
Дата регистрации: 24.10.2007
Надеюсь, что опечатка, счас посмотрю. Просто Copy отстоит от Paste команд так на пару-тройку сотен
А сам принцип взят, конечно, из макроса на Excel. Потому и непонятно, почему там работает, а в VFP нет.



Исправлено 3 раз(а). Последнее : Kaskad, 08.07.20 11:53
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Чем не устраивает
loExistingRange.Copy(m.loNewRange)

Цитата:
Просто Copy отстоит от Paste команд так на пару-тройку сотен
Это очень, очень печально. Код-лапша никогда ни к чему хорошему не приводил. Очень советую структурировать, оформить служебные процедуры или методы классов и никогда не писать портянки кода (один метод/процедура) на 300 строк, не говоря уж о больших (подозреваю что тут как раз этих строк много больше).


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 09.07.20 22:49
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Kaskad
Автор

Сообщений: 214
Откуда: Новосибирск
Дата регистрации: 24.10.2007
Igor Korolyov
Чем не устраивает
loExistingRange.Copy(m.loNewRange)

1. Не знаю, что такое - где посмотреть?
2. не мной написано изначально, переделывать приходится
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Смотреть как обычно, в интернетах. Про .Copy смотреть особо нечего. Игорь намекает, что командой .Copy можно копировать Range-->Range, за один раз, не разрывая на фазы скопировал-положил. Пробовать можно в фоксе, а можно и в окне Immediate Excel-я (Alt-F11).

А, да. В кнопке F1 в экселе нормальный хелп по командам типа Copy
...нажал в своем экселе-2007, а хелпа-то и нет устарел ваш экседь пишет, купи новый... А я еще этот не износил, я им практически не пользовался.



Исправлено 3 раз(а). Последнее : of63, 10.07.20 07:50
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Kaskad
Автор

Сообщений: 214
Откуда: Новосибирск
Дата регистрации: 24.10.2007
Добрый день!
Пробовала и Range-->Range, и строку в строку - PasteSpecial не работает, хоть тресни.
Работает только вставка этой строки - дольше, но хотя бы работает. Будет время, снова попробую разобраться. Хотя когда оно будет...?
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Kaskad
непонятно, почему там работает, а в VFP нет.

С таким когда-то сталкивался. Не помню подробностей. Но вроде тоже что-то с командой вставки было, есть какие-то нюансы ее использования не из макроса.

Кстати, стоило бы в коде сделать всюду объектные скобки WITH...ENDWITH - хотя бы просто для удобочитаемости.
Чтобы как говорится глаза понапрасну не разбегались.
Вот так вот к примеру лучше же воспринимается приведенный в начале кусок:
WITH m.loExcel
NumStr = 99
CntClmns = 77
xlPasteFormats = -4122
WITH .range(.Cells(NumStr,1), .Cells(NumStr, CntClmns))
.copy
.Pastespecial(xlPasteFormats)
ENDWITH
NumStr = NumStr + 1
ENDWITH


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 10.07.20 10:12
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
У меня пример из кода - всё работает. Он как раз "размножает" шаблонные строки перед заполнением их очередной порцией данных.

Crispy
WITH .range(.Cells(NumStr,1), .Cells(NumStr, CntClmns))
.copy
.Pastespecial(xlPasteFormats)
ENDWITH

Там разные диапазоны. Смысла вставлять данные в то же самое место откуда только что их скопировал - чуть. Да и код размазанный на 300+ строк никакие With не спасут - только ещё больше запутают.

И как раз таки работа через буфер обмена является менее надёжной, чем работа "прямыми" методами. Буфер обмена это общесистемная штука - мало ли кто вмешается в процесс пока ты что-то копипастишь. А в МС офисе ещё и расширенная "многокарманностью" - в зависимости от настроек эксель может сохранять до 24 последовательных Copy чтобы потом по очереди (или в произвольном порядке) их Paste.


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 10.07.20 19:29
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
alex;

Сообщений: 2850
Откуда: Москва
Дата регистрации: 23.11.2004
Igor Korolyov
А в МС офисе ещё и расширенная "многокарманностью" - в зависимости от настроек эксель может сохранять до 24 последовательных Copy чтобы потом по очереди (или в произвольном порядке) их Paste.

таки, использование буфера офиса с многокарманностью ненадежно?
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Использование любого глобального объекта, в который в любой момент времени могут влезть и изменить содержимое абы кто (как ПО так и банально юзер своими ручками) - по определению ненадёжно.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
alex;

Сообщений: 2850
Откуда: Москва
Дата регистрации: 23.11.2004
Igor Korolyov
Использование любого глобального объекта, в который в любой момент времени могут влезть и изменить содержимое абы кто (как ПО так и банально юзер своими ручками) - по определению ненадёжно.

Может мы просто не умеем его "готовить"?

Если Application.Visible = false, то пользователя мы уже исключили.
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не. Когда прога гоняет невиидимый эксель, а ты параллельно руками запускаешь видимый эксель, то эти оба экселя чуствуют друг друга заразы, и Ctrl-C в видимом экселе нарушает запомненное в .Copy невидимого. Выключателя этой связи что-то не видел...



Исправлено 1 раз(а). Последнее : of63, 11.07.20 10:01
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
alex;

Сообщений: 2850
Откуда: Москва
Дата регистрации: 23.11.2004
of63
Не. Когда прога гоняет невиидимый эксель, а ты параллельно руками запускаешь видимый эксель, то эти оба экселя чуствуют друг друга заразы, и Ctrl-C в видимом экселе нарушает запомненное в .Copy невидимого. Выключателя этой связи что-то не видел...

Если честно, я на стороне Игоря, но мало ли,
я всегда боюсь когда уверен на 110%.

Таки если ошибочное мнение станет наоборот тру, то пруф ))
Ratings: 0 negative/0 positive
Re: Не работает под VFP копирование строки с форматированием в Excel-таблице
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
Не. Когда прога гоняет невиидимый эксель, а ты параллельно руками запускаешь видимый эксель, то эти оба экселя чуствуют друг друга заразы, и Ctrl-C в видимом экселе нарушает запомненное в .Copy невидимого.
С буфером обмена ещё веселее - он не только от 2-го экселя зависит, он от ВСЕГО зависит - от блокнота до автокада или того же браузера
Запустил формирование отчётика, а пока он готовится, решил подружке весёлую ссылочку в скайпе послать - и потом "высокое начальство" до-о-о-лго смеяться будет над бедолагой - хотя на самом деле это просто разработчик идиот оказался непрофессионален


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 26 kornienko_ru  (Гостей: 25)

© 2000-2024 Fox Club 
Яндекс.Метрика