C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

VC++6.0での動作につきまして


(過去ログ 3 を表示中)

[トピック内 20 記事 (1 - 20 表示)]  << 0 >>

■2593 / inTopicNo.1)  VC++6.0での動作につきまして
  
□投稿者/ てこな 二等兵(1回)-(2006/02/19(Sun) 11:54:42)

分類:[VC++] 


分類:[VC++] 

てこなと申します。はじめまして

まず、管理者様へ、当発言が不適切と判断された場合は、
お手数おかけいたしますが、削除をお願い致します。

今年からC言語を学びながらつい先日以下のような
コンソールアプリケーションを作成いたしました。
(まだMFC関連の把握までいたっておりません)

<作成したツール>
汎用ホストから出力される帳票ですが、紙に出力すると、
何千枚も使ってしまいますので、イメージ?をPCに落としてそれを入力とし
全項目(データ)をCSV形式で出力するツールを作成しました。

<問題点>
CSVファイルをEXCELで開くと、
特定項目について丸め誤差が自動的に行われてしまう。
(CSVファイルをテキストで開き確認してみると、
 帳票で設定された値が正しく入っていることを確認済み)
「10000000300」→「1.0xE10」→列の幅を広げても「10000000000」と
元のデータが失われてしまう。
この点でネットで検索や書店で立ち読みなどしましたが、
どうやらWindows使用している限り仕方のないことらしいです。
またこれを対応するには数値計算の知識が必要とのことで挫折。

<対応>
これをない知恵絞って下記のように対応できないかと考えてみました。
あくまで帳票のデータは参照のみの使用なので、
次のような変換を考えています。
「0(半角数字ゼロ)」を「O(半角英字O)」に変換する。
ただ、各項目をなめて変換しなければならないと考えましたが、
うまくバイトを指定できませんでした。

そこで、ネット検索を行うとこのサイトにたどり着くことが出来ました。
VC++6.0ではありませんが、「文字数をバイト数〜」があり、
早速ソースに貼り付けて見ましたが、クラスのシーケンシャルエラーなど
スムーズにはいきませんでした。今ここでMSDNと格闘しています。
まだクラスを理解しきっていないことも原因の1つと思ってます。

<お伺い>
上記壁を乗り越えられればいいのですが、うまく表現できませんが、
答えを教えてください、というよりも、相談にのってほしい、
という表現の方が今の自分の心境としてはあっているような気がします。
残念ながらまわりにC++関連の質問に答えられる人がおらず、
業務的に言語はCよりCOBOLでJCL云々・・しょうがないのですが
お忙しい中申し訳ございませんが、
お手すきの際にでも、ご指摘ご指導を頂ければ幸いかと存じます。
直接解決に結びつかなくてもかまいません。
ここのHPを見て考えなさい、とか、この参考書がいい、とかでも構いません。

よろしくお願い致します。

<環境>
XPproでVC++6.0の環境で少しでも上達できればと歩んでおります。
ちなみにCSVを展開するEXCELは2000ですが、
CSVにバージョンは関係しないような・・・・・わかりません。

以上、よろしくお願い致します。


0
引用返信 編集キー/
■2594 / inTopicNo.2)  Re[1]: VC++6.0での動作につきまして
□投稿者/ 中博俊 神(337回)-(2006/02/19(Sun) 19:06:29)
中博俊 さんの Web サイト

分類:[VC++] 

Excelでうまくいってほしいだけなら、'1000000300とシングルクォートをつけて出力するだけでうまくいくでしょう。

0
引用返信 編集キー/
■2596 / inTopicNo.3)  Re[2]: VC++6.0での動作につきまして
□投稿者/ てこな 二等兵(2回)-(2006/02/19(Sun) 21:09:22)

分類:[VC++] 

中博俊さま お忙しい中ありがとうございます。

早速明日試してみようと思います。

明日以降改めて書きますが、とりあえず、ご報告まで・・・・

ありがとうございます。

以上


