ÐÑедÑÑавеÑе Ñи задаÑа, коÑÑо не пÑави поÑÑи ниÑо: оÑваÑÑ Ð¼ÐµÑеÑна ÑабоÑна книга, запиÑва днеÑнаÑа даÑа в една клеÑка и Ñ Ð·Ð°Ð¿Ð¸Ñва обÑаÑно. ÐÑÑнеÑе Ñова пÑез ÑÑлÑга доÑÑаÑÑÑно ÑеÑÑо и Ñано или кÑÑно Ñе полÑÑиÑе оплакване. ÐакÑоÑиÑе Ñа изÑезнали, или ÑвÑÑзаниÑе обменни кÑÑÑове веÑе Ñе ÑеÑÐ°Ñ ÐºÐ°Ñо #REF!, а екипÑÑ Ð¿Ð¾ поддÑÑжка е Ñбеден, Ñе ваÑиÑÑ ÐºÐ¾Ð´ ги е изÑÑил. ÐодÑÑ Ð²Ð¸ не е изÑÑил ниÑо. Това, коеÑо обикновено Ñе ÑлÑÑва, е, Ñе поддÑÑжаÑа макÑоÑи ÑабоÑна книга е била запиÑана под обикновено име Ñ ÑазÑиÑение .xlsx, и Excel е Ñпазил пÑавилаÑа за Ñипове ÑÑдÑÑжание на ECMA-376: пакеÑ, ÑийÑо Ñип ÑÑдÑÑжание не деклаÑиÑа VBA, не може да заÑеди VBA пÑоекÑ, незавиÑимо Ð¾Ñ Ñова, Ñе байÑовеÑе Ð¼Ñ Ñа ÑоÑно Ñам. ФайлÑÑ Ð½Ðµ Ñе е повÑедил. Той пÑоÑÑо е бил пÑеименÑван в ÑÑÑÑоÑние, в коеÑо Excel е задÑлжен да игноÑиÑа ÑаÑÑ Ð¾Ñ Ð½ÐµÐ³Ð¾.
ÐакÑоÑиÑе и вÑнÑниÑе пÑепÑаÑки кÑм ÑабоÑни книги Ñа двеÑе неÑа, коиÑо авÑомаÑизаÑиÑÑа гÑби най-ÑеÑÑо, по една и ÑÑÑа оÑновна пÑиÑина. РдвеÑе живеÑÑ Ð¸Ð·Ð²Ñн ÑеÑеÑкаÑа Ð¾Ñ ÐºÐ»ÐµÑки, коÑÑо ÑедакÑиÑаÑиÑÑ ÐºÐ¾Ð´ Ñеално докоÑва, Ñака Ñе код, койÑо ÑазÑÑждава в каÑегоÑииÑе на Ñедове и колони, Ñе ги изпÑÑне, без нÑкога да е извиквал опеÑаÑÐ¸Ñ Ð·Ð° изÑÑиване. HotXLS е оÑигинална Delphi и C++Builder библиоÑека, коÑÑо ÑеÑе и запиÑва XLS и XLSX без инÑÑалиÑан Excel, и ÑÑ ÑÑеÑиÑа и дваÑа акÑива каÑо полезен ÑоваÑ, койÑо пÑенаÑÑ ÑÑзнаÑелно, а не каÑо данни, коиÑо ÑлÑÑайно копиÑа. Това, коеÑо Ñледва, е инÑоÑмаÑÐ¸Ñ Ð·Ð° Ñова Ð¾Ñ ÐºÐ°ÐºÐ²Ð¾ Ñе нÑждае вÑеки Ð¾Ñ ÑÑÑ Ð¿Ñи ваÑÐ¸Ñ Ð¿ÑÑ Ð·Ð° Ð·Ð°Ð¿Ð¸Ñ Ð¸ кÑде ÑвÑÑÑÐ²Ð°Ñ Ð³Ð°ÑанÑииÑе.
ÐаÑо Ñези два акÑива Ñе дÑÑÐ¶Ð°Ñ ÑазлиÑно пÑи пÑенапиÑване
VBA пÑоекÑÑÑ Ðµ един непÑозÑаÑен двоиÑен Ñайл. Ð OOXML Ð¿Ð°ÐºÐµÑ Ñова е ÑайлÑÑ vbaProject.bin; в оÑÑаÑÑл BIFF Ñайл Ñова е OLE Ñ
ÑанилиÑе. Ðма ÑоÑно два наÑина да го загÑбиÑе: пиÑаÑелÑÑ Ð½Ð¸ÐºÐ¾Ð³Ð° да не го копиÑа в изÑ
ода или изÑ
одниÑÑ Ñайл да полÑÑи Ñип, койÑо го забÑанÑва. Рв дваÑа ÑлÑÑÐ°Ñ Ð¿ÑовалÑÑ Ðµ пÑлен и ÑиÑ
. ÐÑоекÑÑÑ Ð¸Ð»Ð¸ пÑиÑÑÑÑва, или не.
ÐÑнÑнаÑа пÑепÑаÑка изобÑо не е двоиÑен блок (blob). Ð¢Ñ Ðµ малÑк гÑÐ°Ñ Ð¾Ñ Ð²ÑÑзки: Ñелеви пÑÑ Ð¸Ð»Ð¸ URL адÑеÑ, ÑоÑÐµÑ ÐºÑм дÑÑга ÑабоÑна книга, ÑпиÑÑкÑÑ Ñ Ð¸Ð¼ÐµÐ½Ð°Ñа на лиÑÑовеÑе, коиÑо Ñази Ñел излага, и незадÑлжиÑелен ÐºÐµÑ Ð¾Ñ ÑÑойноÑÑи, видени за поÑледно в Ñези лиÑÑове, Ñака Ñе Excel да може да покаже неÑо, когаÑо ÑелÑа е оÑлайн. Тези ÑÑи ÑаÑÑи Ð¸Ð¼Ð°Ñ ÑазлиÑен жизнен ÑикÑл пÑи пÑенапиÑване, и дадена библиоÑека може вÑÑно да запази едни, докаÑо ÑÐ¸Ñ Ð¾Ð¼Ñлком изпÑÑка дÑÑги. Тази аÑимеÑÑÐ¸Ñ Ðµ ÑаÑÑÑа, за коÑÑо Ñи ÑÑÑÑва да бÑдем ÑоÑни, ÑÑй каÑо ниÑо в кода за ÑедакÑиÑане на клеÑки нÑма да Ñ Ð¿ÑоÑви.
ÐÑенаÑÑне на VBA пÑÐ¾ÐµÐºÑ Ð¿Ñи пÑенапиÑване на XLSX
ÐÑ ÑÑÑана на XLSX, TXLSXWorkbook запазва макÑо Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¸Ñ ÑÐ¾Ð²Ð°Ñ Ð´Ð¾Ñловно. СвойÑÑвоÑо VbaProject дÑÑжи ÑÑÑовиÑе байÑове на vbaProject.bin вÑÑÑе в AnsiString, а пÑазниÑÑ Ð½Ð¸Ð· е наÑинÑÑ, по койÑо моделÑÑ ÐºÐ°Ð·Ð²Ð°, Ñе нÑма макÑоÑи. Ðколо него ÑÑоÑÑ ÑÑи опеÑаÑии: HasVbaProject оÑговаÑÑ Ð´Ð°Ð»Ð¸ пÑоекÑÑÑ Ð¿ÑиÑÑÑÑва, ClearVbaProject го пÑемаÑ
ва ÑмиÑлено, а LoadVbaProjectFromFile инжекÑиÑа пÑоекÑ, извлеÑен Ð¾Ñ Ñаблон. Това поÑледно извикване ÑÑÑÑва повеÑе, оÑколкоÑо изглежда. То позволÑва на генеÑиÑаниÑе ÑабоÑни книги да пÑÐ¸ÐµÐ¼Ð°Ñ ÑÑандаÑÑен пÑÐ¾ÐµÐºÑ Ñ Ð¼Ð°ÐºÑоÑи, без да влаÑÐ°Ñ ÑÑл Ñаблон пÑез конвейеÑа.
var
Book: TXLSXWorkbook;
Sheet: TXLSXWorksheet;
begin
Book := TXLSXWorkbook.Create;
try
Sheet := Book.Sheets.Add('Data');
Sheet.Cells[1, 1].Value := 'Refreshed ' + DateTimeToStr(Now);
Book.LoadVbaProjectFromFile('macros\vbaProject.bin');
if not Book.HasVbaProject then
raise Exception.Create('VBA payload failed to load');
// The .xlsm extension is not cosmetic: it selects the
// macro-enabled content type inside the package.
Book.SaveAs('monthly-report.xlsm');
finally
Book.Free;
end;
end;
РедÑÑ Ð·Ð° запиÑване е Ñози, около койÑо Ñе вÑÑÑи ÑелиÑÑ Ð¿Ñоблем. РабоÑна книга, ÑÑдÑÑжаÑа VBA пÑоекÑ, ÑÑÑбва да бÑде запиÑана Ñ Ð¼Ð°ÐºÑо-ÑÑвмеÑÑима ÑеманÑика, и HotXLS ги пÑилага, когаÑо ÑелевоÑо име завÑÑÑва на .xlsm. ÐодайÑе й вмеÑÑо Ñова .xlsx и Excel Ñе оÑкаже макÑоÑиÑе, вÑпÑеки Ñе байÑовеÑе ÑизиÑеÑки пÑиÑÑÑÑÐ²Ð°Ñ Ð² пакеÑа и биÑ
а Ñе деÑеÑиализиÑали ÑÑпеÑно. РазÑиÑениеÑо не е ÑкÑаÑа; Ñо избиÑа Ñипа ÑÑдÑÑжание, койÑо казва на Excel, Ñе е ÑазÑеÑено да ÑÑÑеÑÑвÑва VBA пÑоекÑ. ÐÑез повеÑеÑо вÑеме ви е необÑ
одимо Ñамо да пÑенеÑеÑе Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¸Ñ ÑоваÑ. ÐогаÑо ÑÑÑбва да пÑоÑеÑеÑе в него, напÑÐ¸Ð¼ÐµÑ Ð·Ð° да избÑоиÑе именаÑа на модÑлиÑе за одиÑоÑÑки доклад, ParsedVBAProject излага модел на анализиÑан модÑл, докаÑо VbaProject оÑÑава Ñ Ð¾ÑигиналниÑе недокоÑнаÑи байÑове.
ÐовÑоÑно използване на макÑоÑи Ð¾Ñ Ð¾ÑÑаÑели XLS ÑабоÑни книги
ФаÑадаÑа BIFF оÑÑазÑва Ñози Ð½Ð°Ð±Ð¾Ñ Ð¾Ñ Ð¸Ð½ÑÑÑÑменÑи Ñ ÐµÐ´Ð½Ð° допÑлниÑелна ÑÑÑпка. HasVBAProject ÑондиÑа заÑеден Ñайл, SaveVBAProjectToFile запиÑва ÑÑÑ
ÑанениеÑо на пÑоекÑа на диÑка, а LoadVBAProjectFromFile ÑеÑе пÑÐ¾ÐµÐºÑ Ð¾Ð±ÑаÑно в дÑÑга ÑабоÑна книга. ÐаобикалÑнеÑо пÑез Ñайл пÑави една обÑа задаÑа по модеÑнизаÑÐ¸Ñ Ð¿ÑоÑÑа: изваждаÑе макÑоÑиÑе Ð¾Ñ Ð¼Ð¾Ð´ÐµÐ» Ð¾Ñ ÐµÑаÑа на 2003 г. и ги поÑÑавÑÑе в пÑÑÑно генеÑиÑан XLS изÑ
од, без да Ñе изиÑква оÑигинален Ñаблон по вÑеме на изпÑлнение.
var
Src, Dst: IXLSWorkbook; // interface references: no manual Free
begin
Src := TXLSWorkbook.Create;
if Src.Open('legacy-model.xls') <= 0 then
raise Exception.Create('Cannot open legacy model');
if Src.HasVBAProject then
Src.SaveVBAProjectToFile('extracted-vba.bin');
Dst := TXLSWorkbook.Create;
Dst.Sheets.Add.Name := 'Report2026';
Dst.LoadVBAProjectFromFile('extracted-vba.bin');
Dst.SaveAs('report-with-macros.xls');
end;
ÐоделÑÑ Ð½Ð° памеÑÑа е капанÑÑ ÑÑк и ÑабоÑи пÑоÑивоположно на клаÑа XLSX. TXLSWorkbook Ñе дÑÑжи пÑез инÑеÑÑейÑа Ñ Ð¾ÑÑиÑане на пÑепÑаÑкиÑе (reference-counted) IXLSWorkbook, Ñака Ñе никога не го оÑвобождаваÑе ÑÑÑно; XLSX клаÑÑÑ TXLSXWorkbook е обикновен обекÑ, койÑо ÑÑÑбва да обгÑадиÑе Ñ try..finally и да оÑвободиÑе. СмеÑеÑе двеÑе конвенÑии в един модÑл и Ñе поÑÐ»ÐµÐ´Ð²Ð°Ñ ÑÑивове поÑади двойно оÑвобождаване на памеÑ. ÐÑе една гÑаниÑа, коÑÑо Ñи ÑÑÑÑва да Ñе Ñпазва: дÑÑжÑе извлиÑанеÑо и инжекÑиÑанеÑо в ÑамкиÑе на един и ÑÑÑ Ñайлов ÑоÑмаÑ. BIFF ÑÑÑ
ÑанениеÑо на пÑоекÑи и OOXML ÑайлÑÑ vbaProject.bin Ñа Ñоднини, а не един и ÑÑÑ ÐºÐ¾Ð½ÑейнеÑ, и конвейеÑ, койÑо ÑÑÑбва да генеÑиÑа макÑоÑи и в дваÑа ÑоÑмаÑа, ÑÑÑбва да поддÑÑжа оÑделен Ñаблон за макÑоÑи за вÑеки Ð¾Ñ ÑÑÑ
.
ÐÑнÑни пÑепÑаÑки: каÑÑаÑа оÑелÑва, кеÑиÑаниÑе ÑÑойноÑÑи - не
Ðа ÑабоÑни книги XLSX, HotXLS излага вÑнÑниÑе пÑепÑаÑки ÑÑез колекÑиÑÑа ExternalLinks. ÐÑÑка TXLSXExternalLink ноÑи Target, пÑÑÑ Ð¸Ð»Ð¸ URL адÑеÑа на оÑдалеÑенаÑа ÑабоÑна книга, плÑÑ ÑпиÑÑк SheetNames, именÑÐ²Ð°Ñ Ð»Ð¸ÑÑовеÑе, коиÑо ÑÑ ÑеÑеÑиÑа. РдвеÑе оÑелÑÐ²Ð°Ñ Ð¿Ñи ÑикÑл на оÑваÑÑне и Ð·Ð°Ð¿Ð¸Ñ Ð½ÐµÐ¿Ñоменени, каÑо можеÑе ÑÑÑо Ñака да изгÑадиÑе пÑепÑаÑка Ð¾Ñ Ð½ÑлаÑа:
var
Link: TXLSXExternalLink;
begin
Link := Book.ExternalLinks.Add('\\fileserver\finance\fx-rates-2026.xlsx');
Link.SheetNames.Add('FX');
if Book.ExternalLinks.Count > 0 then
Writeln(Format('%d external link(s): delivery requires reachable targets',
[Book.ExternalLinks.Count]));
end;
ÐÑаниÑаÑа Ñе намиÑа едно ниво по-Ð´Ð¾Ð»Ñ Ð¾Ñ ÑпиÑÑка Ñ Ñели. HotXLS пÑенаÑÑ Ð´Ð²ÑпоÑоÑно каÑÑаÑа на пÑепÑаÑкаÑа, Ñ.е. ÑелÑа и именаÑа на лиÑÑовеÑе, но не анализиÑа или пÑенапиÑва кеÑиÑаниÑе ÑÑойноÑÑи на клеÑкиÑе, коиÑо OOXML пази в елеменÑа sheetDataSet на пÑепÑаÑкаÑа. Този ÐºÐµÑ Ðµ Ñова, коеÑо позволÑва на Excel да показва поÑледно извеÑÑно ÑиÑло, когаÑо изÑоÑникÑÑ Ðµ оÑлайн, а генеÑиÑанаÑа ÑабоÑна книга Ñе доÑÑÐ°Ð²Ñ Ð±ÐµÐ· него. ÐоÑледиÑиÑе Ñе понаÑÑÑ Ð¾Ñ Ð¿Ð¾Ð»ÑÑаÑелÑ, а не Ð¾Ñ Ð²Ð°Ñ. ÐÑвоÑеÑе ÑакÑв Ñайл Ñам, кÑдеÑо ÑелÑа е недоÑÑÑпна - лапÑоп извÑн VPN или Ñподелен ÑеÑÑÑÑ, койÑо е бил пÑеименÑван, и ÑоÑмÑлиÑе, коиÑо завиÑÑÑ Ð¾Ñ Ð¿ÑепÑаÑкаÑа, Ñе Ñе пÑевÑÑÐ½Ð°Ñ Ð² #REF! или Ñе ÑпÑÐ°Ñ Ð·Ð°Ð´ ÑÑобÑение за акÑÑализаÑиÑ. Така Ð¾Ñ Ñова пÑоизÑиÑÐ°Ñ Ð´Ð²Ðµ пÑавила. Ðе обеÑавайÑе, Ñе генеÑиÑанаÑа ÑабоÑна книга Ñе показва ÑвоиÑе вÑнÑно ÑвÑÑзани ÑÑойноÑÑи оÑлайн. Ð ÑеÑеÑе ненÑÐ»ÐµÐ²Ð¸Ñ ExternalLinks.Count каÑо пÑедваÑиÑелно ÑÑловие за доÑÑавка, а не каÑо Ñ
аÑакÑеÑиÑÑика: вÑÑка Ñел ÑÑÑбва да бÑде доÑÑÑпна оÑÑам, кÑдеÑо ÑайлÑÑ Ð°Ð²ÑомаÑиÑно Ñе бÑде оÑвоÑен.
Ðакво запазва XLS ÑеÑеÑÑÑ Ð±Ð°Ð¹Ñ Ð¿Ð¾ байÑ
Ðа ÑÑÑÑкÑÑÑи, коиÑо не моделиÑа, ÑÑÑанаÑа BIFF има ÑазлиÑен оÑговоÑ: оÑÑавеÑе ги ÑоÑно Ñака, какÑо Ñа намеÑени. ÐеÑовеÑе и изгледиÑе на обобÑениÑе ÑаблиÑи (ÑамилиÑÑа запиÑи SX*), деÑиниÑииÑе на QueryTable, вÑнÑниÑе вÑÑзки кÑм данни, пеÑÑонализиÑаниÑе изгледи, каÑÑинкиÑе в гоÑниÑе колонÑиÑÑли и запиÑиÑе на Ñеми пÑÐµÐ¼Ð¸Ð½Ð°Ð²Ð°Ñ Ð¿Ñез ÑикÑл на оÑваÑÑне и Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ñо необÑабоÑени блокове запиÑи, неанализиÑани и непÑоменени. СамиÑе вÑнÑни пÑепÑаÑки пÑÐµÐ¼Ð¸Ð½Ð°Ð²Ð°Ñ Ð´Ð²ÑпоÑоÑно пÑез базовиÑе запиÑи EXTERNSHEET и SupBook. ÐÑ ÑÑÑана на XLS нÑма API Ñ ÑипизиÑано ÑÑздаване за ÑÑÑ
, но ÑÑÑеÑÑвÑваÑаÑа пÑепÑаÑка оÑелÑва пÑи ÑедакÑиÑане недокоÑнаÑа.
ÐапазванеÑо Ð±Ð°Ð¹Ñ Ð¿Ð¾ Ð±Ð°Ð¹Ñ Ðµ иÑÑинÑка гаÑанÑÐ¸Ñ Ñ Ð¾ÑÑÑÑ ÑÑб. ТÑй каÑо ниÑо не ÑеÑе ÑÑÑ ÑаненаÑа ÑÑÑÑкÑÑÑа, ваÑиÑе ÑедакÑии не Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° Ñ Ð¿Ð¾Ð²ÑедÑÑ. Ðо ÑÑÑаÑа пÑиÑина обаÑе и ниÑо не Ñ Ð°ÐºÑÑализиÑа. ÐмÑкнеÑе Ñедове пÑез Ñегион, кÑм койÑо ÑоÑи ÑÑÑ Ñанен ÐºÐµÑ Ð½Ð° Ð¿Ð¸Ð²Ð¾Ñ Ð¸Ð»Ð¸ заÑвка за ÑаблиÑа, и ÑÑÑÑкÑÑÑаÑа Ñе запази пÑÑвонаÑалниÑе Ñи кооÑдинаÑи, докаÑо данниÑе оÑÐ´Ð¾Ð»Ñ Ñе измеÑÑваÑ. ФайлÑÑ Ð²Ñе оÑе е валиден XML или BIFF; знаÑениеÑо Ð¼Ñ ÑÐ¸Ñ Ð¾ Ñе е оÑклонило Ð¾Ñ ÑÑоÑвеÑÑÑвиеÑо и никаква гÑеÑка не Ñе задейÑÑва, за да ви каже. ÐогиÑноÑо оÑоÑмление е генеÑиÑаниÑе пÑомени да Ñе дÑÑÐ¶Ð°Ñ Ð½Ð° лиÑÑове, коиÑо не ÑÑдÑÑÐ¶Ð°Ñ ÑÑÑ Ñанени ÑÑÑÑкÑÑÑи - ÑÑÑаÑа диÑÑиплина, коÑÑо заÑиÑава заклÑÑениÑе и конÑигÑÑиÑаниÑе за пеÑÐ°Ñ Ð»Ð¸ÑÑове в наÑаÑа ÑÑаÑÐ¸Ñ Ð·Ð° заÑиÑа на ÑабоÑни лиÑÑове и наÑÑÑойки на ÑÑÑаниÑи.
ÐеÑиÑикаÑÐ¸Ñ Ð½Ð° Ñайла, койÑо дейÑÑвиÑелно ÑÑе запиÑали
РдваÑа Ñежима на оÑказ Ñа ÑиÑ
и по вÑеме на запиÑ, Ñака Ñе ÑÑÑеÑÑвеноÑо поÑвÑÑждение Ñе пÑави ÑÑез повÑоÑно оÑваÑÑне на изÑ
ода, а не ÑÑез ÑлÑпо довеÑÑване на кода, койÑо го е пÑоизвел. ТÑи пÑовеÑки обÑ
ваÑÐ°Ñ Ð¿Ð¾ÑÑи вÑиÑко. ÐÑвоÑеÑе Ñайла оÑново и поÑвÑÑдеÑе, Ñе HasVbaProject вÑе оÑе вÑÑÑа true винаги, когаÑо Ñа Ñе оÑаквали макÑоÑи, коеÑо ÑÐ»Ð°Ð²Ñ Ð¸Ð·Ð³Ñбен полезен ÑÐ¾Ð²Ð°Ñ Ð¸ гÑеÑно ÑазÑиÑение в един ÑеÑÑ. ÐÑоÑеÑеÑе ExternalLinks.Count и го ÑÑавнеÑе Ñ Ð±ÑÐ¾Ñ Ð¿Ñеди пÑенапиÑванеÑо. След Ñова оÑвоÑеÑе Ñайла веднÑж в Excel Ñ Ð´ÐµÐ°ÐºÑивиÑани макÑоÑи, ÑÑй каÑо пÑовеÑкаÑа за Ñип ÑÑдÑÑжание в Excel е по-ÑÑÑога Ð¾Ñ Ñази на вÑÑка библиоÑека, а Excel е пÑогÑамаÑа, по коÑÑо ваÑиÑе клиенÑи Ñе оÑенÑÐ²Ð°Ñ Ñайла.
ÐиÑо Ð¾Ñ Ñова не изиÑква пÑлен паÑÑ Ð½Ð° влизане. ÐогаÑо ÑабоÑниÑе книги пÑиÑÑÐ¸Ð³Ð°Ñ Ð² голÑм обем и ÑÑÑбва Ñамо да пÑеÑениÑе кои Ð¾Ñ ÑÑÑ ÑÑдÑÑÐ¶Ð°Ñ ÑегÑлиÑано ÑÑдÑÑжание, олекоÑеноÑо ÑондиÑане в наÑаÑа ÑÑаÑÐ¸Ñ Ð·Ð° избÑоÑване на лиÑÑове и лека инÑпекÑÐ¸Ñ Ð½Ð° ÑабоÑни книги ви позволÑва да маÑÑÑÑÑизиÑаÑе ÑайловеÑе Ñ Ð¼Ð°ÐºÑоÑи и пÑепÑаÑки в по-ÑÑÑог конвейеÑ, пÑеди да Ñе ÑÑаÑÑиÑа пÑÑвоÑо пÑенапиÑване.
ÐÑколко вÑпÑоÑа вÑÐ·Ð½Ð¸ÐºÐ²Ð°Ñ Ð´Ð¾ÑÑаÑÑÑно ÑеÑÑо, за да им бÑде оÑговоÑено диÑекÑно. HotXLS никога не изпÑлнÑва макÑоÑиÑе, коиÑо запазва: в библиоÑекаÑа нÑма VBA ÑÑеда за изпÑлнение (VBA runtime), а Ñамо меÑ
анизÑм за ÑÑÑ
Ñанение, копиÑане, извлиÑане и инжекÑиÑане на пÑоекÑа каÑо данни. Ðа ÑÑÑвÑÑ Ñова е ÑвойÑÑво на ÑигÑÑноÑÑÑа, коеÑо Ñи ÑÑÑÑва да бÑде оÑбелÑзано, ÑÑй каÑо зловÑеден макÑоÑ, пÑÐµÐ¼Ð¸Ð½Ð°Ð²Ð°Ñ Ð¿Ñез конвейеÑа, оÑÑава инеÑÑен, докаÑо наÑÑолен Excel не оÑвоÑи Ñайла и поÑÑебиÑелÑÑ Ð½Ðµ ÑазÑеÑи ÑÑдÑÑжаниеÑо. ÐонвеÑÑиÑанеÑо на .xlsm в .xlsx ÑÑÑ Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ðµ на макÑоÑиÑе не е вÑзможно, и Ñова е пÑавило на ÑоÑмаÑа, а не огÑаниÑение на библиоÑекаÑа: ÑипÑÑ ÑÑдÑÑжание .xlsx деклаÑиÑа ÑабоÑна книга без макÑоÑи, Ñака Ñе единÑÑвениÑе ÑеÑÑни ÑезÑлÑаÑи Ñа да оÑÑанеÑе в .xlsm или да извикаÑе ClearVbaProject и да доÑÑавиÑе Ñайл, койÑо наиÑÑина нÑма Ñакива. ТиÑ
оÑо пÑеименÑване е единÑÑвениÑÑ Ð¸Ð·Ð±Ð¾Ñ, койÑо не задоволÑва никого. РкогаÑо ÑвÑÑзаниÑе клеÑки Ð¿Ð¾ÐºÐ°Ð·Ð²Ð°Ñ #REF! Ñлед пÑенапиÑване, пÑиÑинаÑа е липÑваÑиÑÑ ÐºÐµÑ Ð½Ð° ÑÑойноÑÑиÑе, обÑÑден по-гоÑе: новиÑÑ Ñайл ноÑи ÑелÑа, но не и кеÑиÑаниÑе ÑиÑла, Ñака Ñе Excel ÑÑÑбва да ÑазÑеÑи изÑоÑника пÑи оÑваÑÑне, а недоÑÑÑпен или ÑелаÑивен ÑпÑÑмо ÑÑедаÑа пÑÑ Ð³Ð¾ пÑовалÑ. Ðли гаÑанÑиÑайÑе, Ñе ÑелÑа е доÑÑÑпна, или запиÑеÑе изÑиÑлениÑе ÑÑойноÑÑи в клеÑкиÑе пÑеди доÑÑавка и пÑемаÑ
неÑе завиÑимоÑÑÑа изÑÑло.
РедакÑиÑанеÑо на ÑÑжди ÑабоÑни книги Ñе ÑÑÑÑои пÑедимно в запазване на неÑа, коиÑо не ÑÑе напиÑали и не ÑазбиÑаÑе напÑлно. ФÑнкÑииÑе за двÑпоÑоÑен пÑÐµÐ½Ð¾Ñ Ð½Ð° VBA и вÑнÑни пÑепÑаÑки, опиÑани ÑÑк, Ñе доÑÑавÑÑ Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñа HotXLS за Delphi и C++Builder, заедно Ñ Ð¾Ð´Ð¸ÑоÑÑкиÑе ÑвойÑÑва, коиÑо ви позволÑÐ²Ð°Ñ Ð´Ð° оÑкÑиваÑе ÑегÑлиÑано ÑÑдÑÑжание в моменÑа на пÑиÑÑигане на Ñайла.