ПредишенСледващото

Променете запетаята до точка

Ние не знаем.

Ние не знаем. Тъй като по подразбиране се приема от системата, а не в ексел "д

Macro да се промени:
С Application
# XA0; # XA0; # XA0; # XA0; .DecimalSeparator = ":"
# XA0; # XA0; # XA0; # XA0; "." .ThousandsSeparator =
# XA0; # XA0; # XA0; # XA0; .UseSystemSeparators = False
завършва с
Направят изводи.

Послепис
Но това не е в червата, да се включат в такъв боклук. В бъдеще ще има много проблеми, тъй като на този, както и в други разделители са correctament, за разлика от твоя.


> Но това не е Gud, да участват в такова боклук. В бъдеще там
> Много проблеми заради това, както и в други разделители са
> Correctament, за разлика от твоя.
<Задача еще и в том, чтоб при выходе из моей программы вернуть все в исходное (поставить запятую)/I>

Аз Delphi5 работи.


> Ние не знаем. Тъй като по подразбиране се приема
> От системата, а не в ексел "eMakros да се променят: С Application
> .DecimalSeparator = ":" .ThousandsSeparator
> = "." .UseSystemSeparators = FalseEnd WithDelay заключения.
>

SETUP Промяна на системата, преди да започнете Excel:
ако DecimalSeparator = "", тогава
започвам
# XA0; ако MessageDlg ( "Внимание." + # 13 + # 13 +
# XA0; "За нормална работа, програмата изисква десетичната част на цифрите е най-важното." # + 13+
# XA0; "? Промяна запетаята до точка", MtWarning, [mbYes, mbNo], 0) = mrNO след Прекъсване;
# XA0; DecimalSeparator: =; "."
# XA0; // DateSeparator: =; "."
# XA0; // ShortDateFormat: = "dd.mm.yyyyy";
# XA0; // ShortTimeFormat: = "чч: мм: сс";
приключи;
приключи;

И вие можете да попитате: "За нормалната работа на програмата е необходимо. За да десетичната част от номерата е смисълът", това е като?

Какво прави тази програма?


> И можете да попитате: "За нормалната работа на програмата
> Необходимо е десетичната част номера
> Има една точка ", това е като?

Програма поток изчисление topiva самолети. Проблемът тук

// Тук ще получите съобщение за грешка
// В Excel, трябва да инсталирате: Инструменти -> Настройки -> International -> точка
SHEET.CELLS [3,2] .NumberFormat: = "000,00";
// необходимо,
// SHEET.CELLS [3,2] .NumberFormat: = "000,00";

Ако предварително настроен на Excel разделител точка, това не е проблем, но аз не знам кой ще продължи да работи с програмата. всеки не може да обясни какво и къде е необходимо за предварително конфигуриране.

За съжаление, аз не разбирам. И защо няма да се промени, преди да влезе точка на запетая или нещо, което не разбирам?

По принцип, ако аз все още знаеше досега пространствените обяснения, тогава може би трябва това:

Var
# XA0; ите: низ;
# XA0; Excel: OleVariant;
# XA0; работна книга, лист: Вариант;
започвам
# XA0; S: = ExtractFilePath (ParamStr (0)) + "fff.xls";
# XA0; Excel: = CreateOleObject ( "Excel.Application");
# XA0; работна книга: = Excel.Application.WorkBooks.Add;
# XA0; съставките: = WorkBook.WorkSheets [1];
# XA0; Excel.ActiveWorkBook.Saveas (S, xlNormal, "" "," фалшиви фалшиви);
# XA0; опитате
# XA0; # XA0; SHEET.CELLS [2,2]: = "референтна стойност";
# XA0; # XA0; SHEET.CELLS [3,2]: = "1965";
# XA0; # XA0; Sheet.Columns [2] .Изберете; // За всички 2 високоговорителя
# XA0; # XA0; SHEET.CELLS [3,2] .Изберете; // За клетка
# XA0; # XA0; Excel.Selection.NumberFormat: = "0,00";

# XA0; # XA0; Excel.Application.ActiveWorkbook.Save;
# XA0; # XA0; Application.MessageBox (PChar (и) ", попълнена.", MB_OK + MB_ICONINFORMATION);
# XA0; накрая
# XA0; # XA0; Excel.WorkBooks.Close;
# XA0; край;
приключи;