0
引用返信 編集キー/
■2612 / inTopicNo.4)  Re[3]: VC++6.0での動作につきまして
□投稿者/ てこな 二等兵(3回)-(2006/02/20(Mon) 19:53:06)

分類:[VC++] 

こんばんは、てこなです。

中博俊さま、先日ご指摘いただいたとおり本日検証してみました。

結論から言えば、丸め誤差が行われないで正しく出力することが出来ました。

ただ、出来れば・・・のLVですが、

シングルクォートが常に表示されてしまい、

すっきりしないというかなんというか・・・・・

CSVファイルをEXCELで開く場合は、残ってしまいますが、

EXCEL上でセル値に直接シングルクォートを追加する場合には、

うまく表面上は消えてくれます。

この点につきまして、アドバイスを頂ければ幸いかと存じます。

お手すきの際で構いませんので、よろしくお願い致します。

以上



0
引用返信 編集キー/
■2614 / inTopicNo.5)  Re[4]: VC++6.0での動作につきまして
□投稿者/ 中博俊 神(340回)-(2006/02/20(Mon) 21:57:29)
中博俊 さんの Web サイト

分類:[VC++] 

できません。
あきらめてください。


0
引用返信 編集キー/
■2615 / inTopicNo.6)  Re[4]: VC++6.0での動作につきまして
□投稿者/ L/D 二等兵(2回)-(2006/02/20(Mon) 22:26:14)

分類:[VC++] 

CSVファイルを[ファイル]-[開く]やダブルクリックで開かなければ問題ないです。
[データ]-[外部データの取り込み]で読み込んでください。

0
引用返信 編集キー/
■2616 / inTopicNo.7)  Re[5]: VC++6.0での動作につきまして
□投稿者/ Okumin 二等兵(2回)-(2006/02/21(Tue) 00:11:22)

分類:[VC++] 

間違っていたらすみません。Excel上で次のようなマクロを走らせれば
良いだけのことではないのでしょうか?

 Sub 置換()
   Range("A1:E100").Select
   Selection.Replace What:="'", Replacement:=""
 End Sub

ちなみに「Excel上で直接シングルクォートを追加」した場合は、そのセルの値は
数値ではなく文字列の扱いとなります。これはもともとは Lotus1-2-3 の書式
です。Lotusでは文字列の前に自動的にシングルクォートが置かれるのですが、
Microsoft が Lotusユーザーを取り込むために互換性を持たせていて、
手動でこのような入力をしても、シングルクォートが表示されないように
配慮されているわけです。

0
引用返信 編集キー/
■2617 / inTopicNo.8)  Re[6]: VC++6.0での動作につきまして
□投稿者/ 中博俊 神(341回)-(2006/02/21(Tue) 09:15:06)
中博俊 さんの Web サイト

分類:[VC++] 

マクロとか走らせていいんならなんでもありっすよ。
上記のRelpaceは正常な'までとってしまいますよね?(数字列だけど(^^;;;)

0
引用返信 編集キー/
■2620 / inTopicNo.9)  Re[7]: VC++6.0での動作につきまして
□投稿者/ 柘植 二等兵(1回)-(2006/02/21(Tue) 23:28:07)

分類:[VC++] 

はじめまして。柘植(つげ)と申します。

="1000000300"

と出力されてはいかがでしょう?
ダブルクリックで(エクセルで)開くことを前提にするなら上手く行くと思います。

自分も仕事で、「csvで出力するが、お客様はダブルクリックで開くに違いない」ものを出力しないといけなくて、

Excelファンクラブ

というサイトで調べた結果、そういうカキコを見つけたもので。ご参考になれば。

ちなみに、自分の環境(OS:Win2000、Office2000)で、メモ帳で以下のように記述し、ダブルクリックで開いたら2つとも「10000000300」だったんですが、、、

10000000300,="10000000300"



