Változás a vessző egy bizonyos pontig

Változás a vessző egy bizonyos pontig

Nem tudjuk.

Nem tudjuk. Mivel alapértelmezés szerint kiveszik a rendszerből, és nem az Excel „e

Macro változtatni:
Az alkalmazás
# XA0; # XA0; # XA0; # XA0; .DecimalSeparator = ":"
# XA0; # XA0; # XA0; # XA0; .ThousandsSeparator = ""
# XA0; # XA0; # XA0; # XA0; .UseSystemSeparators = False
végződésű
Következtetéseket levonni.

Ui
De ez nem a bélben, vegyenek részt az ilyen szemetet. A jövőben nem lesz sok probléma, mert ez, mint a többi határolók correctament, ellentétben a tiéd.


> De nem gud, hogy vegyenek részt az ilyen szemetet. A jövőben is
> A sok probléma, mert ez, mint a többi határolók
> Correctament, ellentétben a tiéd.
<Задача еще и в том, чтоб при выходе из моей программы вернуть все в исходное (поставить запятую)/I>

Azt Delphi5 működik.


> Nem tudjuk. Mivel alapértelmezésben készítették
> A rendszer, és nem az Excel „eMakros változtatni: A bejelentés
> .DecimalSeparator = ":" .ThousandsSeparator
> = "" .UseSystemSeparators = FalseEnd WithDelay következtetéseket.
>

SETUP módosítása előtt a rendszer az Excel indításakor:
ha DecimalSeparator = "", akkor
kezdődik
# XA0; ha MessageDlg ( "figyelmeztetés." + # 13 + # 13 +
# XA0; „Normál működés, a program előírja, hogy a tizedes rész a számok volt a lényeg.” # + 13+
# XA0; "módosítása a vessző, hogy az a pont?", MtWarning, [mbYes, mbNo], 0) = mrNO majd megszakítása;
# XA0; DecimalSeparator: =; ""
# XA0; // DateSeparator: =; ""
# XA0; // ShortDateFormat: = "dd.mm.yyyyy";
# XA0; // ShortTimeFormat: = "hh: mm: ss";
végén;
végén;

És akkor kérheti, „A normális működését a program szükséges. A tizedes részét szám volt az a pont,” ez olyan, mint?

Mi ez a program nem?


> És akkor kérheti, „A normális működését a program
> Szükséges, hogy a tizedes részének számok
> Van egy pont, „ez olyan, mint?

Program flow számítás topiva repülőgép. A probléma itt

// Itt egy hibaüzenetet kap
// Az Excel telepíteni kell: Eszközök -> Beállítások -> International -> pont
SHEET.CELLS [3,2] .NumberFormat: = "000.00";
// szükség,
// SHEET.CELLS [3,2] .NumberFormat: = "000,00";

Ha előre beállított Excel elválasztó pont, nincs probléma, de nem tudom, hogy ki fogja folytatni a munkát a programmal. mindenki tudja megmagyarázni, mit és hol kell előre konfigurálhatók.

Sajnos nem értettem. És miért nem változik mielőtt egy pontot egy vessző, vagy valami amit nem értek?

Általában, ha én még tudták messze a térbeli magyarázatokat, akkor valószínűleg szüksége van erre:

var
# XA0; s: string;
# XA0; Excel: OleVariant;
# XA0; munkafüzet lap: Variant;
kezdődik
# XA0; s: = ExtractFilePath (ParamStr (0)) + "fff.xls";
# XA0; Excel: = CreateOleObject ( "Excel.Application");
# XA0; WORKBOOK: = Excel.Application.WorkBooks.Add;
# XA0; Sheet: = WorkBook.WorkSheets [1];
# XA0; Excel.ActiveWorkBook.Saveas (s, xlNormal, "", "", hamis, hamis);
# XA0, próbálja
# XA0; # XA0; SHEET.CELLS [2,2]: = "referenciaérték";
# XA0; # XA0; SHEET.CELLS [3,2]: = "1965";
# XA0; # XA0; Sheet.Columns [2] lehetőségre.Válassza; // Minden 2 hangszóró
# XA0; # XA0; SHEET.CELLS [3,2] lehetőségre.Válassza; // A sejt
# XA0; # XA0; Excel.Selection.NumberFormat: = "0,00";

# XA0; # XA0; Excel.Application.ActiveWorkbook.Save;
# XA0; # XA0; Application.MessageBox (PChar (s), "Befejezve.", MB_OK + MB_ICONINFORMATION);
# XA0, végül
# XA0; # XA0; Excel.WorkBooks.Close;
# XA0; end;
végén;


> Általában, ha én még tudták messze a helyet
> Magyarázat, akkor valószínűleg szükség van:

Ez nem olyan. Meg kell változtatni az Excel-ik nemzetközi beállításokat. Lásd, hogyan csináltam anélkül, hogy a programot. Azt indul el az Excel, majd megnyomta a szolgáltatás paraméterei-International, majd eltávolítjuk a kullancsot használható rendszer a sejtszeparátort és tizedes elválasztó rész beállítva, hogy a pont az OK gombbal. Ez minden.

Szóval van, hogy ezen a ponton az én programom. Ez azt jelenti, változtassa meg a vessző egy pont előtt a fájlt # XA0, Excel, majd vissza mindent vissza, hogy van, hogy egy vesszőt (, de ismét a program).

Rendben, kihagyom. Beszélő süket és vak.
Megértem, hogy meg akarja változtatni a rendszert elválasztó, nem értem, hogy miért. Ha programozott töltse xls-dokumentum, nincs ilyen probléma, amelyre nem volt szükséges megváltoztatni a szeparátor, mert ugyanazt az elválasztó lehet változtatni a programban. Próbálom elmagyarázni, hogy van egy hiba feladatainak meghatározásakor beállította a nem oldják meg a problémát megoldani az esetleges problémák (ítélve kizárólag a hozzászólásaidat).
Akkor hozott néhány példát, amelyben még egy tört szám szerepel.
Tegyük fel azonban, hogy meg kell adnia egy számot:
SHEET.CELLS [3,2]: = "1965,45";
Aztán igen, mi kap ez alatt a sejtben a szöveget. Azonban, ha ezt tesszük:
SHEET.CELLS [3, 2]: = StringReplace ( "1965,45", " ",, [rfReplaceAll]".");
akkor minden rendben lesz chiki-fürtöket. És nem munkarendek elválasztó.
Mi továbbra is. Ha azt szeretnénk, mit írjon
SHEET.CELLS [3,2]: = "1965";
A szám a sejtben otobrazilost 1965,00, akkor az ehhez szükséges
SHEET.CELLS [3, 2] .NumberFormat: = "0,00";
SHEET.CELLS [3, 2] = "1965";
Ie első rendelni egy NumberFormat, majd illessze be a számot.

Mindez az utolsó kísérlet, hogy elmagyarázza a hiba. Vagy próbálja megfogalmazni a problémát, amit meg kell feltétlenül változik a szeparátor. vagy talán segíthet valaki másnak.

Oh-oh-oh-oh. Felderengett bennem. Azt szeretné, ha kinyitod a dokumentum helyett vessző jelenik pont, igaz?

Általában néhány telepátia.

A felhasználói igények is?

// Adjuk útvonalát IShR_ExcelA4.xls kívánt fájlt megnyitni szerkesztésre (ez suschechtvuet, és három lap)
n: = APPLICATION.ExeName;
n: = ExtractFilePath (n);
n: = n + "IShR_ExcelA4.xls";

megpróbál
Excel: = CreateOleObject ( "Excel.APPLICATION")
kivéve
ShowMessage ( "Nincs hozzáférés a szerverhez" ExcelXP "");
Kilépés;
END;
Screen.Cursor: = crHourGlass;
//Excel.SheetsInNewWorkbook:=1;// egy új könyv, egy levél
Excel.Workbooks.Open (n, 0);

****************** // bejegyzéseket a „Munka1” *******
LAP: = Excel.Workbooks [1] .Sheets [1]; // ÙTVONALTERVEZÉS ÉS TÜZELŐANYAG
SHEET.Columns.Clear; // törölje a korábbi bejegyzéseket
SHEET.PageSetup.PrintGridLines: = true; // engedélyezve mesh nyomtatás

// itt is O adatok

************************* // bejegyzéseket a „Munka2” ***************** *
LAP: = Excel.Workbooks [1] .Sheets [2];
SHEET.Columns.Clear; // törölje a korábbi bejegyzéseket
// SHEET.CELLS [6,22]: = "tömegállandóságig";
// SHEET.CELLS [7,22]: = "betöltése";

// itt is O adatok

Screen.Cursor: = crDefault;
Excel.VISIBLE: = TRUE; // megjelenítése Excel
Label1.Caption: = „Letöltési idő # XA0; „+ TimeToStr (Time-BegTime);
END;
végén.

Tehát ez prmer megmutatta nekem, hogy az Excel jól vezetett, és valószínűleg az oka az adatokat, hogy megjelenik egy Excel fájl elindítása után.

Elkezdtem ellenőrizni tovább. Ez azt jelenti, megpróbálta kimeneti adatok