> По принцип, ако аз все още знаеше досега си пространство
> Обяснение, а след това най-вероятно се нуждаете е тук:

Това не е така. Имам нужда да променя Excel-ти Международен настройки. Вижте как аз го направих без да ми програма. Бих стартира Excel, натисна Параметри на услугата-интернационал, а след това се отстраняват в системата кърлежи използване в разделителя на клетка и десетичен разделител ЧАСТ настроени към точката, като натиснете OK. Това е всичко.

Така че аз трябва да се постави този въпрос на моята програма. Това означава, че промените запетаята до точка, преди стартиране на файла # XA0; Excel, и след това да се върне всичко обратно, тоест поставя запетая (но отново програмата).

Добре, аз ще премине. Говорейки слепоглухите.
Разбирам, че искате да промените разделител на системата, аз не разбирам защо. Ако програмно попълнете XLS-документ, не съществува такъв проблем, за който е било необходимо да се промени сепаратора, защото една и съща сепаратор може да се промени в програмата. Опитвам се да ви обясня, че имате грешка при определяне на задачите, които са си поставили не отстрани проблема за решаване на всички проблеми, с които се сблъсквате (съдейки единствено от публикациите си).
Донесох ти пример, в който се вписва дори и дробно число.
Въпреки това, предполагам, че трябва да въведете номер:
SHEET.CELLS [3,2]: = "1965,45";
След това, да можем да го съхранява в клетката като текст. Въпреки това, ако ние не направим това:
SHEET.CELLS [3, 2]: = StringReplace ( "." "1965,45", "", ,, [rfReplaceAll]);
След това всичко ще бъде Chiki-пропуснати ползи. И няма защо да смени системата разделители.
Ние ще продължим. Ако искате, какво би се получило
SHEET.CELLS [3,2]: = "1965";
Числото в клетката като otobrazilost 1,965.00, а след това е необходимо да се направи това
SHEET.CELLS [3, 2] .NumberFormat: = "0,00";
SHEET.CELLS [3, 2] = "1965";
Т.е. първо зададете NumberFormat, а след това да въведете номера.

Всичко това е последният опит да ви обясня грешката си. Или се опитват да изразят проблема, в който ние трябва задължително да се промени сепаратора. или може би можете да помогнете на някой друг.

О-о-о. Това ми хрумна. Вие искате, когато отваряте документа, вместо запетаи показват точка, нали?

Като цяло, някои телепатия.

Всеки потребител има нужда?

// Дефиниране на път към IShR_ExcelA4.xls файла, който искате да отворите, за редактиране (тя suschechtvuet и разполага с три листа)
п: = APPLICATION.ExeName;
п: = ExtractFilePath (п);
п: = N + "IShR_ExcelA4.xls";

опитвам
Excel: = CreateOleObject ( "Excel.APPLICATION")
с изключение на
ShowMessage ( "Няма достъп до сървъра" ExcelXP "");
Exit;
END;
Screen.Cursor: = crHourGlass;
//Excel.SheetsInNewWorkbook:=1;// добавите нова книга с едно листо
Excel.Workbooks.Open (п, 0);

****************** // добавяне на записи в ******* "Sheet1"
Съставките: = Excel.Workbooks [1] .Sheets [1]; // ПЪТ ИЗЧИСЛЯВАНЕ И ГОРИВО
SHEET.Columns.Clear; // изчистване на предишните записи
SHEET.PageSetup.PrintGridLines: = вярно, // оставя окото печат

// тук, ще данни О

************************* // добавяне на записи в "Sheet2" ***************** *
ЛИСТ: = Excel.Workbooks [1] .Sheets [2];
SHEET.Columns.Clear; // изчистване на предишните записи
// SHEET.CELLS [6,22]: = "постоянно тегло";
// SHEET.CELLS [7,22]: = "Load";

// тук, ще данни О

Screen.Cursor: = crDefault;
Excel.VISIBLE: = вярно; // Покажи Excel
Label1.Caption: = "Време за сваляне # XA0; "+ TimeToStr (Time-BegTime);
END;
край.

Така че това prmer ми показа, че Excel е добре управлявано и вероятно е причината, данните, които се показват в един файл Excel след старта си.

Започнах да се провери по-нататък. Това означава, че се опита да изходни данни

Докато проверка (ако искате разбира се) на действието на този пример, ще се движи по-дълго време, а след това продължи raskaz за своите преживявания. За това как си помислих, причината.