0
引用返信 編集キー/
■2621 / inTopicNo.10)  Re[8]: VC++6.0での動作につきまして
□投稿者/ 中博俊 神(343回)-(2006/02/22(Wed) 00:59:05)
中博俊 さんの Web サイト

分類:[VC++] 

="
ははじめてしったなぁ。
調査!!

ほうほう。見た目はうまくいきますね。

そのCSV使い物にならなさそうな感じはしますが(^^;

CSVは難しいですね、今も昔も・・・・・

0
引用返信 編集キー/
■2627 / inTopicNo.11)  Re[9]: VC++6.0での動作につきまして
□投稿者/ daisuky 二等兵(1回)-(2006/02/22(Wed) 14:34:13)

分類:[VC++] 

はじめまして。

ははは。
="10000000300"は、どんな動作するのだろう?
と思い、やってみました。そういう数式ということですね。
アイディアな解決策ですね。

冒頭の問題ですが、柘植(つげ)さん同様、私のところでも再現できなかったですよ。
丸め誤差とおっしゃっているところで軽くネットを調べると、やはり、
それは小数点のお話。
Windows2000, Excel2000SP3です。
デフォルトから設定をいじってませんが、指数表示は1E+10と表示されています。
文字の書式系の問題?でしょうか。あるいは、少数が含まれるデータのお話?
なにかの環境依存が発生しているように感じます。

0
引用返信 編集キー/
■2628 / inTopicNo.12)  Re[10]: VC++6.0での動作につきまして
□投稿者/ daisuky 二等兵(2回)-(2006/02/22(Wed) 14:42:02)

分類:[VC++] 

一度に書かずスイマセン。
ぜひとも、テキストファイルを作成して、

10000000300,="10000000300"

とだけ記載して、ANSI文字コードにて、.csvの形式で保存して実行していただきたいと思います。
その差を埋める対処をすれば解決…かと。

0
引用返信 編集キー/
■2633 / inTopicNo.13)  Re[11]: VC++6.0での動作につきまして
□投稿者/ てこな 二等兵(4回)-(2006/02/22(Wed) 23:16:17)

分類:[VC++] 

てこなです こんばんは

ここのところ本業が忙しくレスポンスが遅れて申し訳ございません。

また、さまざまなご指摘をいただきありがとうございます。

改めて精査し報告をしたいと思います。

ご指導してくださった方々へ

貴重なお時間を割いていただき、ありがとうございます。

業務の都合に依存してしまいますが、

出来る限り早くご報告をしたいと思います。

以上

0
引用返信 編集キー/
■2634 / inTopicNo.14)  Re[12]: VC++6.0での動作につきまして
□投稿者/ てこな 二等兵(5回)-(2006/02/23(Thu) 22:23:00)

分類:[VC++] 

こんばんは、てこなです。

ご指摘くださったみなさま、大変お待たせして申し訳ございません。
この文章を作成した際は整形してますが、掲示板に反映した際正しく
表示される自身がなく、その点におきましてご容赦頂ければ幸いです。
(正しくとは、段落とか etc)

まず管理者様へ
結論と致しましては「解決」ですが、まだてこなにご指摘くださった方へ
調査し可能ならば報告したいと考えておりまして、
それが報告できた(できないと判断した)際に「解決(表示)」をしたいと考えておりますがいかがでしょう
か?
投稿した当初は削除命令が来るのではないか・・と、ビクビクしておりましたが、
今となって、てこなにこのような機会を与えてくださり、まことにありがたく思って
おります。

ご指摘くださったみなさまへ
皆様のご指摘内容は、次の<試行錯誤>に記載してありますが、
指摘したとおり認識してくれてない!などございましたら、
よろしければ再度ご指導頂ければ幸いなのですが・・・・・、
皆様の貴重なお時間をこれ以上割いていただくのも申し訳ないようにも感じます・・
・・。
相変わらずうまく表現できず、みなさまに伝わっているか大変不安ではありますが、
あくまで、みなさまの都合最優先で、
もし都合がよろしければご指南していただけるとうれしいです。