Miközben ellenőrzi (ha akarod természetesen) a működését ez a példa, én mozogni egy hosszú idő, majd tovább raskaz tapasztalataikról. Arról, hogy milyen rájöttem az oka.

A program készült régen, és működött a Win98 c Office 98

A hivatal nem létezik a természetben, azt állítja, kalózok ellen.


> # XA0; Conversation süket és vak.

Azt hozzáadott információ:

egység egység1;
felület
felhasználások
# XA0, a Windows, az Üzenetek, SysUtils, osztályok, grafika, vezérlők, Forms, párbeszédablakok,
# XA0; Excel97, OleServer, ComObj, AppEvnts, StdCtrls, Rácsok, gombok, ExtCtrls, Clipbrd, ComCtrls;
típus
# XA0; TForm1 = osztály (TForm)
# XA0; # XA0; Button1: TButton;
# XA0; # XA0; Label1: TLabel;
# XA0; # XA0; eljárással Button1Click (Sender: TObject);
# XA0; # XA0; eljárással FormCreate (Sender: TObject);
# XA0; magán-
# XA0; # XA0;
# XA0, köz-
# XA0; # XA0;
# XA0; # XA0; Excel: Variant;
# XA0; end;
var
# XA0; Form1: TForm1;
végrehajtás
FELHASZNÁLÁS # XA0; ShellAPI;

eljárás TForm1.Button1Click (Sender: TObject);
CONST
Msg = „próbál kapcsolatot létesíteni a szerverrel” Microsoft ExcelXP „Ez a folyamat jelentős időt ..” # + 13+ „folytatni?”;
VAR
LAP: Variant;
N: OleVariant;
BegTime: TDateTime;
BEGIN
HA APPLICATION.MessageBox (MSG, "Letöltés Microsoft ExcelXP" MB_YesNO + MB_ICONEXCLAMATION) = ID NO majd lépjen ki;
BegTime: = Idő; // ellenőrizze a feltöltés ideje ExcelXP

// Adjuk útvonalát IShR_ExcelA4.xls kívánt fájlt megnyitni szerkesztésre
n: = APPLICATION.ExeName;
n: = ExtractFilePath (n);
n: = n + "IShR_ExcelA4.xls";

megpróbál
Excel: = CreateOleObject ( "Excel.APPLICATION")
kivéve
ShowMessage ( "Nincs hozzáférés a szerverhez" ExcelXP "");
Kilépés;
END;
Screen.Cursor: = crHourGlass;
//Excel.SheetsInNewWorkbook:=1;// egy új könyv, egy levél
Excel.Workbooks.Open (n, 0);

****************** // bejegyzéseket a „Munka1” *******
LAP: = Excel.Workbooks [1] .Sheets [1]; // (ÙTVONALTERVEZÉS és üzemanyag)
SHEET.Columns.Clear; // törölje a korábbi bejegyzéseket
SHEET.PageSetup.PrintGridLines: = true; // engedélyezve mesh nyomtatás

SHEET.CELLS [2,2]: = "referenciaérték";
SHEET.CELLS [3,2]: = "19,65";

Screen.Cursor: = crDefault;
Excel.VISIBLE: = TRUE; // megjelenítése Excel
Label1.Caption: = „Letöltési idő # XA0; „+ TimeToStr (Time-BegTime);
END;

És akkor, ha fut Delphi felmászott hibákat nem lehet beállítani az ingatlan NumberFormat CLASS CLASS oldal

Tehát abban az esetben formátumban.
Benne vagyok a programban felváltja az összes kifejezést a típus
SHEET.CELLS [3,2] .NumberFormat: = "000.00";

Ezért úgy döntöttem, hogy nem számít, mi volt bennük az elválasztó a programom az, hogy az elválasztó pont, hogy a munka, és ha kikapcsolja visszatérni, ami ott volt unih (időszak, vagy vessző).

Úgy tűnik számomra, hogy ez megtehető hozzáadásával induláskor
parancsnokváltására vonalleválasztó a rendszerben:
eljárás TForm1.FormCreate (Sender: TObject);
kezdődik
ha DecimalSeparator = "", akkor
kezdődik
# XA0; ha MessageDlg ( "figyelmeztetés." + # 13 + # 13 +
# XA0; „Normál működés, a program előírja, hogy a tizedes rész a számok volt a lényeg.” # + 13+
# XA0; "módosítása a vessző, hogy az a pont?", MtWarning, [mbYes, mbNo], 0) = mrNO majd megszakítása;
# XA0; DecimalSeparator: =; ""
# XA0; // DateSeparator: =; ""
# XA0; // ShortDateFormat: = "dd.mm.yyyyy";
# XA0; // ShortTimeFormat: = "hh: mm: ss";
végén;
végén;