Програмата е направена отдавна и работи добре в Win98 в Office 98

Този офис не съществува в природата, твърди срещу пирати.


> # XA0; разговор глухи и слепи.

Добавих информация:

единица Unit1;
интерфейс
употреби
# XA0; Windows, съобщения, SysUtils, Уроци, графики, контроли, формуляри, диалогови прозорци,
# XA0; EXCEL97, OleServer, ComObj, AppEvnts, StdCtrls, решетки, бутони, ExtCtrls, Clipbrd, ComCtrls;
тип
# XA0; TForm1 = клас (TForm)
# XA0; # XA0; Button1: TButton;
# XA0; # XA0; Label1: TLabel;
# XA0; # XA0; процедура Button1Click (Sender: TObject);
# XA0; # XA0; процедура FormCreate (Sender: TObject);
# XA0; частен
# XA0; # XA0;
# XA0; обществен
# XA0; # XA0;
# XA0; # XA0; Excel: Вариант;
# XA0; край;
Var
# XA0; Form1: TForm1;
изпълнение
ПРИЛОЖЕНИЯ # XA0; ShellAPI;

процедура TForm1.Button1Click (Sender: TObject);
CONST
Съобщ = "Вие се опитвате да се установи връзка със сървъра" Microsoft ExcelXP "Този процес може да отнеме значително време .." # + 13+ ", за да продължите?";
VAR
ЛИСТ: Вариант;
п: OleVariant;
BegTime: TDateTime;
ЗАПОЧНЕТЕ
АКО APPLICATION.MessageBox (Msg, "Изтегляне на Microsoft ExcelXP", MB_YesNO + MB_ICONEXCLAMATION) = IDNO я напуска;
BegTime: = Time; // покажат това на качване ExcelXP

// Дефиниране на път към IShR_ExcelA4.xls файла, който искате да отворите за редактиране
п: = APPLICATION.ExeName;
п: = ExtractFilePath (п);
п: = N + "IShR_ExcelA4.xls";

опитвам
Excel: = CreateOleObject ( "Excel.APPLICATION")
с изключение на
ShowMessage ( "Няма достъп до сървъра" ExcelXP "");
Exit;
END;
Screen.Cursor: = crHourGlass;
//Excel.SheetsInNewWorkbook:=1;// добавите нова книга с едно листо
Excel.Workbooks.Open (п, 0);

****************** // добавяне на записи в ******* "Sheet1"
Съставките: = Excel.Workbooks [1] .Sheets [1]; // (ПЪТ изчисление и гориво)
SHEET.Columns.Clear; // изчистване на предишните записи
SHEET.PageSetup.PrintGridLines: = вярно, // оставя окото печат

SHEET.CELLS [2,2]: = "референтна стойност";
SHEET.CELLS [3,2]: = "19,65";

Screen.Cursor: = crDefault;
Excel.VISIBLE: = вярно; // Покажи Excel
Label1.Caption: = "Време за сваляне # XA0; "+ TimeToStr (Time-BegTime);
END;

И тогава, когато работи Delphi изкачи грешки не могат да се регулират с помощта на имот NumberFormat Клас страницата за

Така че, в случай формат.
Аз съм в програмата замества всички изрази от типа
SHEET.CELLS [3,2] .NumberFormat: = "000,00";

Затова реших, че без значение какво има в тях е сепаратора моята програма е да се направи точка за разделител, да работи, и когато изключите, за да се върне това, което е там unih (период или запетая).

Струва ми се, че това може да бъде направено чрез добавяне при стартиране
промяна на командния ред сепаратор в системата:
процедура TForm1.FormCreate (Sender: TObject);
започвам
ако DecimalSeparator = "", тогава
започвам
# XA0; ако MessageDlg ( "Внимание." + # 13 + # 13 +
# XA0; "За нормална работа, програмата изисква десетичната част на цифрите е най-важното." # + 13+
# XA0; "? Промяна запетаята до точка", MtWarning, [mbYes, mbNo], 0) = mrNO след Прекъсване;
# XA0; DecimalSeparator: =; "."
# XA0; // DateSeparator: =; "."
# XA0; // ShortDateFormat: = "dd.mm.yyyyy";
# XA0; // ShortTimeFormat: = "чч: мм: сс";
приключи;
приключи;