急いでおりませんので、お手すきの際にでもご指南していただけると幸いです。
よろしくお願い致します。

「解決」を表示させるタイミングで再度お礼申し上げたいと思っております。


<試行錯誤>

【L/Dさまご指摘につきまして】

L/Dさまのご指摘にしたがって確認したつもりですが、認識の相違などございました
ら、
その都度よろしければご指摘をお願い致します。

⇒ 下記ファイル(txt)を作成し、次のように作業をしてみました。
(1レコードにカンマで区切られた2つのデータ × 4レコード)

1001011101100001100,1001011101100001100, // 現状のCSV
'1001011101100001100,1001011101100001100, // 前のみシングルクォート付加
1001011101100001100,'1001011101100001100, // 後のみシングルクォート付加
'1001011101100001100,'1001011101100001100, // 前後ともに付加

 ダブルクリックで開かずに、
 [データ]-[外部データの取り込み]-[テキストファイルのインポート]で実行してみ
ました。
 テキストファイルウィザードが起動しまして、
1/3 [ データのファイル形式:カンマや〜を選択 ]
2/3 [ 区切り文字:カンマにチェック ]-[ 文字列の引用符:『'』シングル
クォート選択 ]
3/3 [ 完了]
 
 文字列の引用符の指定(2/3)において、次の観点から実行してみました。
@『'』シングルクォートを選択しない場合
<結果:セル表示>
A        B
1 1.00101 E+18        1.00101 E+18
2 '1001011101100001100        1.00101 E+18
3 1.00101 E+18        '1001011101100001100
4 '1001011101100001100        '1001011101100001100

・セルA1をクリックして数式バーに内容を表示させてみると、
 「1001011101100001100」→「1001011101100000000」となりデータが欠落して
 しまってますが、セルA2では『'』シングルクォートにより、データが欠落し
ていませんでした。

A『'』シングルクォートを選択する場合
<結果:セル表示>
A        B
1 1.00101 E+18        1.00101 E+18
2 1001011101100001100,1001011101100001100,        なし
3 1.00101 E+18        1001011101100001100,
4 10,010,111,011,000,000,000,000,000,000,000,000,000,        なし

・セルA1をクリックして数式バーに内容を表示させてみると、
 「1001011101100001100」→「1001011101100000000」となりデータが欠落して
 しまってます。
・セルA2はデータが削られていないものの、
 1つ目と2つ目の間のカンマは区切り文字として認識されていないように感じました。
・セルA4ですが、書式が自動的に通貨になってしまい・・・・・
 セル8個の書式を全て確認しましたが、セルA4以外は標準でした。
 セルA4の書式を標準に戻しても、1.0010111011E+37となり・・・・・
・セルB2とセルB4は空でした。

<考察>
『'』シングルクォートを付加することで、データの欠落はなくなったように感
じていたのですが、
考慮が漏れていまして、連続するデータの場合思惑通りにいかない様に感じまし
た。

【Okuminさまご指摘につきまして】

『'』シングルクォートを外すマクロ(VBA)のようですが、
てこなの認識が間違っていたらその都度ご指摘をお願い致します。

記載してくださったマクロで範囲は別途拾うとして、
『'』シングルクォートを消すことは出来ると思いますし、
やり方として、次のように感じました。

@CSVファイルをダブルクリックEXCELに展開し、マクロを記述して実行させ
る。
この場合マクロになれていない方がCSVファイルの中身を参照するには、
少し手間がかかってしまうような気がしました。

A先にマクロを登録しているEXCELファイルを作成しておいて、
CSVファイルをマクロ登録済みファイルにドラッグ・・・・・できませんでし
た。

