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 | 11 | 12 | 13 | 14 | 15 >>
■3195  Re[1]: TreeViewを再帰的に作成したい。
□投稿者/ 魔界の仮面弁士 -(2006/04/21(Fri) 12:05:12)

    分類:[C#] 

    > 「どのように"再帰"を利用して木構造を作成していくかがわからない」

    たとえば、最終的に表示させるデータが
     大元
     ├子1
     │├孫11
     │└孫12
     └子2
      ├孫21
      └孫22
    のような形式だとしたら、それを――
     Oracle なら、START WITH / CONNECT BY
     SQL Server なら、再帰クエリ
    ――などを用いるなどして、
     id 親 名前
     ------------
     01 00 大元
     02 01 子1
     04 02 孫11
     07 02 孫12
     03 01 子2
     06 03 孫11
     05 03 孫22
    のような、「ツリーでの見た目の表示順」になるように取り出せば、
    C#側を再帰メソッドにする必要は無いかも知れません。


    void Button1_Click(object sender, System.EventArgs e)
    {
     //実際には、データベースから取得
     this.treeView1.Nodes.Clear();
     AppendNode(treeView1, 1, 0, "大元");
     AppendNode(treeView1, 2, 1, "子1");
     AppendNode(treeView1, 4, 2, "孫11");
     AppendNode(treeView1, 7, 2, "孫12");
     AppendNode(treeView1, 3, 1, "子2");
     AppendNode(treeView1, 6, 3, "孫21");
     AppendNode(treeView1, 5, 3, "孫22");
    }

    void AppendNode(TreeView treeView, int id, int parentId, string name)
    {
     // .NET 2.0用
     TreeNodeCollection nodes = treeView.Nodes;
     if(parentId != 0)
     {
      TreeNode[] parents = nodes.Find(parentId.ToString(), true);
      if(parents.Length != 0)
      {
       nodes = parents[0].Nodes;
      }
     }
     nodes.Add(id.ToString(), name);
    }
記事No.3188 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3179  Re[3]: 簡単な?方法あったら教えてください
□投稿者/ Soony -(2006/04/20(Thu) 13:40:05)

    分類:[VB.NET] 

    2006/04/20(Thu) 14:01:03 編集(投稿者)

    C#や、Office VBAには三項演算というものがあるのですが、VB.NETにはないのでしょうか。

    例:C#
    rboMkanr1 = (rboYuukou11.Checked ? 1 : 0);
    rboMkanr2 = (rboYuukou21.Checked ? 1 : 0);
    rboMkanr3 = (rboYuukou31.Checked ? 1 : 0);
    rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3;

    例:Office VBA
    rboMkanr1 = IIF(rboYuukou11.Checked, 1, 0)
    rboMkanr2 = IIF(rboYuukou21.Checked, 1, 0)
    rboMkanr3 = IIF(rboYuukou31.Checked, 1, 0)
    rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3

    また、昔のVB(6.0以前)では、内部的には True=-1, False=0 として
    扱われることを利用して、こんな書き方もあったように思います。
    (.NETからは変数の扱いが変わったから、これはアウトかな・・・汗)

    例:VB6.0
    rboMkanr1 = rboYuukou11.Checked * -1
    rboMkanr2 = rboYuukou21.Checked * -1
    rboMkanr3 = rboYuukou31.Checked * -1
    rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3

    参考までに。
記事No.3174 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3161  Re[1]: レコードの検索について
□投稿者/ 名無しぃシャープ -(2006/04/19(Wed) 12:17:43)

    分類:[C#] 

    No3160に返信(MIZさんの記事)
    > データベースのレコードを検索したいんですが探しても見つかりません。
    > 更新やら追加はわかったんですが検索だけが不明です。
    > どなたか載せているサイトを知っていらしたら教えてください。
    > 使用しているのはSQLの2005です。

    UPDATE, INSERTの前の大基本であるSELECT〜WHEREでできませんか?
    というか、今現状どう実装しているのかわかりません。
    SqlDataReaderを使ってますか?
記事No.3160 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3191  Re[4]: [VB.NET]フォーム上のComboBoxすべてを-1に
□投稿者/ jhondoe -(2006/04/21(Fri) 02:25:01)

    分類:[C#] 

    申し訳ありません。キャストするという意味がようやく理解できました。
    Option Strict On でも問題なく動作しました。
    ありがとうございました。

    Public Sub ClearComboBox(ByVal hParent As Control)
    For Each hControl As Control In hParent.Controls

    If hControl.HasChildren = True Then
    ClearComboBox(hControl)
    End If
    If TypeOf hControl Is ListControl Then
    Dim hListControl As ListControl = DirectCast(hControl, ListControl)
    hListControl.SelectedIndex = -1
    End If
    Next hControl
    End Sub
記事No.3150 のレス / END /過去ログ3より / 関連記事表示
削除チェック/

■3149  Re[13]: 並び替えについて
□投稿者/ まどか -(2006/04/18(Tue) 23:27:08)

    分類:[VB.NET] 

    > dellog = Mid(dellog, 20, dellog.Length)

    Mid(dellog, 20)のように「以降すべて」の意味で省略するか
    Mid(dellog, 20, dellog.Length - 19)としましょう。

    >>CType(test.Item(Index), String).SubString(19)
    >
    > ↑この処理はMID関数だったかな?それと一緒な動きをしているって感じでしょうか

    そのとおりです。
    #ヘルプは見てますか?


    > なんかもっといい書き方あったら教えてくださいw

    ループの仕方などは特に意見はありません。
    あえて指摘するなら、
    dellogを上書きするのではなく、ファイル名専用の変数に格納しましょう。可読性や保守性が向上します。
    Dim FileName As String = logname(i).SubString(19)
    File.Delete(FileName)

    i がForループでしか使わないなら
    For i As Integer = 5 To cnt - 1 という書き方もよく使うので覚えてください。
    この外でのDim宣言は不要になります。

    Mid関数はMicrosoftVisualBasic名前空間という旧VBとの互換性を目的としたライブラリですので
    なるべく他の純正クラスを使うようにするとよいです。今回の場合、String.SubString。
記事No.3133 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3148  Re[12]: 並び替えについて
□投稿者/ KEN -(2006/04/18(Tue) 18:10:50)

    分類:[VB.NET] 


    > 19文字っていう普遍の規則があれば、
    > CType(test.Item(Index), String).SubString(19)
    > でよいでしょう。

    ↑この処理はMID関数だったかな?それと一緒な動きをしているって感じでしょうか
    とりあえずさっき自分であ〜だこ〜だしてたら動いたんですがw

    For i = 5 To cnt - 1
    dellog = logname(i)
    dellog = Mid(dellog, 20, dellog.Length)
    Console.WriteLine(dellog)
    File.Delete(dellog)
    Next

    こんな感じで作ったんですが
    なんかもっといい書き方あったら教えてくださいw
記事No.3133 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3146  Re[11]: 並び替えについて
□投稿者/ まどか -(2006/04/18(Tue) 17:03:54)

    分類:[VB.NET] 

    > 更新日付だけを消したい場合って
    > arraylistの中を1行づつ取り出して頭から19文字(YYYY/MM/DD_HH:MM:SS)を削除すればいいだけだと思うんだけど

    19文字っていう普遍の規則があれば、
    CType(test.Item(Index), String).SubString(19)
    でよいでしょう。

    > あとまどかさん俺にメールくださいw
    > プログラムとか教えてほしかったりするので

    情報を共有する掲示板でのやりとりですので、ここでおこなってください。
    私の発言や提示したものに関してはとことんお付き合いいたします。

    また、「習得」を目的としているならそれこそ身近にいる先輩などを有効利用しましょう。

    #先の添付ソースの動作確認をして正常に動きました。
記事No.3133 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3137  Re[4]: 並び替えについて
□投稿者/ KEN -(2006/04/18(Tue) 12:08:32)

    分類:[VB.NET] 

    fslog = Directory.GetFiles(log, "*.log")
    logfiles.AddRange(fslog)
    logfiles.Sort()
          ↑このカッコの中がわかればできるのかな?
    更新日時で並び替え・・・
記事No.3133 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3128  Re[6]: エクセルの中で For Each〜Next
□投稿者/ まじん -(2006/04/17(Mon) 16:48:30)

    分類:[VB.NET] 

    No3122に返信(まどかさんの記事)
    まどかさんどうもありがとうございます

    > For Row As Integer = 0 To va.GetUpperBound(0)
    > For Col As Integer = 0 To va.GetUpperBound(1)
    > va(Row, Col)
    > Next
    > Next
    > でいいのでは?
    > あと、NullやEmptyのチェックをお忘れなく。必ず""が入っているわkではないので。

    なるほど GetUpperBoundを使うと二次変数の番号も分かりやすいですね ばっちりいけました。
    みなさん どうもありがとう御座いました
    直接for eachは無理という事も分かりましたので 一応解決とさせて頂きます。
記事No.3108 のレス / END /過去ログ3より / 関連記事表示
削除チェック/

■3122  Re[5]: エクセルの中で For Each〜Next
□投稿者/ まどか -(2006/04/16(Sun) 21:36:11)

    分類:[VB.NET] 

    > この時、For Eachの中の vが変数va(,)の何番なのかを知るにはどうすれば

    For Row As Integer = 0 To va.GetUpperBound(0)
    For Col As Integer = 0 To va.GetUpperBound(1)
    va(Row, Col)
    Next
    Next
    でいいのでは?
    あと、NullやEmptyのチェックをお忘れなく。必ず""が入っているわkではないので。
記事No.3108 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3121  Re[4]: エクセルの中で For Each〜Next
□投稿者/ まじん -(2006/04/16(Sun) 12:28:58)

    分類:[VB.NET] 

    2006/04/16(Sun) 12:32:17 編集(投稿者)

    Dim va(,) = xlran.Value
    Dim v
    For Each v In va
    MsgBox(va)
    Next

    こんな感じにすると まるごとその範囲のデータが取り込めました
    この時、For Eachの中の vが変数va(,)の何番なのかを知るにはどうすれば
    良いんでしょうか? おそらく非常に初歩的な質問かと思うのですが

    今までは いつもfor eachの中に i+=1 みたいのを入れて参照してたのですが・・・


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

■3120  Re[3]: エクセルの中で For Each〜Next
□投稿者/ まじん -(2006/04/16(Sun) 08:50:46)

    分類:[VB.NET] 

    まどかさん、中博俊さん、魔界の仮面弁士さん ありがとう御座います

    やはり、For eachは 無理だということですね

    Dim val(10, 10)
    Dim r = 0
    Dim c = 0
    Do
    r = 0
    Do
    xlcel = xlSheet.Cells(r + 1, c + 1)
    val(r, c) = xlcel.Text
    r += 1
    Loop Until r = 10
    c += 1
    Loop Until c = 10

    こんな感じで以前はエクセルのデータを取り込んでたのですが能率が悪くて・・
記事No.3108 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3117  Re[2]: エクセルの中で For Each〜Next
□投稿者/ 魔界の仮面弁士 -(2006/04/15(Sat) 12:47:15)

    分類:[VB.NET] 

    > Rangeオブジェクトは範囲自体を単位としていますので、含まれるセルを列挙できません。
    実は VBA レベルでは、
     Set X = Sheet1.Range("B2:D4")
     For Each Y In X ' In X.Cells でも可
      i = i + 1
      Y.Value = i
     Next
    のような事ができたりします。(^^;


    ただ、VB.NET からの呼び出しだと、レイトバインドかアーリバインドかに
    よって列挙できない場合もありますし、また、オブジェクトの解放処理に関する
    問題もありますので、For Each するよりも、

    > Range.Value = Object型2次元配列で一括代入する方法になるでしょう。

    のように、二次元配列を一括代入する方法を採用した方が無難でしょう。


    > Cells(Row,Col)プロパティなどで一つ一つ代入するか、
    ただし、これは NG 。

    Cells は引数を持たないプロパティです。つまり
     .Cells(Row, Col)
    というのは、
     .Cells._Default(Row, Col)
    の呼び出しを意味してしまいます。

    これではオブジェクトを解放できませんので、Cells を使う場合は、
     R1 = .Cells
     R2 = R1(Row, Col)
     R2.Value = 〜〜
    のようにわけて記述し、あとから、それぞれの変数を
    Marshal.ReleaseComObject()で解放する事が求められます。
記事No.3108 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3115  Re[7]: エクセルの中で For Each〜Next
□投稿者/ まどか -(2006/04/15(Sat) 04:00:31)

    分類:[VB.NET] 

    先に書きましたが、一応、
    Dim CellBuf(2, 4) As Object
    CellBuf = TargetSheet.Ranges("A1:E3").Value
    という方法も試してみては。

    マクロのほうが速いのは、Interopなどを介さない、Office内部実装での処理などが理由かも。
    そういう逆転現象を聞いたことあるような無いような。。。
    まぁネットワークという低レベルIOは避けるに越したことはないと思いますが。
記事No.3108 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3110  Re[2]: エクセルの中で For Each〜Next
□投稿者/ まじん -(2006/04/14(Fri) 18:06:28)

    分類:[VB.NET] 

    No3109に返信(まどかさんの記事)
    まどかさん ありがとうございます

    > Rangeオブジェクトは範囲自体を単位としていますので、含まれるセルを列挙できません。
    > Cells(Row,Col)プロパティなどで一つ一つ代入するか、
    > Range.Value = Object型2次元配列で一括代入する方法になるでしょう。

    範囲自体が1つの単位になってしまうんですね
    ということは 上記のようにするか do〜Loop Untilなどで処理するしかないわけですね
    実は仕事場のネットワークのホストコンピューターの中のエクセルのデータを同じくホストコンピューターの.mdbファイルへ送るプログラムを作っていたのですが プログラムで直接データを取り込み送るとすごく時間がかかった(do〜Loopで取り込み)のですが エクセルのVBAにマクロを書込み実行させると(For Each〜Nextで取り込み)10分の1位の時間で処理できました
    それで For Eachで処理させた方が早いのかな? と思ったのですが・・・


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

■3109  Re[1]: エクセルの中で For Each〜Next
□投稿者/ まどか -(2006/04/14(Fri) 17:41:41)

    分類:[VB.NET] 

    > For each〜Next のところで「メンバーが見つかりません」とエラー
    >
    > Dim xlran As Excel.Range = xlSheet.Range("A1", "E5")
    >
    > Dim c As Excel.Range
    > For Each c In xlran
    > c.Value = "A"
    > Next

    Rangeオブジェクトは範囲自体を単位としていますので、含まれるセルを列挙できません。
    Cells(Row,Col)プロパティなどで一つ一つ代入するか、
    Range.Value = Object型2次元配列で一括代入する方法になるでしょう。
記事No.3108 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■3108  エクセルの中で For Each〜Next
□投稿者/ まじん -(2006/04/14(Fri) 16:07:03)

    分類:[VB.NET] 


    分類:[VB.NET] 

    エクセルの中で For Each がしたくて下記のような構文を書いているのですが
    For each〜Next のところで「メンバーが見つかりません」とエラー

    Dim xlapp As Excel.Application = CreateObject("excel.application")
    xlapp.Application.Visible = True
    Dim xlbook As Excel.Workbook = xlapp.Workbooks.Open("\\Intsv\共有\000全社\108技術部\AS課\支払台帳用業者名.xls")
    Dim xlwin As Excel.Window = xlapp.Windows("支払台帳用業者名.xls")
    xlwin.Visible = True
    Dim xlSheets As Excel.Sheets = xlbook.Worksheets
    Dim xlSheet As Excel.Worksheet = xlSheets("sheet1")
    Dim xlran As Excel.Range = xlSheet.Range("A1", "E5")

    Dim c As Excel.Range
    For Each c In xlran
    c.Value = "A"
    Next

    どんな構文にすれば 良いんでしょうか?
    多分簡単なことだと思うんですが 簡単すぎるのかどこを見ても書いてないんです
    また、御教授お願い出来ないでしょうか?
親記事 /0過去ログ3より / 関連記事表示
削除チェック/

■3170  Re[4]: C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ Soony -(2006/04/19(Wed) 17:17:42)

    分類:[C#] 

    2006/04/19(Wed) 17:47:20 編集(投稿者)

    こんにちは。Soony@検証作業真っ最中 です。

    先日アドバイスいただいたものを、片っ端から行ってみました。


    まず、イベントビューアには、アプリケーション、システム、イベントともに、
    なにも出力されていませんでした。


    FileMonも使ってみました。
    ログにSuccessedも含めると、えらい量になるので、チェックをはずしていますが、
    情報としては足らないのでしょうか?
    Log errorsだけにしてしまうと、上書き保存時に何も出力されないので、
    Opens, Reads, Writes にもチェックを入れています

    それで、まず、、、ログの見方がよくわからずで、
    Attribute Errorなどが出ているので、何かしらのファイルアクセスエラーになっているのは
    わかったのですが、これが権限などに影響しているのかどうか・・・判別ができずにいます。


    かなり長くごちゃごちゃと書きなぐってしまいましたが、
    以下、検証結果になります。

    もし、なにかおかしな部分がありましたら、ご教授願えないでしょうか。


    ■ファイルのセキュリティ権限
      コピー元(hoge.xls、\\ネットワーク上のファイルサーバ\共有フォルダ)
        Administrator (SERVER\Administrator)
        Everyone
        SYSTEM
        Users (SERVER\Users)
        ※すべてフルコントロール
      \\ネットワーク上のファイルサーバー\共有フォルダ\
      のフォルダの権限も同様に、
        Administrator (SERVER\Administrator)
        Everyone
        SYSTEM
        Users (SERVER\Users)
        ※すべてフルコントロール

      File.Copy("hoge.xls", "hoge_copy.xls", true)でコピー直後の、
      ローカルPC\hoge_copy.xlsの権限
        Everyone (フルコントロールになっているが、グレー表示)
      また、このファイルを開くことはできるが、上書き保存はできない。
      また、このhoge_copy.xlsファイルを別フォルダにコピーしても
      やはり上書き保存はできない。

      生成ファイル(hoge_make.xls、ローカルPC、アプリケーションによって作成)


    ■エラー時のエラーの種類
      System.Runtime.InteropServices.COMException
      COMException.Message = "ファイルを保存できませんでした。"
      #エラーオブジェクトのクイックウォッチも添付しておきます。


    ■ファイルアクセスモニタリング(FileMon)ログ
      File.Copy("hoge.xls", "hoge_copy.xls", true)
      でコピー直後のログは、

    17:00:55 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    17:00:55 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    17:00:55 devenv.exe:3496 DIRECTORY D:\Hoge_soft  Change Notify 


      objBook.Close(true, "hoge_make.xls", true);
      を実行した結果、以下のようなログは、

    0.00002542 EXCEL.EXE:3832 DIRECTORY D:\Hoge_soft\bin\Debug\Temp\ NO SUCH FILE FileBothDirectoryInformation: hoge_make.xls 
    0.00002486 EXCEL.EXE:3832 DIRECTORY D:\Hoge_soft\bin\Debug\Temp\ NO SUCH FILE FileBothDirectoryInformation: hoge_make.xls 
    0.00002877 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp\hoge_make.xls NOT FOUND Attributes: Error 
    0.00003380 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp\hoge_make.xls NOT FOUND Attributes: Error 
    0.00003967 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp\95477000 NOT FOUND Attributes: Error 
    0.00003101 EXCEL.EXE:3832 OPEN D:\Hoge_soft\bin\Debug\Temp\95477000 NOT FOUND Options: Open Access: All 
    0.00000726 EXCEL.EXE:3832 READ C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\3FDE6FFB.emf END OF FILE Offset: 2696 Length: 8192 
    0.00001453 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    0.08655653 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    0.06760077 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    0.00003967 EXCEL.EXE:3832 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\CRTDLL.dll NOT FOUND Attributes: Error 
    0.04650731 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    0.00004470 EXCEL.EXE:3832 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error 
    0.00003799 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
    0.00001928 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system\vba232me.dll NOT FOUND Attributes: Error 
    0.00002738 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
    0.00002486 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\vba232me.dll NOT FOUND Attributes: Error 
    0.00002291 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
    0.00002011 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
    0.00002542 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\System32\Wbem\vba232me.dll NOT FOUND Attributes: Error 
    0.00004163 EXCEL.EXE:3832 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002542 EXCEL.EXE:3832 OPEN C:\VBABG32.OLB NOT FOUND Options: Open Access: All 
    0.00002375 EXCEL.EXE:3832 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002794 EXCEL.EXE:3832 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002235 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00003017 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002011 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002319 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002179 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00001844 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002235 EXCEL.EXE:3832 QUERY INFORMATION C:\WINDOWS\System32\Wbem\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00002822 EXCEL.EXE:3832 OPEN C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Options: Open Access: All 
    0.00002235 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
    0.00001509 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    0.08477446 devenv.exe:3496 DIRECTORY D:\Hoge_soft NOTIFY ENUM DIR Change Notify 
    0.00000475 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000475 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000503 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000447 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000503 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000447 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000475 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\desktop.ini RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00003073 EXCEL.EXE:3832 DIRECTORY C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\ NO SUCH FILE FileBothDirectoryInformation: Temp 
    0.00003324 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\Temp.LNK NOT FOUND Attributes: Error 
    0.00000698 EXCEL.EXE:3832 QUERY INFORMATION D:\Hoge_soft\bin\Debug\Temp BUFFER OVERFLOW FileAllInformation 
    0.00001453 EXCEL.EXE:3832 OPEN D:\Hoge_soft\bin\Debug IS DIRECTORY Options: Open Access: All 
    0.00003743 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\Temp.LNK NOT FOUND Attributes: Error 
    0.00002598 EXCEL.EXE:3832 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\Temp.LNK NOT FOUND Attributes: Error 
    0.00000670 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\index.dat RANGE NOT LOCKED Offset: 0 Length: -1 
    0.00000615 EXCEL.EXE:3832 UNLOCK C:\Documents and Settings\Hoge_User\Application Data\Microsoft\Office\Recent\index.dat RANGE NOT LOCKED Offset: 0 Length: -1 
     devenv.exe:3496 DIRECTORY D:\Hoge_soft  Change Notify 


    ただ、、、いまさら気がついたのですが、
    単にファイルサーバーからhoge.xlsをエクスプローラでローカルPCにコピーしてExcelで開き、
    上書き保存してみたところ、同様に「ファイルを保存できませんでした。」というエラーになりました。

    この上書き保存時に出力されたログが、これです。
    (・・・errorタイプのログに、hoge.xlsが見つからないんですが・・・)

    17:04:03 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\13CDCF89.emf BUFFER OVERFLOW FileAllInformation 
    17:04:08 EXCEL.EXE:1540 QUERY INFORMATION D:\Test\D31F7000 NOT FOUND Attributes: Error 
    17:04:08 EXCEL.EXE:1540 OPEN D:\fm2005\D31F7000 NOT FOUND Options: Open Access: All 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\System32\Wbem\vba232me.dll NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 OPEN C:\VBABG32.OLB NOT FOUND Options: Open Access: All 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION D:\Program Files\Microsoft Office\OFFICE11\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\system32\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\WINDOWS\System32\Wbem\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 OPEN C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Options: Open Access: All 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\My Documents\VBABG32.OLB NOT FOUND Attributes: Error 
    17:04:09 EXCEL.EXE:1540 QUERY INFORMATION C:\Documents and Settings\Hoge_User\Local Settings\Temporary Internet Files\Content.MSO\13CDCF89.emf BUFFER OVERFLOW FileAllInformation 

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

■3077  C#でExcelのWorkBookオブジェクトを保存時にエラー
□投稿者/ Soony -(2006/04/11(Tue) 15:19:36)

    分類:[C#] 


    分類:[C#] 

    2006/04/11(Tue) 18:44:59 編集(投稿者)
    2006/04/11(Tue) 15:22:51 編集(投稿者)

    こんにちは。Soony と申します。
    いつも参考にさせていただいて、日々救われております。

    Win XP Pro SP2 (開発、実行)
    Office 2003 Pro(開発、実行)
    VS2003 C#

    C#でVisual Studio Tools for Officeを使用しているのですが、
    SaveメソッドやSaveAsメソッド、Closeメソッドなどを使用して、
    作成したExcelファイルを保存しようとすると、
    「ファイルが保存できませんでした」というエラーが表示され、
    怒られてしまうパソコンがあります。

     Excel.Application objApp = new Excel.Application();
     try {
      Excel.Workbooks objBooks = objApp.Workbooks;
      try {
       Excel._Workbook objBook = objBooks.Open(filename, 0, false, Missing.Value, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
       try {
        Excel.Sheets objSheets = objBook.Worksheets;
        try {
         Excel._Worksheet objSheet = (Excel.Worksheet)objSheets.get_Item(1);
         try {
          //
         } finally {
          if (objSheet != null) {
           System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
          }
         }
        } finally {
         if (objSheets != null) {
          System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheets);
         }
        }
       } finally {
        if (objBook != null) {
         try {
          objBook.Close(true, filename, true);
    //     ↑ ここでエラーになる ↑
         } finally {
          System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook);
         }
        }
       }

    この現象は、必ずというわけではなく、特定のパソコンで発生します。

    実行している各パソコンは、Active Directory環境下に30台ほどあり、
    動作を確認すると、4割程度のパソコンで上記のエラーが発生し、
    残りのパソコンでは、期待通りに正常にファイルが保存されます。

    また、エラーが発生しているパソコンでログイン先を自PCにする
    (ドメインへのログインからはずれる)と、正常に保存がなされるので、
    Excelファイルを保存するときに、何かしらのセキュリティが
    かかってしまっているのかなと考えているのですが・・・。

    また、正常に保存ができたExcelファイルを、エラーが発生するパソコン上で
    OfficeのExcelで開き、上書き保存をしようとすると、
    「ファイルが保存できません」と怒られます。
    (ファイル名を指定して保存をしても、同様に怒られる現象もありました)


    一応、ドメイン環境に参加した状態で、以下の権限設定をしています。
    ・ドメイン上で、Domain Users権限
    ・ドメインにログインしているユーザーに、ローカルPCに対して、Administrators権限
    (できれば、Power User権限としておきたいが、テスト用に一部のPCでフルに与えてみている)

    この不具合を回避するために、どのような設定が必要なのか掴めずにいます。
    お知恵の拝借をさせていただきたく、お願いいたします。



    p.s.
    ・・・もしかすると、質問の趣旨が、この掲示板の趣旨から
    外れてしまっているかもしれませんね・・・(大汗)。

    どちらかというと、言語の問題よりも、ネットワーク環境の問題に
    終始しそうな気がします。

    でも、VSOTを使用する上においてという意味では、こちらで質問した方が
    的確な解決方法が得られそうではありますね。

    ということで、場違いの可能性は否定できませんが・・・
    ご教授いただけることを期待して・・・
    ぜひよろしくお願いいたします。


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

■3055  Re[1]: 互換性につきまして
□投稿者/ Blue -(2006/04/08(Sat) 01:36:35)

    分類:[VC++] 

    >strncpy( oya2_dat, oya3_dat, (sizeof(oya3_dat)-1) ); ★
    strncpy( ( char* )&oya2_dat, ( char* )&oya3_dat, sizeof( oya3_dat ) - 1 );
    oya3_datが文字列であるという前提でないのであれば、memcpy関数を使いましょう。
    memcpy( &oya2_dat, &oya3_dat, sizeof( oya3_dat ) - 1 );


    丸付き数字は「機種依存文字」と呼ばれる文字で、どの機種から閲覧されるかわからない
    Web上の掲示板等では使わないほうが良いです。

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

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 >>

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

パスワード/

- Child Tree -