Това не помага. Затова реших да попитам добре осведомен момчето онлайн.

Между другото, ако оставите # XA0; SHEET.CELLS [3,2] .NumberFormat: = "000,00",
и Excele предварително зададен разделител точка (Tools- Options-International доставка точка), а след това всичко тип-топ.
Е, аз не пиша същите инструкции за ползване на програмата. въпреки че може да бъде необходимо. но само, че е необходимо да се научите как да се промени запетая в областта на софтуера Excel до точката, както и "Tools- Options-International-да се сложи край".

Форматът трябва да съвпада с регионалните настройки, и това не е само Excel, но и за други приложения. Ти сам се счупи всички изисквания на операционната система, а кодът е твое, това, което не позволява да се напише правилно.


> Програмата е направена отдавна и работи добре в Win98 в
> Office 98

Извинете. Мисля, че схванахте идеята. 97


> Анатолий Podgoretsky

Опитът потвърдено, че много компютърни потребители, толкова много възможности. така че програмата трябва да направи това, което е необходимо, и след приключване на всички обратно на мястото си. че трябва да бъде независим от тях. това, което аз съм се стреми

А nelzyali като че разпитва разделител на системата и разтоварване в Ексел да се използва? Т.е. програмата счита, начина, по който тя харесва, и зареден в Excel всичко, както той обича.


> Galinka

Опитвам вместо DecimalSeparator: = "". изпрати SendMessage
Или по-скоро не се опита, и търси система parametrvy необходимата комуникация

Ами тогава нека на настройките по подразбиране Excel-I инсталиран, да работи с нашия софтуер, и след това се върнете всичко, за да му оригинал, това е (за потребители) .Може как? Това е въпросът.
Никога не знаеш кой и какво се променя, когато се работи с Excel. Там хората могат да отговарят на техните нужди променени и забравени. Фактът, и дадена възможност - да се сложи точка или запетая в прозорец на Международните Настройки. Тя само Анатолий Podgoretsky всички рубла за предлага да накаже и разработчици на Excel, както можете да видите мислят различно, което ви позволява да се направи така, че някой трябва. И с право. Стандартите също ще дойдат с времето. преди точката, че сега е запетая. ние сме астрономите да мислят. Аз не предлагам да се направи точно както аз искам. Предлагам да се направи някаква работа, а след това нулира.

Макар че аз мисля така. съобщение да се намерят в системата, за да замени системата сепаратор със стартирането на Excel на (и след това се връща съобщение до всички в оригинал няма значение какво е то), или е необходимо да се напише инструкциите в програмата.

в действителност, и това, което трябва да се промени?


> Може ли вашата програма изисква високо ръка и ненужна?

То не изисква твърде много. напротив, че ще бъде необходимо да се подновят, но през цялото време там

Не разбирам какво пречи напиши SHEET.CELLS [3,2] .NumberFormat: = Format ( "000% S00", [XLSeparator]); # XA0;, където XLSeparator вземе от о-в Света, който показва настройката Excel подходящия?

> SHEET.CELLS [3,2]: = "19.65";

Ако този брой не е текст, тогава защо не е написано като номер?
SHEET.CELLS [3,2]: = 19.65;


> Таки ясно какво предотвратява напиши SHEET.CELLS [3,2] .NumberFormat:
> = Формат ( "000% S00", [XLSeparator]);

[XLSeparator] Не е нужно. Аз Delphi5 работи. ще бъдат преместени в рамките на една версия, но е свързана с програмата за няколко големи komonentam.

> [XLSeparator] Не е нужно.

Аз не съм съвсем ясно?
XLSeparator - низ променлива или характер тип е взета от остров Excel.DecimalSeparator Светия!

Ако потребителят се нуждае Eksele точка дойде момент, когато искате да споделите с запетая запетая, заместване на подходящия сепаратора в данните на програмата, ако е необходимо.

Процедура.
Var
XLSeparator: вариант;
започвам
XLSeparator: = Excel.DecimalSeparator;
SHEET.CELLS [3,2]: = "19,65";
SHEET.CELLS [3,2] .NumberFormat: = Формат ( "000% S00", [XLSeparator]);
приключи;

Имаш Формат грешка% невалидни или несъвместими с аргумент

Памет: 0.86 MB
Време: 0,052 гр

Свързани статии

Подкрепете проекта - споделете линка, благодаря!