B先にマクロを登録しているEXCELファイルを作成しておいて、
作成したEXCELファイルをダブルクリックして、[ファイル]-[開く]で対象CSVを開
き、
展開が終わったら、マクロを実行する。
但し、対象のCSVファイルを開く際に、テキストファイルウィザードが立ち上
がり、
区切り方法を設定しなければならなく、出来ればその辺の操作は避けたいと感じ
ています。
(避けたい→てこながやる分には問題ないのですが、
 てこな以外の使用者を考慮・・・・・考慮できるほどの実力がてこなにはない
ような・・・・)

Okuminさまはマクロに詳しそうなので、恐縮ですがよろしければお伺いさせてくださ
い。
C(コンソールアプリ程度のLV)でEXCELを操作することは出来るのでしょう
か?
操作というのは、単に「cells(1,1).value = "お願いします"」や「マクロの自動記
述」、
出来れば「マクロ実行と同様の動きを行わせる」など・・・・
インターネットで検索してもなかなか望みどおりのページを見つけることが出来ませんでした。
CとEXCEL関連の参考書もいろいろ探してみましたが、見つけることが出来ませんでし
た。

余談ですが、
前にマイクロソフトの技術者情報?で、「VC++6.0 MFCでEXCELを作成するには・・
・(英語)」を
見つけることが出来たぐらいです。
(この記事がCを始めたきっかけの1つです。完全な機能を有するEXCELではなく、
 セル構造と列の最大256を増やしたい。EXCELがインストールされていなくても
表示ぐらいは
 出来るようなEXCELもどき?がつくれれば、どんなに業務的に楽になるか・・・・
・って考えてました。
 そのようなフリーソフトも見つけることが出来ず(インストール有はありましたが、

 インストール無は見つけることが出来ませんでした)・・・・・些細な情報でも構いませんのでよろしければ
ご指摘いただければ、
 うれしいです)
閑話休題(とりあえずMFC関連と思いますので)

ロータス云々の話はとても興味深かったです。
周りにこういう背景を知っている方が殆どおらず、非常にためになりました。
ありがとうございます。

【中博俊さまご指摘につきまして 】

申し訳ございません。
ご気分を害されないかとても不安ですが、わからないことを放置するのがちょっと嫌
なので、
書きます。ご指摘内容で「正常な『'』」という表現が勉強不足でちょっとピンとき
ていません。
皆様がご指摘してくださった内容の検証は、業務の合間などで時間を見つけて
進めることが出来るのですが、平日は調査(書店で参考書を漁ったり)する時間が取
れそうもなく、
週末日曜でもお休みが取れれば、読み漁ってこようと思いますので、
検証は少しお時間を頂ければと思い書き込ませていただきました。

【柘植さまご指摘につきまして】

「Excelファンクラブ」はてこなもよく拝見させていただいているサイトです。
特にVBA関連では大変勉強になりました。

「="」で実施してみました。思惑通りにいきました。ありがとうございます。

当初の目的が、汎用ホストの帳票を紙に出力した場合大量になってしまい、
見づらいのでEXCELで見やすく出来れば・・・でしたので、大変感謝しております。

ただ、中博俊さまがご指摘してくださっている「そのCSV使い物にならなさそう」・
・・
というのが気になり次のような検証をして見ました。そもそも認識が違う!!
とかございましたら、適宜お手すきの際にご指摘いただけると幸いです。

⇒ 次のようなCSVファイルを作成しました。

="1001011101100001100",="1001011101100001100"

そのCSVファイルをダブルクリックし、EXCELに展開しますと次のように表示され
ます。
<結果:セル表示>
A        B
1 1001011101100001100        1001011101100001100

セルA1をクリックして数式バーを見ると、「="1001011101100001100"」となって
います。

但し、そのまま保存しようとすると「〜CSV(カンマ区切り)と互換性のない機能が含まれて〜」
との警告が出て、
そのまま保存すると、次のようになってしまいます。
(機能を保存するには、「いいえ」をクリックしてから、最新のExcelのファイル形
式で保存します。
 とありますが、最新のExcelファイルっていったい・・・・)

保存ファイルをテキストエディタで参照してみると、

1001011101100001100,1001011101100001100

