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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>
■4256  Re[1]: VB2005への移行についておたずねします。
□投稿者/ 中博俊 -(2006/06/11(Sun) 01:13:55)
>

    分類:[VB.NET] 

    まず
    For L = 1 To 20000
    OkuriM = OkuriM + str(L)
    Next
    なんていうコードは普通書かないので、処理比較としては不適切
    Dim sb As New StringBuilder()
    For L = 1 To 20000
    sb.Append(str(L))
    Next
    のようなかんじにします。

    >仮想モードがあったりするそうですが
    >私にはハードルが高く、VB2005でのデータベースはこう扱うんだとの書籍が出
    >れば購入するつもりでいます。

    仮想モードは特に複雑でもなんでもないのでがんばってください。
    ただ、100万件表示することに何の意味があるのかは検討する余地が大いに有ります。
    100〜200を超えると人間の許容量を超えています。

    >今後は、VB2005にもなれなくてはと思うので、スピードの要求する部分は共有
    >メモリを使いVB6で行おうと考えております。

    そんなに簡単には呼び出せないので、VB6は素直に捨てましょう。

    スピードを要求するのであればC++ではないでしょうか?C++/CLIという道もあります。

    >また、NET2002でシステムを構築された方は、2003,2005となりバージョンアッ
    >プがあれば大変だろうと思います。さらに次のNETのバージョンはどうなるか詳細
    >不明だとのことです。

    何の情報かわかりませんが、次の詳細も発表されてますよ。

    >処理速度が遅い

    遅いと思ったことはありません。
    #起動時間はちょっと遅いんだけど・・・

    >そして100%の下位互換のない次々のNETのバージョンに他の方
    >はどうお考えなのか、対処されているのか、おたずねしたいです。

    100%互換が無いのはVB4も5も6も7も7.1も8も同じです。


記事No.4255 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4255  VB2005への移行についておたずねします。
□投稿者/ YM -(2006/06/11(Sun) 00:58:13)

    分類:[VB.NET] 


    分類:[VB.NET] 

    私は計測プログラムの作成および、そのデータの分析を行っています。.NETで
    当初、CもVBも土台が同じになり処理速度がほぼ同じになると歓迎しました。

    この春から新規プログラムは、VB2005とまず部品作りにとりかかりました。
    検査結果はデータグリッドに貼り付けるのですが、VB6の場合、100万件以上の
    検査データがあってもストレスがありません。しかしVB2005では立ち上がる
    だけでもとんでもなく時間がかかります。仮想モードがあったりするそうですが
    私にはハードルが高く、VB2005でのデータベースはこう扱うんだとの書籍が出
    れば購入するつもりでいます。しかし、本日下記の単純なプログラムの処理時間
    を比較したところ、(パソコンはアスロン4000、OSは2000プロフェナル)

    For L = 1 To 20000
    OkuriM = OkuriM + str(L)
    Next

    VB2005 約2秒 VB6 約 0.6秒でした。 体感としては遅いと感じていまし
    たが、確かに遅いことが確認できました。

    今後は、VB2005にもなれなくてはと思うので、スピードの要求する部分は共有
    メモリを使いVB6で行おうと考えております。

    また、NET2002でシステムを構築された方は、2003,2005となりバージョンアッ
    プがあれば大変だろうと思います。さらに次のNETのバージョンはどうなるか詳細
    不明だとのことです。

    処理速度が遅い、そして100%の下位互換のない次々のNETのバージョンに他の方
    はどうお考えなのか、対処されているのか、おたずねしたいです。
    私の部門は一人なのでたずねる相手もありません。よろしくお願い致します。

     *VB2005のおかげで少し行儀のよいプログラムが書けるようにはなりました。*


親記事 /0過去ログ4より / 関連記事表示
削除チェック/