Ez nem segít. Ezért úgy döntöttem, hogy kérje fel a hozzáértő fiú az interneten.

By the way, ha elhagyja # XA0; SHEET.CELLS [3,2] .NumberFormat: = "000.00",
és Excele előre elválasztó pont (Eszközök- Options-International-ellátó pont), akkor az összes tiptop.
Nos, én nem írok ugyanazt a használati utasítást a program. bár lehet szükség. de csak meg kell tanulni, hogyan kell változtatni a vessző Excel program arra a pontra, valamint az „Eszközök- Options-International-, hogy vessenek véget”.

A formátum kell egyeznie a területi beállításokat, és ez nem csak az Excel, hanem más alkalmazások számára. Te magad is megtörve minden követelményének az operációs rendszer, és a kódot a tiéd, ami megakadályozza, hogy helyesen írni.


> A program készült régen, és működött a Win98 c
> Office 98

Bocsánat. Azt hiszem, az ötlet. 97


> Anatolij Podgoretsky

A tapasztalat igazolta, hogy sok számítógép-felhasználók, így sok lehetőség. így a program kell tenni, ami szükséges, és befejezésekor minden vissza a helyére. hogy kell tőlük független. mi a célom

Egy nelzyali mint lekérdezheti a rendszer elválasztó és lerakodás Eksel kezelhető? Ie A program úgy véli, ahogy ő szereti, és be lehet tölteni az Excel minden, ahogy neki tetszik.


> Galinka

Igyekszem helyett DecimalSeparator: = "". Levél SendMessage
Vagy inkább nem próbálja meg, és már keresi a szükséges kommunikációs rendszer parametrvy

Nos, akkor nézzük alapértelmezett beállítások az Excel-én beiktatott, hogy működjön együtt a szoftvert, majd vissza mindent az eredeti volt (felhasználók) .Csak hogyan? Ez itt a kérdés.
Soha nem tudhatod, hogy ki és mi változik, ha dolgozik az Excel. Van ember elfér az igényeiknek csípett, és feledésbe merült. Az a tény, és lehetőséget -, hogy egy pont vagy vessző egy ablakban a Nemzetközi beállítások. Csak Anatolij Podgoretsky összes rubel kínál büntetésére és Excel fejlesztők láthatja másként gondolkodnak, amely lehetővé teszi, hogy erre valaki kell. És ez így van rendjén. A szabványokat is eljön az idő. pont előtt volt már egy vesszőt. mi vagyunk a csillagászok gondolni. Én nem javaslom, hogy nem csak akarok. Azt javaslom, hogy némi munkát, majd vissza.

Bár azt hiszem. Üzenet megtalálható a rendszer helyett a rendszer elválasztó az Excel indítási (majd visszatér egy üzenet minden az eredeti nem számít, mi volt), vagy meg kell írni az utasításokat a programban.

sőt, és mit kell változtatni?


> Lehet a program megköveteli a nagy kézzel és felesleges?

Nem igényel túl sok. éppen ellenkezőleg kellene frissíteni, de minden alkalommal ott

Nem érti, mi akadályozza levelet SHEET.CELLS [3,2] .NumberFormat: = Format ( "000% S00" [XLSeparator]); # XA0; ahol XLSeparator hogy a Szent-sziget, amely megjeleníti a megfelelő beállítást Excel?

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

Ha ez a szám nem szöveg, akkor miért nem írt egy számot?
SHEET.CELLS [3,2]: = 19.65;


> Taki világos, hogy mi akadályozza levelet SHEET.CELLS [3,2] .NumberFormat:
> = Formátum ( "000% S00", [XLSeparator]);

[XLSeparator] Nem tudom. Azt Delphi5 működik. lenne költözött egy változata, de van kötve, hogy a program több jelentős komonentam.

> [XLSeparator] Nem tudom.

Nem vagyok egészen világos?
XLSeparator - változó karakterláncot vagy karakter venni a Holy Island Excel.DecimalSeparator!

Ha a felhasználó igényli Eksele pont jön egy pont, amikor azt szeretné, hogy egy vessző vessző helyett a megfelelő elválasztó az adatokat a program, ha szükséges.

Eljárás.
var
XLSeparator: variáns;
kezdődik
XLSeparator: = Excel.DecimalSeparator;
SHEET.CELLS [3,2]: = "19,65";
SHEET.CELLS [3,2] .NumberFormat: = formátum ( "000% S00", [XLSeparator]);
végén;

Megvan a hiba Format% érvénytelen vagy összeférhetetlen érv

Memória: 0.86 MB
Idő: 0.052 c

Kapcsolódó cikkek