となってしまい、このCSVファイルをダブルクリックしEXCELに展開すると次のよ
うになってしまいます。
<結果:セル表示>
A        B
1 1 E+18        1 E+18

セルA1をクリックし、数式バーで確認してみると、
 「1001011101100001100」→「1001011101100000000」となりデータが削られて
しまいます。

<考察>
表示するまでは正しく見えるが、表示されているデータを修正して保存して
しまうと、
CSVファイルとしては使い物にならなくなってしまう・・・・・・で認識
はよろしいのでしょうか?

【daisukyさまご指摘につきまして】

テキストファイルの作成〜のご指示通り実施し、思惑通りの表示内容になることが確
認できました。ありがとうございました。

また、「再現できなかった」とご指摘がございましたが、申し訳ございません。
てこなの方で値(桁数)はあまり影響がないような気がしまして、
ご指摘を下さる方に対し少しでも負担を減らせないかと、
簡略してしまいました。事象が出てしまったケースとは異なる記載をしておりまし
た。
申し訳ございません。てこなの考えが間違っておりました。

記載ケース        事象ケース
「10000000300」 → 「1001011101100001100」 でよろしければお願い致します。

お手数おかけいたしまして、申し訳ございませんでした。

以上


0
引用返信 編集キー/
■2636 / inTopicNo.15)  Re[13]: VC++6.0での動作につきまして
□投稿者/ 柘植 二等兵(2回)-(2006/02/24(Fri) 00:34:49)

分類:[VC++] 

2006/02/24(Fri) 00:37:45 編集(投稿者)

あ、どうも。柘植です。
思い通りいったようですね。おめでとうございます。

で、てこなさんの長〜いお返事、ざっと読ませていただきました。
どうやら、「CSVファイルをエクセルで開いたときに何が起こっているか」、「エクセルから保存の操作をしたときに何が起こっているか」ということが全く分かっていらっしゃらないようですね。(CSVファイルとエクセルのファイルの違いもわかっていないご様子)
簡単に少しだけ説明しますと、ダブルクリックでCSVファイルを開いた場合、カンマで区切られた項目について、エクセルが勝手に処理を施しています。
例えば、
「住所」,「番地」というレイアウトの住所録をCSVで作ったとして、

1件目:C県D町,12-3Eアパート6号室
2件目:A県B町,1-1

の2件のデータだったとします。
これをダブルクリック等でエクセルで開くと、2件めの2項目めは「エクセルが勝手に」日付と判断して、「平成18年1月1日」とか表示してくれるはずです。(未確認)
それをそのまま保存すれば、当然データは

1件目:C県D町,Eアパート6
2件目:A県B町,平成18年1月1日

自分は会社の健康診断担当者さんとか地方自治体職員さんとか相手の仕事が多かったもので、データとしてこういったものをもらってよく泣いています。(汗)

掲示板で全部説明するのは無理ですし、場合によっては某電気屋さんのパソコン教室で金とって教えてる内容な気がするので、このようなヒント程度にとどめておきます。(掲示板で質問しなくても勉強できるはずだと思います。google先生と1日語り合ってみるとか)

ちなみに、中博俊さんご指摘の

>そのCSV使い物にならなさそうな感じはしますが(^^;

に関しては、エクセルで開く以外には使えない、という意味です。
折角VC++の勉強をしてらっしゃるのですから、CSVファイルを読み込んで集計するプログラムでも作ってみてはいかがでしょう?
で、サンプルデータの中に
="1001011101100001100"
の形で出力したデータが紛れ込んでいたら、、、(創造するだけで恐ろしい。そんな仕事したくない、、、)
ついでにこんなデータを入れておくと更に勉強になるでしょう。
1200,"1200",'1200,'1,200,="1200",="1,200"

か、可能な限り手短にレスしたつもりです、、、

では、がんばってください。

0
引用返信 編集キー/
■2639 / inTopicNo.16)  Re[14]: VC++6.0での動作につきまして
□投稿者/ daisuky 二等兵(3回)-(2006/02/24(Fri) 09:40:34)

