Troitsky
Огромное человеческое СПАСИБО:
Изменил:
r = ListBox1.ListCount - 1
И все ОК
Огромное человеческое СПАСИБО:
Изменил:
r = ListBox1.ListCount - 1
И все ОК
У меня в модуле по открытию книги, копируются данные из Лист1 одной книги в Лист1 другой книги.
Лист в лист скопировать нельзя.
Для копирования использовал цикл While Wend.
WWWovan
в билдере функция RenameFile
перебор файлов в каталоге через FindFirst, FindNext, FindClose
почему в ЭТОЙ ветке спросил?
или ты про что вообще?
При помощи кнопочки на форме вызывается экспорт счета в Эксель на основании шаблона Bill.xlt. Он сохраняется уже из Excel.
при помощи "той же самой кнопочки" ты можешь не только эскпортировать, но и заранее сохранить файл с выбранным именем, ДО того как юзеру этот счет выскочит для правки в excele...
void __fastcall TBillForm::sbCopyToExcelClick(TObject *Sender)
{
TKeyboardState KeyState;
GetKeyboardState(KeyState);
bool SendEMail = KeyboardStateToShiftState(KeyState).Contains(ssCtrl);
if(ActiveControl==BillTGrid)
BillTGrid->OnExit(Sender);
ToBillRecord();
CConfigEntry *CfgRec = new CConfigEntry;
CfgRec->Load("TEMPLPATH");
String TemplateName = CfgRec->Value + String("\\BILL.XLT");
delete CfgRec;
Variant App, Sh;
App = ExcelInit();
if(App.IsNull()) {
Application->MessageBox("Невозможно открыть Microsoft Excel. "
"Возможно, это приложение на компьютере не установлено.","Ошибка",MB_OK+MB_ICONERROR);
return;
}
Sh = ExcelAddWB(App,TemplateName);
if(Sh.IsNull()) {
Application->MessageBox("Ошибка при создании книги Microsoft Excel.","Ошибка",MB_OK+MB_ICONERROR);
return;
}
toExcel(App,"НомерСчета","Рахунок-фактура "+BillRec.Num+" від "+DateToStr(BillRec.Date)+".");
CClientEntry *ClRec = new CClientEntry;
ClRec->Load(BillRec.Client);
toExcel(App,"Плательщик",ClRec->LegalName);
toExcel(App,"ТелПлательщика",ClRec->Tel);
toExcel(App,"ФаксПлательщика",ClRec->Fax);
String ClEMail = Trim(ClRec->EMail);
delete ClRec;
if(Trim(ClEMail)!="")
ExcelHyperLink(App,"Плательщик","mailto:"+Trim(ClEMail));
toExcel(App,"ИтогоБезНДС",FloatToStrMExcel(BillRec.Amount/NDS_Mul));
toExcel(App,"НДС",FloatToStrMExcel(BillRec.Amount-BillRec.Amount/NDS_Mul));
toExcel(App,"Итого",FloatToStrMExcel(BillRec.Amount));
toExcel(App,"ИтогоПрописью",CurrToStrM(BillRec.Amount));
toExcel(App,"Исполнитель",BillRec.AutorName);
ExcelAddRows(App,"НомТовара",BillRec.Recs->Count-1);
CBillTEntry *BillTRec;
for(int i=0;i<BillRec.Recs->Count;i++) {
BillTRec = BillRec.Recs->Item(i);
toExcel(App,"НомТовара",i,(IntToStr(i+1)+".").c_str());
toExcel(App,"НазвТовара",i,BillTRec->WareName.c_str());
toExcel(App,"ЦенаТовара",i,FloatToStrMExcel(BillTRec->Price/NDS_Mul));
toExcel(App,"КолТовара",i,BillTRec->Count);
toExcel(App,"СуммаТовара",i,FloatToStrMExcel(BillTRec->Amount/NDS_Mul));
}
App.OlePropertySet("Visible",true);
}
В том то и дело, что заранее файл сохранять не нужно, ну если это категорично, то да.. делать надо уже в экселе
а обрати внимание: когда Ексель УЖЕ выскочил юзеру для правки, в заголовке НЕТ ЛИ УЖЕ имени Bill1 [Bill2, Bill3, etc].
Догадываюсь, что оно уже бужет сформировано по умолчанию, но подтверди, в твоём случае это так?
делать надо уже в экселе
Понимаю, что, скорее всего, в ближайшее время ответа мне не дождаться.
мне необходимо ежемесячно вставлять лист из одной книги в другую ввиде ссылок.
нельзя ли сделать так, чтобы в определенной ячейке листа в который переносятся данные вводить название файла, напр. januari, из которого эти данные берутся, благодаря чему обновление будет осуществляться автоматически.
1. как с помощью VBA скопировать значение выделенной ячейки в буфер обмена?
Range("C7").Select
Selection.Copy
но оно копирует всю ячейку, включая форматирование и т.п.<...> А мне нужно то что я делаю: нажимаю F2, выделяю текст, правой кнопкой "Копировать". тогда вставляется только неформатированное значениеПохоже, что чисто на Excel это нельзя сделать ;-(( получить неформатированное значение это проще простого (.Value) , а вот кинуть что-то в буфер обмена - проблема... Если уж очень надо (подчёркиваю ОЧЕНЬ - могу предложить крайне извращённый вариант через копирование в буфер обмена с помощью вызова через ShellExecute дополнительной программы (могу кинуть), задача которой будет просто помещать данные из командной строки в буфер обмена... но всё это крайне извратно...
записать код, который будет очищать значения в диапазрне из 2-х столбцов
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
Предыдущая тема: Стоит ли переходить с Билдера на Делфи?