<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10141</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10141&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: не получается сумму с копейками записать в ячейку Excel как число».]]></description>
		<lastBuildDate>Fri, 09 Jan 2015 09:43:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90232#p90232</link>
			<description><![CDATA[<p><span style="color: Green">И здесь нарисовался <img src="//forum.script-coding.com/img/smilies/mad.png" width="15" height="15" />.</span></p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 09 Jan 2015 09:43:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90232#p90232</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88945#p88945</link>
			<description><![CDATA[<div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>Не проще брать число и писать число?</p></blockquote></div><p>Попробовал -&nbsp; действительно проще ;-)<br />Здравствуйте все!<br />Прошу прощения за перерыв в сообщениях - сначала неделю готовился к отпуску, потом отпуск, потом неделю разгребал после отпуска накопившиеся дела. А тут подошло время отчёта за ноябрь - хочешь-не хочешь, а пришлось вернуться к теме ;-)<br />Нашёл, как решить проблему (пока &quot;пытался выделить из всего большого скрипта маленький кусочек&quot; ;-). <br />После того, как происходит заполнение листа книги числами, в скрипте ещё проходит замена шаблонных значений в строках на реальные значения (например, в шаблоне листа была строка &quot;Отчёт за %mmmm_gggg%&quot;, и надо было в этой строке заменить &quot;%mmmm_gggg%&quot; на &quot;ноябрь 2014&quot;).<br />Скрипт был написан в спешке и эта операция замены проделывалась над <strong>всеми</strong> ячейками листа:<br /></p><div class="codebox"><pre><code>
   strWhat = &quot;%&quot; + CStr(Sheet1.Cells(constNomerZagolovka, jz).Value) + &quot;%&quot;    &#039; строка, которую заменяем
   strReplacement = CStr(Sheet1.Cells(i, jz).Value)                &#039; строка, на которую заменяем
   For iSvoInf = 1 To Sheet1SvoInf.UsedRange.Rows.Count
      For jSvoInf = 1 To Sheet1SvoInf.UsedRange.Columns.Count
         Sheet1SvoInf.Cells(iSvoInf, jSvoInf).Value = Replace(Sheet1SvoInf.Cells(iSvoInf, jSvoInf).Value, strWhat, strReplacement)        &#039; меняем 
      Next
   Next
</code></pre></div><p>Если же ограничить замену текста только ячейками, в которых действительно есть строка strWhat - то проблема решена - числа остаются числами - и целые, и с копейками.<br />Но загадка всё-таки осталась нерешённой - почему после замены текста целые числа остаются числами, а числа с копейками становятся текстом?<br />Прилагаю результат модифицированного (добавлена замена текста на текст по всем ячейкам листа, и шаг значения не 0.01, а 0.1) скрипта коллеги <strong>Slav</strong>.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
    strWhat = &quot;%mmmm_gggg%&quot;    &#039; строка, которую заменяем
    strReplacement = &quot;ноябрь 2014&quot;    &#039; строка, на которую заменяем
    For iSvoInf = 1 To myWB.Worksheets(1).UsedRange.Rows.Count
       For jSvoInf = 1 To myWB.Worksheets(1).UsedRange.Columns.Count
          myWB.Worksheets(1).Cells(iSvoInf, jSvoInf).Value = Replace(myWB.Worksheets(1).Cells(iSvoInf, jSvoInf).Value, strWhat, strReplacement)        &#039; меняем 
       Next
    Next
</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (nicksh)]]></author>
			<pubDate>Mon, 08 Dec 2014 08:52:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88945#p88945</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88306#p88306</link>
			<description><![CDATA[<p><strong>nicksh</strong>, присоединяюсь к словам коллеги <strong>Slav</strong> и в свою очередь добавлю - Вы в курсе, что <span class="bbu">Excel содержит встроенные механизмы для подключения к БД и выгрузки результатов запроса на лист</span> ? При этом, если я не ошибаюсь, движок Excel-я автоматически определяет тип данных полей и соответственно форматирует тип ячеек.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Thu, 13 Nov 2014 14:17:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88306#p88306</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88266#p88266</link>
			<description><![CDATA[<div class="quotebox"><cite>nicksh пишет:</cite><blockquote><p>...<br />Оба <strong>числа пишутся </strong>в ячейку <strong>как строки </strong>с точкой (&quot;2.70&quot; и &quot;2.00&quot;).</p></blockquote></div><p>nicksh,</p><p>ход Ваших мыслей для меня загадка.</p><p>Возвращаемся к исходной задаче - Вы переписываете из источника в приемник (&quot;из БД в Excel&quot;).<br />В источнике Ваша &quot;сумма с копейками&quot; в каком формате хранится?<br />В числовом (float, double, ...) или строковом (string, varchar, ...)?<br />Всякое бывает, но я предположу что в числовом.</p><p>В приемнике Вы также хотите увидеть числовой формат - если я правильно понял.</p><p>Внимание вопрос: а зачем выполняя элементарное переписывание из числа в число Вы затеваете какие-то манипуляции на тему &quot;как строки&quot;?<br />Вступая на этот тернистый путь Вы действительно должны строго контролировать региональные настройки - причем с двух сторон: на сервере БД (источник) и в локальном Excel (приемник).<br />Более того - перейдя на соседний компьютер (где элементарно другие региональные настройки) Вы обнаружите что скрипт опять перестал работать.</p><p>Не проще брать число и писать число?</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Thu, 13 Nov 2014 06:32:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88266#p88266</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88258#p88258</link>
			<description><![CDATA[<div class="quotebox"><cite>nicksh пишет:</cite><blockquote><p>Пытаюсь выделить из всего большого (одновременная обработка четырёх файлов Excel) скрипта маленький кусочек, иллюстрирующий ошибку - пока не получается.</p></blockquote></div><p>Ждём.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 12 Nov 2014 23:52:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88258#p88258</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88238#p88238</link>
			<description><![CDATA[<div class="quotebox"><cite>nicksh пишет:</cite><blockquote><p>формирование ещё пары столбцов - когда значение в ячейку пишется как строка (с запятой) и строка (с точкой):</p></blockquote></div><p>Так вот, в этом скрипте всё сработало так, как надо: в 4 столбце число с запятой выровнено как текст и перед ним есть предупреждение (восклицательный знак), в 5 столбце число с точкой записалось в ячейку как число и перед ним нет предупреждения.</p><p>А вот в реальном файле получается не так: число с копейками выглядит как число (и выровнено вправо), но перед ним есть предупреждение, а целое число - без предупреждения.<br />Оба числа пишутся в ячейку как строки с точкой (&quot;2.70&quot; и &quot;2.00&quot;).</p>]]></description>
			<author><![CDATA[null@example.com (nicksh)]]></author>
			<pubDate>Wed, 12 Nov 2014 16:38:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88238#p88238</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88237#p88237</link>
			<description><![CDATA[<div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>3. C результатами - сюда.</p></blockquote></div><p>Но в скрипт я добавил формирование ещё пары столбцов - когда значение в ячейку пишется как строка (с запятой) и строка (с точкой):<br /></p><div class="codebox"><pre><code>
        myWB.Worksheets(1).Cells(iRow, 4).NumberFormat = &quot;#,##0.00&quot;
        myWB.Worksheets(1).Cells(iRow, 4).Value = CStr(testVal)

        myWB.Worksheets(1).Cells(iRow, 5).NumberFormat = &quot;#,##0.00&quot;
        myWB.Worksheets(1).Cells(iRow, 5).Value = replace(CStr(testVal), &quot;,&quot;, &quot;.&quot;)
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (nicksh)]]></author>
			<pubDate>Wed, 12 Nov 2014 16:26:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88237#p88237</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88236#p88236</link>
			<description><![CDATA[<div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>3. C результатами - сюда.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (nicksh)]]></author>
			<pubDate>Wed, 12 Nov 2014 16:21:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88236#p88236</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88233#p88233</link>
			<description><![CDATA[<div class="quotebox"><cite>nicksh пишет:</cite><blockquote><p>Пытаюсь выделить из всего большого (одновременная обработка четырёх файлов Excel) скрипта <strong>маленький кусочек</strong>, иллюстрирующий ошибку - пока не получается.<br />Пока маленький скрипт работает правильно - то есть оба числа - и целое, и с копейками пишутся как числа.</p></blockquote></div><p>nicksh,</p><p>1. Скопируйте мой скрипт в vbs-файл.<br />2. Сделайте xls-шаблон Test01.xlsx в той же папке.<br />3. C результатами - сюда.</p><div class="codebox"><pre><code>&#039;
&#039; тестируем формат
&#039;

    rootDir = Left(WScript.ScriptFullName, instrrev(WScript.ScriptFullName,&quot;\&quot;))

    FileXLS = rootDir &amp; &quot;Test01.xlsx&quot;

&#039; открываем в EXCEL    
    Set objExcel = CreateObject(&quot;Excel.Application&quot;)
        objExcel.Visible = True
        objExcel.displayAlerts = False
    Set myWB  = objExcel.Workbooks.Open(FileXLS)
    
    iRow = 0
    Do While iRow &lt; 500  &#039;  максимум строк
        iRow = iRow + 1
        testVal = iRow/100.00
        
        myWB.Worksheets(1).Cells(iRow, 1).Select  &#039;  встаем в текущую строку
        
        &#039; десятичное число
        myWB.Worksheets(1).Cells(iRow, 1).NumberFormat = &quot;#,##0.00&quot;
        myWB.Worksheets(1).Cells(iRow, 1).Value = testVal
        
        &#039; целое
        myWB.Worksheets(1).Cells(iRow, 2).NumberFormat = &quot;0&quot;
        myWB.Worksheets(1).Cells(iRow, 2).Value = testVal
        
        &#039; текст
        myWB.Worksheets(1).Cells(iRow, 3).NumberFormat = &quot;@&quot;
        myWB.Worksheets(1).Cells(iRow, 3).Value = testVal
    Loop  &#039;  конец цикла по строкам

    myWB.save()
    objExcel.quit()

    Set objExcel = Nothing

WScript.Quit 0
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Wed, 12 Nov 2014 15:25:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88233#p88233</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88230#p88230</link>
			<description><![CDATA[<div class="quotebox"><cite>Slav пишет:</cite><blockquote><div class="codebox"><pre><code>myWB.Worksheets(1).Cells(i_row,i_col).NumberFormat = &quot;#,##0.00&quot;
myWB.Worksheets(1).Cells(i_row,i_col).Value = 2.7</code></pre></div><p>Гарантировано представит с 2-мя знаками после запятой, да еще и на разряды разделит.</p></blockquote></div><p>Пока не помогло.<br />Пытаюсь выделить из всего большого (одновременная обработка четырёх файлов Excel) скрипта <strong>маленький кусочек</strong>, иллюстрирующий ошибку - пока не получается.<br />Пока маленький скрипт работает правильно - то есть оба числа - и целое, и с копейками пишутся как числа.</p>]]></description>
			<author><![CDATA[null@example.com (nicksh)]]></author>
			<pubDate>Wed, 12 Nov 2014 13:54:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88230#p88230</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88225#p88225</link>
			<description><![CDATA[<p>В крайнем случае, можно наверное, выполнить такую функцию в <strong>VBA</strong> и получить текущий разделитель для <strong>Excel</strong>.<br /></p><div class="codebox"><pre><code>
Function GetDecimalSplitter()
    GetDecimalSplitter = Mid(1/2,2,1)
End Function
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Wed, 12 Nov 2014 11:59:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88225#p88225</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88221#p88221</link>
			<description><![CDATA[<div class="quotebox"><cite>nicksh пишет:</cite><blockquote><p>...<br />хотя весь столбец отформатирован как числовой с двумя знаками после запятой<br />...<br />Как &quot;надёжно&quot; записать число в ячейку - чтобы число оставалось числом всегда, независимо от мнения Excel по этому поводу?</p></blockquote></div><p>nicksh,</p><p>1. Не надейтесь на предварительное форматирование xls-шаблона при заполнении из внешнего скрипта - при записи в каждую ячейку из своего скрипта сами гарантируйте тот формат, который хотите видеть.</p><p>2. <br /></p><div class="codebox"><pre><code>myWB.Worksheets(1).Cells(i_row,i_col).NumberFormat = &quot;#,##0.00&quot;
myWB.Worksheets(1).Cells(i_row,i_col).Value = 2.7</code></pre></div><p>Гарантировано представит с 2-мя знаками после запятой, да еще и на разряды разделит.</p><p>В эксельных форматах есть одна особенность, которая меня поначалу удивляла - они имеют фиксированные разделители, независимо от региональных настроек.</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Wed, 12 Nov 2014 11:17:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88221#p88221</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88217#p88217</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>В скрипте vbs пишу данные из БД в файл Excel.</p></blockquote></div><p>И где Ваш код? Где исходные данные, на которых можно его проверить?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 11 Nov 2014 22:49:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88217#p88217</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88216#p88216</link>
			<description><![CDATA[<p>По ходу дело в разделителе дробной и целой части. Региональные настройки влияют.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Tue, 11 Nov 2014 20:25:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88216#p88216</guid>
		</item>
		<item>
			<title><![CDATA[VBS: не получается сумму с копейками записать в ячейку Excel как число]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88207#p88207</link>
			<description><![CDATA[<p>Здравствуйте всем!<br />В скрипте vbs пишу данные из БД в файл Excel.<br />В одной строке пишу в ячейку сумму с копейками (2.70), в другой строке в том же столбце - сумму без копеек (2.00).<br />Потом открываю файл в Excelе, и вижу сумму без копеек как число (2,00), а сумму с копейками - как текст (2,7), хотя весь столбец отформатирован как числовой с двумя знаками после запятой.<br />При выделении ячейки с суммой с копейками слева появляется квадратик с восклицательным знаком и текстом &quot;Число в этой ячейке отформатировано как текст, или перед ним стоит апостроф&quot;.<br />Как &quot;надёжно&quot; записать число в ячейку - чтобы число оставалось числом всегда, независимо от мнения Excel по этому поводу?</p>]]></description>
			<author><![CDATA[null@example.com (nicksh)]]></author>
			<pubDate>Tue, 11 Nov 2014 15:08:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88207#p88207</guid>
		</item>
	</channel>
</rss>