分類:[VC++] 

2006/02/24(Fri) 09:41:43 編集(投稿者)
2006/02/24(Fri) 09:41:34 編集(投稿者)

スイマセン、柘植さんのように全て読めていませんが、問題は解決したのでしょうか?

桁数がずいぶんと大きいようです。

解答の方向が見当違いであれば申し訳ないのですが、
こうしたデータを取り扱うのであれば、外部文書の丸め等々確認される前に、
標準の仕様を確認されたほうが良いと思います。ネットではなく、Excelのヘルプに仕様は記載されています。
エクセルのマニュアルを見た限り、以下のような仕様が記載されていました
・列の幅 255 文字
・有効桁数 15 桁
・処理できる正の最大値 9.99999999999999E307

頭が良くない私は、指数表示が良くわかりませんが、取り扱う数値の範囲はこれを超えているようです。
エクセルに
1001011101100001100
を普通に入力しても桁落ちしています。
元々、数値としては処理できる量を超えています。

一方、仕様のひとつとして、「列の幅255文字」(列の幅に、文字っておかしな表現ですが)が記載されています、つまり、15桁の数値より多くなっても、255文字までなら文字として取り扱えるということだと思います。
残念ながら、数値として計算させるなら、Excelというアプリケーションを選択すべきではなったと言わざるを得ない状況かと思います。


ただ、一方で、Excelのような物自体を作るとおっしゃっています。
桁数を超えるところでの動きを実現できるといいですね。C++でそのようなアプリを作ろうとされるのはうらやましいです。


希望されている仕様は、ちょっと伝わりづらくなっていますが、次のような感じでしょうか。
「業務アプリでCSVを出力している。それはお客様に渡したい。お客様が自由にこのファイルを開いて欲しい。それはReadonlyで一度きりの文書ではなくて、そのまま編集に使われる。」
>このとおりであれば、仕様にかかるので、Excelでは無理ってことですね…。

数値としてデータを扱うつもりが無いなら、セルの書式設定であらかじめ、
文字列書式にしておけばすむ問題な気もします。(CSVじゃなくて、そういう書式付のデータとして生成しておく)

何度も言いますが、数値としてExcelで取り扱うのは無理ですよ。


正常な「'」は、Excelの特殊機能の文字列宣言としてのシングルクヲート以外に、通常のデータとして入力されることがあると思います。データとしての「'」ということです。Replace関数で一気にやっちゃうと、それも失われるよ、ってことをお伝えしたいのだと思います。


散文、駄文失礼しました…。

0
引用返信 編集キー/
■2641 / inTopicNo.17)  Re[15]: VC++6.0での動作につきまして
□投稿者/ 中博俊 神(345回)-(2006/02/24(Fri) 10:41:52)
中博俊 さんの Web サイト

分類:[VC++] 

指数表示は
10.03
を0.1003 * (10 ^ 2)
と考えるということです。^は乗算

誤差が発生するのは小数点以下とは限りません。なんせ内部的に保持しているのは0〜1までの細かい数と、10の何乗かという指数でしかないからです。

いろいろ調べてみてください。


0
引用返信 編集キー/
■2682 / inTopicNo.18)  Re[16]: VC++6.0での動作につきまして
□投稿者/ Okumin 二等兵(3回)-(2006/02/28(Tue) 23:02:13)

分類:[VC++] 