■6054  Re[6]: (VB2005)配列のインデックス指定方法
□投稿者/ まどか -(2006/08/26(Sat) 22:44:09)

    分類:[VB.NET] 

    当方でも再現しました。
    2-4-4-6-6-8-8-空白

    VS2005T/S
    Windows2000SP4+最新MicrosoftUpdate

    再現したケース

    ・For i As Integer = 0 To 3
    ・For ii1 As Integer = 0 To 3
    ・For j As Integer = 0 To 3
    ・ロジックをクラスメソッドへ移動して呼び出し
    ・MessageBox.Showへ変更
    ・strDat(9)へ変更
    ・(j * 2 + 2)

    再現しなかったケース

    ・(j + j + 2)

    *演算子が怪しい?

    MSDNフォーラム
    http://forums.microsoft.com/msdn-ja/default.aspx?siteid=7
    ここの「Visual Studio フィードバック」へ投稿されてはいかがでしょうか。
記事No.6037 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5702  Re[8]: DrawStringについて
□投稿者/ Eiji -(2006/08/20(Sun) 02:01:32)

    分類:[C#] 

    No5679に返信(中博俊さんの記事)
    > (Windows 2000&Windows XP GOLD)とWindows XP SP1以上では描画の挙動が違いますよ。
    > えーとネタ元みつからず(^^;;;

    環境はWindows XP SP2で確認しましたが、
    こちらでは、ずれずに表示されます。
    ちなみに
    gdiplus.dll 5.1.3102.2180
    (xpsp_sp2_rtm.040803-2158)
    です。

    Nausikaさんの環境はどうですか?
記事No.5571 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5679  Re[7]: DrawStringについて
□投稿者/ 中博俊 -(2006/08/19(Sat) 15:00:21)
>

    分類:[C#] 

    (Windows 2000&Windows XP GOLD)とWindows XP SP1以上では描画の挙動が違いますよ。
    えーとネタ元みつからず(^^;;;
記事No.5571 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5287  セッション変数の受け渡しについて
□投稿者/ いざら -(2006/08/03(Thu) 21:46:53)

    分類:[VB.NET] 


    分類:[VB.NET] 

    はじめまして、いざらと申します。
    今回、はじめて書き込みをさせていただきます。

    ASPからASP.NETへセッション変数は受渡し
    できるのでしょうか?

    現在、ASPでWebシステムを開発したのですが
    帳票(Excel)部分だけはASP.NETで作れと言われ、
    試行錯誤しているのですが、セッション変数が
    受渡しできるのかが良くわかりません。

    ご存知の方がいらっしゃいましたら、
    ご教示のほどよろしくお願いいたします。

    開発環境は以下の通りです。
     Win2000 SP4
     VS2003 VB.NET

    以上、よろしくお願いします。
親記事 /0過去ログ5より / 関連記事表示
削除チェック/

■7162  Re[13]: Excelのバージョンの違いをカプセル化する方法について
□投稿者/ NZ-000 -(2006/10/04(Wed) 01:11:21)

    分類:[C#] 

    >> 2000時にはできなかった型指定が2003でできるようになった。
    >?? それは、どういう意味でしょうか?

    Excelはバージョン2002からXMLへの対応が図られています。
    2000以前にはその機能がなかったため、当時のValueプロパティには引数はなく、
    C#でオートメーションを利用する際にも当然Valueプロパティが使えました。
    しかし、2002以降スプレッドシートからRangeオブジェクトを介してDOMドキュメントを抽出できるようになったため、
    Valueプロパティに引数が設けられました。
    C#はプロパティに引数を与えることができなかったため、アクセサーを公開せざるえませんでした。
    引数にはxlRangeValueDataType列挙型の値を指定するようです。

    ・・・というのが今現在の私の解釈で、
    レスしたときは、MSDNにget_Value(RangeValueDataType)と書いてあったのを、
    単純に戻り値の型を指定できるものと解釈していました。勘違いです。申し訳ありません。
記事No.7041 のレス / END /過去ログ6より / 関連記事表示
削除チェック/

■7151  Re[12]: Excelのバージョンの違いをカプセル化する方法について
□投稿者/ 魔界の仮面弁士 -(2006/10/03(Tue) 22:35:28)

    分類:[C#] 

    > (get_Valueは使えない)。
    引数無しバージョンのアクセサを呼ぼうとすると、C#コンパイラは CS0571 エラーを
    吐きますが、リフレクションによって MethodInfo.Invoke する事は可能だと思います。


    > (つか引数使ったことないけど)。
    中には、バージョンによって戻り値の有無が変化するメソッドさえありますね…。


    > 2000時にはできなかった型指定が2003でできるようになった。
    ?? それは、どういう意味でしょうか?


    > インターフェースはValueで定義している・・・というわけですかな。
    ですね。その COM 側の定義に関しては、No7102に記載したようになっています。
記事No.7041 のレス / END /過去ログ6より / 関連記事表示
削除チェック/

■7139  Re[11]: Excelのバージョンの違いをカプセル化する方法について
□投稿者/ NZ-000 -(2006/10/03(Tue) 19:45:10)

    分類:[C#] 

    >それは、言語仕様上の問題です。
    >VB.NET とは異なり、C# は引数つきのプロパティをサポートしていないためです。
    >(ついでに言うと、省略可能引数も C# ではサポートされていません)

    >そのかわりに、COM相互運用アセンブリは、その Value プロパティに対応する
    >『get_Value(引数)メソッド』を用意しますので、C# 側では、それを使って
    >事前結合によるアクセスを行えるようになっています。

    なるほど。でもMicrosoft Excel9.0 Object Library(Excel2000用のやつ)を利用した場合はValueプロパティが使えるのですよね(get_Valueは使えない)。つまり型を指定したデータの取得はできないことになります(つか引数使ったことないけど)。

    うーん、わからなくなってきたので整理すると
    2000時にはできなかった型指定が2003でできるようになった。VBはプロパティに引数を指定できるので対応できたが、C#は対応できないので仕方なくアクセサーを公開した。インターフェースはValueで定義している・・・というわけですかな。

記事No.7041 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■7066  Re[4]: Excelのバージョンの違いをカプセル化する方法について
□投稿者/ NZ-000 -(2006/10/02(Mon) 16:02:28)

    分類:[C#] 

    皆さん貴重なご意見ありがとうございます。

    >渋木宏明(ひどり)さん

    >Excel.Application.Version を参照するのが無難です。
    >.dll や .exe が存在していても、それが本当アプリケーション実行に使用されているものかを検査するのは困難です。
    >プロパティ値の取得くらいなら、C# でレイトバインドでオートメーションしても大した手間にはなりません。


    遅延バインドについて以下を参照していて思ったことがあります。
    http://support.microsoft.com/default.aspx?scid=kb;JA;302902

    "遅延バインディングを使用するオートメーション クライアントの作成"

    の項で以下のようにしてインスタンスを取得しています。
    object objApp_Late;
    Type objClassType;
    objClassType = Type.GetTypeFromProgID("Excel.Application");
    objApp_Late = Activator.CreateInstance(objClassType);

    確かにこのソースを見る限りバージョンに依存したコードが消えているように思えます。
    しかし、Versionプロパティを参照するためにはオブジェクト型のobjApp_Lateを
    Excel.Applicationインスタンスにキャストしなければいけないと思います。
    そして、その際どちらの(2000or2003)Excel.Applicationクラスを使うか考えることになるかと思います。
    これを考えた時点でExcelのバージョンに依存してしまう気がしますがどうなんでしょうか。
    例えば、それを2003のExcel.Applicationクラスを使って組んでおいて、2000しかインストールされていない環境で実行すると2003のCOMライブラリがありませんというエラーは出ないでしょうか?
    (事前バインディングの場合はでました。当然ですが)
    というより参照設定せずにそのクラスが使えるのかが不思議でならないのですが、あいにくまだコード上で試せていません。


    >名前空間は IDE が「参照設定」を行う際に勝手につけたものです。
    >手動で tlbimp すれば自分で好きなように付け替えられます。

    参考になります。ただ以下に関して上記のこともあって、はたして全てを遅延バインディングで解決できるのか疑問に思っているため共通化部分が見えてきません。

    >メソッド名やプロパティ名に関しては「追加」や「拡張」はあると思いますが、「共通化できる部分が何一つ無い」ような状況ではないように見えます。

    Excelのバージョンによってインターフェースが異なる名前空間に個別に定義されています。Excelのアプリケーション変数を共通化することもできません。私はインストールされているExcelを判別した後は、それぞれのバージョンにあわせた独自のコードを書くしか道はないのではと思っていました。
    まだちょっと先が見えていません。

    >> 4.2000と2003が共存している環境で、バージョン指定でExcelを開く方法
    >> 共存環境を作成し、例えば、2000のCOMライブラリを用いてExcelを起動しようとしたにもかかわらず、
    >> 起動するExcelは2003の方です。予想では2000が起動するのかと思っていたので疑問に思っています。
    >> ちなみにインストールは最初に2000、次に2003の順に行いました。
    >> 何か方法があれば教えてください。

    >どうしたいんですか?
    >上位バージョンが起動する分には問題ないように思えますが。

    前提としてプログラム内で勝手にExcelファイルのバージョンを書き換えたくないという思いがあります(いいわすれていましたが今回考えているのはExcelファイルのリードオンリーです)。
    2000のみインストールしているユーザーと2003のみインストールしている間で一つのExcelファイルのバージョンが、このソフトを使うたびにころころ変わることになります。上書きした際にどの程度のデータが欠落するか定かでない(勉強不足)のため、できる限り書き換えたくないのです。

    しかも現状では、例えば、2000で作られたExcelファイルを2003で開き閉じようとすると、何も変更を加えていないにも関わらず、バージョンの不一致から変更を保存するか聞いてくるダイアログがExcel側で自動でたちが上がります。これが出るとプログラム側でアプリケーションを閉じることがでません(プロセスをKillすればいける?)。

    事前にExcelファイルのバージョンを調べる手段もわかっていないため、Excel.Application.Save()で無理やり上書きするしかありません。従って「このソフトでExcelファイルを使うとデータが欠落する可能性がありまっせ」という極めて迷惑なソフトに仕上がっています。


    >まどかさん

    >インストールバージョンについては、
    >HEKY_CLASSES_ROOTを見るとExcel.Application.バージョン番号となっているようですので
    >それを取得する方法があります。

    なるほど、確かにありますね。2000と2003を共存させている環境で見ると、以下のようなキーがありました。
    Excel.Application (←不明)
    Excel.Application.11 (Excel2003)
    Excel.Application.9 (Excel2000)

    参考にさせてもらいます。

    >そこのCLSIDからたどっていけばインストールパスがわかりますので

    わかりました。

    >GetObject(VB関数)で指定したバージョンのインスタンスを作れそうです。

    ちょっとまだ調べきれていません。


    >中博俊さん

    >XP の PIAと、2003のPIAでは名前空間から違うのでそれの事を言っているのだと思われます。

    XPと2003のPIAに相違があることは初耳でした。
    http://www.microsoft.com/japan/msdn/office/office2003/OfficePrimaryInteropAssembliesFAQ.aspx
    上記の下の方に個別に対応するように書いてありました。
    ただ、ソースは不明ですが、ネット上から得た情報では以下の位置付けになっていました。
    Excelバージョン : Microsoft Excel Object Libraryのバージョン
    97以下 : 8
    2000 : 9
    2002 :10
    2003,XP :11

    2003とXPは同じCOMライブラリでいけるようでした。名前空間が違うという情報は見つけられませんでした。


    何分、素人のため情報に乏しく返答に時間がかかってしまい申し訳ありません。
    もう少し考えて結論が出せましたらレスして解決とさせていただきます。
記事No.7041 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■7047  Re[1]: Excelのバージョンの違いをカプセル化する方法について
□投稿者/ 渋木宏明(ひどり) -(2006/10/02(Mon) 11:41:48)
>

    分類:[C#] 

    > 1.インストールされているExcelのバージョン判別方法

    Excel.Application.Version を参照するのが無難です。
    .dll や .exe が存在していても、それが本当アプリケーション実行に使用されているものかを検査するのは困難です。
    プロパティ値の取得くらいなら、C# でレイトバインドでオートメーションしても大した手間にはなりません。

    > 2.Excelファイルのバージョン判別方法

    調べたことが無いので分かりませんが、エクスプローラから Office ファイルの「プロパティ」を表示した時に「概要」タブに表示される情報の一部として記録されているかもしれないですね。
    ↑の情報の取得については、何度か掲示板等で見かけたことがあります。
    (興味が無かったので具体的な手順は覚えてません)

    > 3.二つのExcel用COMライブラリを一つのプロジェクトで参照するには

    出来ないという前提で進めるしかありません。

    > バージョンによってインターフェース(メソッド名、引数、名前空間)が異なるため、共通化できる部分が何一つとしてなく困っています。

    そんなに違いますか?

    名前空間は IDE が「参照設定」を行う際に勝手につけたものです。
    手動で tlbimp すれば自分で好きなように付け替えられます。

    メソッド名やプロパティ名に関しては「追加」や「拡張」はあると思いますが、「共通化できる部分が何一つ無い」ような状況ではないように見えます。

    引数が「追加」されたメソッドはいくつかありますが、それらに対しては前述のようにレイトバインドでオートメーションで対応する他無いでしょう。
    ただし、C# ではこーどの記述量が増大してしまうのが難点です。

    > それはさておき、参照設定に追加した際、ソリューションエクスプローラの一覧に表示される名前が同じ(Excelというなめ)になるのです。そのため、一つのプロジェクトで二つのExcel用COMライブラリを参照することができず、プロジェクトを分けなければなりません。分ければいいというのはごもっともな意見だと思いますが、今後のために参照設定に追加する際の名前を指定する方法があれば教えてください(あらかじめプロジェクトのどこか設定するのでしょうか)。

    IDE の挙動を制御する方法は知りません。
    手動で tlbimp して、結果を IDE に取り込んでください。

    > 4.2000と2003が共存している環境で、バージョン指定でExcelを開く方法
    > 共存環境を作成し、例えば、2000のCOMライブラリを用いてExcelを起動しようとしたにもかかわらず、
    > 起動するExcelは2003の方です。予想では2000が起動するのかと思っていたので疑問に思っています。
    > ちなみにインストールは最初に2000、次に2003の順に行いました。
    > 何か方法があれば教えてください。

    どうしたいんですか?
    上位バージョンが起動する分には問題ないように思えますが。

記事No.7041 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■7041  Excelのバージョンの違いをカプセル化する方法について
□投稿者/ NZ-000 -(2006/10/02(Mon) 09:32:52)

    分類:[C#] 


    分類:[C#] 

    環境:
    WindowsXP SP2
    VS2005 C# Windowsアプリケーション
    Excel2000,2003共存


    Excelはバージョンによって使うCOMライブラリが異なりますし、ライブラリによってインターフェースも異なるので非常に困惑しています。
    現在主流のExcelは2003だと思いますが、2000もまだまだ現役のようです。
    そこで2003または2000がインストールされているPCで、2003のファイルでも2000のファイルでも読み込める仕様を検討中です。

    仕様は以下のようにしようと思っています。

    1.インストールされているExcelのバージョンをチェックする。

    2.開こうとするExcelのバージョンをチェックする。

    3.バージョンが異なれば、アナウンス(ご使用のExcelでファイルを保存しなおしてください。とか)

    4.バージョンが合えば、そのバージョンのExcelで開く。

    そのような中疑問に思っていることを質問したいと思います。
    (いくつかあります。スレッドを分けた方がよろしければ分けます。)


    1.インストールされているExcelのバージョン判別方法
    Excel.ApplicationクラスのVersionプロパティによってインストールされているExcelのバージョンを調べることができますが、使うCOMライブラリ自体を切り分けたいのでこのクラスを使用する前に判別する必要があります。
    レジストリとかdllのバージョンで判別するのかなぁなどと考えていますが、答えにたどりつけませんでした。
    何か方法があれば教えてください。


    2.Excelファイルのバージョン判別方法
    世間には、開く前にOfficeファイルのバージョンをチェックするソフトがいくつか転がっていますが、
    私にはどのようにしてその機能を実現しているのかわかりませんでした。
    バイナリファイルを無理やり開いて何か手がかりはないものかとも思いましたが、エンコードが混ざっていてバージョンらしき記述の部分が文字化けしてしまいます(なんかファイルの最後の方にファイル情報が記述されているようです)。
    何か方法があれば教えてください。


    3.二つのExcel用COMライブラリを一つのプロジェクトで参照するには
    バージョンによってインターフェース(メソッド名、引数、名前空間)が異なるため、共通化できる部分が何一つとしてなく困っています。
    (2000用のはInterop.Excel、2003用のはMicrosoft.Office.Interop.Excel)
    それはさておき、参照設定に追加した際、ソリューションエクスプローラの一覧に表示される名前が同じ(Excelというなめ)になるのです。そのため、一つのプロジェクトで二つのExcel用COMライブラリを参照することができず、プロジェクトを分けなければなりません。分ければいいというのはごもっともな意見だと思いますが、今後のために参照設定に追加する際の名前を指定する方法があれば教えてください(あらかじめプロジェクトのどこか設定するのでしょうか)。

    4.2000と2003が共存している環境で、バージョン指定でExcelを開く方法
    共存環境を作成し、例えば、2000のCOMライブラリを用いてExcelを起動しようとしたにもかかわらず、
    起動するExcelは2003の方です。予想では2000が起動するのかと思っていたので疑問に思っています。
    ちなみにインストールは最初に2000、次に2003の順に行いました。
    何か方法があれば教えてください。
親記事 /0過去ログ6より / 関連記事表示
削除チェック/

■6846  Re[6]: ウェブブラウザもどきを作成中
□投稿者/ 魔界の仮面弁士 -(2006/09/26(Tue) 12:19:57)

    分類:[VB.NET] 

    > 現在奮闘中です、とっても難しいです

    標準のを利用するのは、(.NETからだと)面倒だって忠告したのに…。(^_^;

    独自ブラウザなら、独自に管理した方がたぶん楽かと思いますよ。
    データの形式等も自由に定義する事が出来る分、融通が利きますから。


    > 何も変化が出ませんでした
    > Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

    パスを取得したら、それを利用するコードを書かなければなりません。

    上記行によって、変数 Path に「お気に入り」仮想フォルダの物理ディレクトリの
    パスが記されますので、あとはそこから、フォルダ列挙およびショートカットを
    列挙するコードと、URLショートカット(*.url)の内容を取り出すコードを
    自前で記述してやることになります。

    そして、この *.url ファイルの内容を取り出すために、幾つか方法があります。

    1. 自前で解析(中身は、iniファイル形式のテキストです)
     →マネージコードで書けますが、将来、管理形式が変更されると弱いです。
    http://www.atmark.gr.jp/~s2000/r/rtl/InternetShortcut.html

    2. IUniformResourceLocator インターフェイスを使う
     →正攻法です。そのかわり、.NET 向けに作成されたインターフェイスでは
      ありませんので、呼び出しにはある程度の知識が必要になります。
    http://msdn.microsoft.com/workshop/misc/shortcuts/reference/iuniformresourcelocator.asp

    3. WshUrlShortcut オブジェクトを使う(COM の解放処理を忘れずに)
     →VBScript からも呼べるよう、レイトバインドでの呼び出しにも
      対応しています。上記 2 種よりは少し使いやすいかも。
    http://msdn.microsoft.com/library/ja/script56/html/wsobjwshurlshortcut.asp


    参考までに、案1の実装例を書いておきます。

    解説用コードという事で、エラー処理や、データの切り出し等は行わず、
    単純にファイルの読み込みのみを行わせています。


    Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As EventArgs) Handles MyBase.Load

    ListBox1.Items.Clear()

    '「お気に入り」フォルダのパスを取得
    Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

    '拡張子 url のファイルを列挙し、それを ListBox に表示
    ListBox1.DataSource = My.Computer.FileSystem.GetFiles( _
    path, FileIO.SearchOption.SearchAllSubDirectories, "*.url")
    End Sub


    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, _
    ByVal e As EventArgs) Handles ListBox1.SelectedIndexChanged

    If ListBox1.SelectedIndex = -1 Then
    Label1.Text = ""
    Else
    'ListBox の内容を取り出す
    Dim path As String = ListBox1.SelectedItem.ToString()

    'url ファイルの内容を Label1 に出力
    Label1.Text = My.Computer.FileSystem.ReadAllText( _
    path, System.Text.Encoding.Default)
    End If
    End Sub

    End Class

記事No.6815 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■6767  Re[2]: ログファイル作成について
□投稿者/ 中博俊 -(2006/09/24(Sun) 10:56:51)

    分類:[VB.NET] 

    イベントログって1回の処理で1000も2000もエントリ作るのには向いてないですよね(^^
記事No.6582 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■6582  ログファイル作成について
□投稿者/ Hiro -(2006/09/19(Tue) 13:43:36)

    分類:[VB.NET] 


    分類:[VB.NET] 

    いつも参考にさせていただいています。
    複数の実行ファイルからアクセスして一つのファイルにログを書き込むような
    クラスを作成しようと考えているのですがどのように考えればよいか分からず
    悩んでいます。一つの実行ファイルからログファイルを作成し、ログを取得す
    すのはできました。どのように考えたらよいか教えて下さい。お願い致します。

    環境は、VB.NET 2005 win2000です。
親記事 /0過去ログ6より / 関連記事表示
削除チェック/

■6306  グリッドの内容をExcelコピー
□投稿者/ なりたい -(2006/09/05(Tue) 20:01:19)

    分類:[C#] 


    分類:[C#] 

    こんばんわ。

    はじめまして。

    今、グリッドの項目をExcelファイルに保存する作業をやってます。
    それで、大きな問題があるので皆さんに質問します。

    まず、Microsoft Visual Studio .Net2003, Windwos XP, Excel2000の環境です。
    そして、C1ComponentOne と言う事を使っています。

    1.プログラムでExcelを操作するとメモリ問題。
    vb.netのrange.value "=SUM(A" & Col1 & ":A" & Col2 & ")"
    上のようにすれば、Excelの数式が出来ますが、データが多いと「メモリ不足」。

    その前の作業は
    1)グリッドの内容を編集します。
    2)グリッドの内容をExcelに全てコピーします。(C1FlexGridのメソッドを使っています。)
    3)保存したExcelファイルを
    「DirectCast(CreateObject("Excel.Application"), Excel.Application)」
    でメモリ上に呼び出します。
    4)"=SUM(A" & Col1 & ":A" & Col2 & ")"と"=INT(D" & j & " * F" & j & ")"をExcelファイルに適用する作業をします。
    5)もう一度Excelファイルを保存します。
    つまり、FileIOが多いので時間もすごく掛かるし、そのせで「メモリ不足」になるんだと思っていますが。

    普通、Excelファイルの行は3000以上です。そして、4)の作業はそのExcelファイルを一つずつ比べてSumとかINTをExcelファイルに書きます。かなり悪いと思います。

    で、C1ComponentOneに有る機能を使うと思いましだが、
    C1のはSumとINTなどのExcel数式が適用出来ません。

    下に問題のコードを付けます。
    一部分ですので、実行は出来ません。

    '明細Excel出力
    Public Function Write_DetailExcel() As Boolean
    Dim strStartCol, strEndCol As String
     Try
    Const ColKin As Integer = 7 '金額欄です。

       'Excelファイルを最後の行まで読みます。
    For i As Integer = 0 To intEnd

    '/////////////////////////////////////////////////////////////////////////
    'ページが区別されています。
    For j As Integer = alExcelStartRow(i) + 1 To alExcelEndRow(i) Step 2
    xlRange = DirectCast(xlParentRange(j, ColKin), Excel.Range)
    xlRange.pagebreak = Excel.XlPageBreak.xlPageBreakManual
       
    '一般項目ならD欄とF欄を掛けて金額欄に付けるExcel数式が必要です。
    xlRange.value = "=INT(D" & j & " * F" & j & ")" 
    xlRange = Nothing
    Next j

    '/////////////////////////////////////////////////////////////////////////

    '一つのページ処理が終わったらこのページの小計を付けます。
    strStartCol = CStr(CInt(alExcelStartRow(i)) + 1)
    strEndCol = CInt(alExcelEndRow(i))
    xlRange = DirectCast(xlParentRange(strEndCol + 2, ColKin), Excel.Range)
    xlRange.pagebreak = Excel.XlPageBreak.xlPageBreakManual
    xlRange.value = "=SUM(G" & strStartCol & ":G" & strEndCol & ")"

    Next i

    Catch ex As Exception
    Return False
    End Try
    End Function

    上の'//の部分が時間をすごく掛かっています。

    長い質問だったので申し訳ございません。。。
    それでは、お願いします。
親記事 /0過去ログ6より / 関連記事表示
削除チェック/

■7669  Re[2]: Visual Studio2003の正規表現による置換
□投稿者/ ヤマ -(2006/10/20(Fri) 15:20:44)

    分類:[その他の質問] 

    > # 茶々入れるつもりじゃなく、大真面目に
    >
    > コ難しい正規表現にのーみそ絞ったあげく掲示板にお伺いを立てて答を貰ってるヒマがあったら"手作業"でちゃっちゃとやっちゃいます僕なら。
    >


    >επιστημηさん
    レスありがとうございます。

    100とか200とかだったら手作業でいいんですけど
    12月までにすればいいとはいえ数が1000、2000はちょっと・・・。
    まぁちょろっと別のプログラム書けばいいんですけどね(苦笑)

    > private メソッド名を手で直してコンパイル。
    > わさわさ出たエラー行をちょいちょいと手直し。エラーなくなりゃおしまい。

    ということですが、メソッド名は大文字小文字が変わるだけなので
    メソッド名を手で直してもエラーが出ませんよね?
    (エディタの設定変えたらエラーになるのかな??
     まぁエラー出して直す方が面倒なのだが。)


    たまたまスパイダリングのような処理をPHPで作る部分を来週くらいに触るので
    そのときにVBのファイルを対象に置換しようと思います。


    しかし後学のため、もし正規表現で可能であれば
    引き続きご回答いただきたく思います。


記事No.7664 のレス /0過去ログ7より / 関連記事表示
削除チェック/

■7584  Re[4]: Excelのバージョンの違いについて
□投稿者/ mima -(2006/10/18(Wed) 13:44:14)

    分類:[C#] 

    バージョンごとに直して、
    97は返り値なし、それ以外は有にしたのですが、
    97でコンパイルすると、怒られてしまいます。

    No7563に返信(魔界の仮面弁士さんの記事)
    > >>だとすれば、Excel 97 までは戻り値の無い(void)メソッドでしたが、
    > >>2000 以上ではバリアント(object)を返すメソッドに変更されています。
    >>だとすると、別々に作成しないとダメだということでしょうか。。
    >
    > Application オブジェクトの Version プロパティの結果を元にして
    > Excel バージョンを判定する事ができますよ。
記事No.7559 のレス /0過去ログ7より / 関連記事表示
削除チェック/

■7563  Re[3]: Excelのバージョンの違いについて
□投稿者/ 魔界の仮面弁士 -(2006/10/17(Tue) 22:34:00)

    分類:[C#] 

    >>だとすれば、Excel 97 までは戻り値の無い(void)メソッドでしたが、
    >>2000 以上ではバリアント(object)を返すメソッドに変更されています。
    > だとすると、別々に作成しないとダメだということでしょうか。。

    Application オブジェクトの Version プロパティの結果を元にして
    Excel バージョンを判定する事ができますよ。
記事No.7559 のレス /0過去ログ7より / 関連記事表示
削除チェック/

■7561  Re[2]: Excelのバージョンの違いについて
□投稿者/ mima -(2006/10/17(Tue) 22:11:26)

    分類:[C#] 


    > Range クラスの Copy メソッドの事で良いでしょうか?

    そうです。
    すみません、説明が下手で。。

    > だとすれば、Excel 97 までは戻り値の無い(void)メソッドでしたが、
    > 2000 以上ではバリアント(object)を返すメソッドに変更されています。

    だとすると、別々に作成しないとダメだということでしょうか。。
記事No.7559 のレス /0過去ログ7より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>

ヒット件数が多いので過去ログ1〜20 までの検索結果 / 過去ログ21からさらに検索→

パスワード/

- Child Tree -