てこな様
 
  Excel掲示板では無いので、他の方にはたいへん申し訳ないのですが、
 てこな様のBについて少しだけ補足です。
  元のCSVファイルがどのようなデータか解らないので微妙なのですが、
 区切り方法が常に一定しているのなら、例えば次のように書いておいて
 ボタンか何かに割り当てておけば、テキストファイルウィザードの
 区切り方法指定の部分は自動化できます。

 Sub Sample()

 '変数宣言
 Dim strFileName As String

  'ドライブを指定(Cドライブの例)
 ChDrive "C"

 'フォルダを指定(ルートディレクトリの例)
 ChDir "C:\"

 'ファイル名を取得(「ファイルを開く」ウィザードをフィルタありで起動)
 strFileName = Application.GetOpenFilename("CSVファイル,*.csv,テキストファイル,*.txt")

 'エラー対策(キャンセルされた時は処理を中止する)
 If strFileName = "False" Then Exit Sub

  '画面描画更新を停止(処理速度向上のため)
  Application.ScreenUpdating = False

 'テキストファイルを開く(カンマ区切り、連続区切り文字は無効、文字列を""で囲んでいる場合。これと異なる場合は自動記録を取ってみて下さい。)
 Workbooks.OpenText Filename:=strFileName, _
 DataType:=xlDelimited, Comma:=True, _
ConsecutiveDelimiter:=False, _
TextQualifier:=xlDoubleQuote

   '開いたブックがアクティブになるので、そのまま置換。
 Range("A1:E100").Select
 Selection.Replace What:="'", Replacement:=""
 Range("A1").Select

 Application.ScreenUpdating = True

End Sub

 もし区切り方が何タイプかあるなら、その数だけ書き分けておいて、
 事前に InputBox でタイプを番号指定させる、といった方法も取れますね。

0
引用返信 編集キー/
■2683 / inTopicNo.19)  Re[17]: VC++6.0での動作につきまして
□投稿者/ 中博俊 神(348回)-(2006/02/28(Tue) 23:32:25)
中博俊 さんの Web サイト

分類:[VC++] 

>  Excel掲示板では無いので、他の方にはたいへん申し訳ないのですが、
> てこな様のBについて少しだけ補足です。

気にする必要はないよ。なんでもこい!!

0
引用返信 編集キー/
■3023 / inTopicNo.20)  Re[18]: VC++6.0での動作につきまして
 
□投稿者/ てこな 二等兵(6回)-(2006/04/04(Tue) 22:47:20)

分類:[VC++] 

てこなです こんばんは

まず管理人さま、
そして、お忙しい中ご丁寧なご指摘ご指導をしてくださったみなさま
てこなの都合(一応業務ですが・・)で「解決(チェック)」が
大変遅くなってしまい申し訳ございません。
未解決のスレッドを結果的に放置する形となってしまい
謹んでお詫び申し上げるとともに、ご容赦頂ければ幸いかと存じます。

みなさまにご指摘いただきました点において、
残念ながら自分でまだ全て精査し実践しきれていませんが、
業務がひと段落ついてきたので休日暇を見つけては、
自分なりに検証や考察しながら、不明点は参考文献を見ています。
ただう〜んなんというか現在の状況は、
うまく表現できるか不安ですが、
参考文献で不明点を別の参考文献で調べる・・・
別の参考文献で解決すればいいのですが、
解決しない点はまた別の参考文献で調べる・・・・・のような感じで、

う〜んプログラムでいうと、樹形図?のように
大量のサブがぶら下がっているメインからコールしているサブを見る・・
そのサブ内でコールしているサブをさらに見る・・・
1階層ずつ下げてなめているような感じです。

時間に余裕があればとことんやってみたいのですが、
業務でCを使用していないのもあり限界を感じてます。

ただ、最低のLVでもいいので動くものを、そして
基本が習得できればいいかな〜と感じ始めてます。
(ネガティブでごめんなさい)

このサイトに出会えて、そしてみなさまからいろいろな
ご指摘をいただけて非常にうれしく思いながら、
まだまだ考えのあさはかな自分が見えました。
でも、亀の1歩ずつかもしれませんが、
少しずつ磨きをかけていきたいと思っておりますので、
もしご迷惑でなければ、
今後ともご指摘ご指導よろしくお願い致します。

管理人さまへ

てこなにこのような機会をおあたえくださり、
心からお礼申し上げます。ありがとうございます。

以上







解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -