• 締切済み

.netからexcel操作の処理速度が異常に遅い

VB2005にてエクセルへ値をセットし印刷するPGを作成しております。 その際、データ件数が200件ほどしかないのですが すべてセットし印刷が始まるまで3分ほどかかります。 特にややこしい処理ではなく、for文でループさせながら セットしているだけです。 range、cellsどちらでやっても変わらずでした。 これくらいかかるのが普通なのでしょうか??

みんなの回答

回答No.1

1件あたりの処理時間を計測して遅い部分を絞り込んでみて、その部分のコードを貼り付けるなりして識者にアドバイスをもらってはいかがでしょうか? >これくらいかかるのが普通なのでしょうか?? 具体的なデータやコードを示していないので回答する側としても回答のつけようがないと思いますよ。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB.NET Excelの読み取り(ループ処理)

    VB.NETでExcelをループ処理で読み取る際に、While文を使用して1行ずつ読み込む処理をするのですが、皆さんはどのようにして書かれてますか? While文の条件は「空白の行が見つかったらループを辞める」という条件で処理をするのですが、書き方がいまいちピンとこないので、皆様の情報を参考にさせて頂ければと思いました。 ・Excelのデータは約3000~4000件ほど(データによって件数は若干変動) ・Excelの6行目(A:6)から読み込む 是非ともよろしくお願いいたします。

  • VB2010でのExcel操作

    VB2010を使用しています VBにてExcel上のセルの値をボタンを押すごとに『+1』していきたいのですが xlSheets.cells(2, 5) = xlSheets.cells(2, 5) + 1 では『Range型からIntegerに変換できません』的なエラーが出ます。 『CINT()』や『.ToString』などを使って変換しようとしても何かしらのエラーが出てしまいます。 ご教授お願いします。

  • Excelに値がセットされず出力されてしまう

    お世話になります。 VB6でファイルを取り込んで、取り込んだ値を合算して、 Excel出力させる、という処理を行うPGがあります。 約1年半くらい、問題なく動作していたんですが、 ここ最近になって、ファイルから取り込んだ値が、 エクセルにセットされずに、出力されてしまった、という事が起こったと連絡がありました。 正常な処理ですと、7枚くらい印刷されるのですが、 その場合は、その中の1枚(3ページ目くらい)だけが、何も値がセットされていませんでした。 同じEXEで、同じ雛形で、同じデータで、試したのですが、正常に処理されてしまい、再現はできませんでした。 質問なのですが、 何も値がセットされないで、エクセルの雛形のみが印刷されてしまう場合、 たとえば、使用しているPCに負荷がかかってたりすると、そういう現象が起こるのでしょうか? そのほか、何か考えられる事とかありませんでしょうか? ご存知の方、いらっしゃいましたら、 ご教授のほど、よろしくおねがいいたします

  • VBのエクセル操作について

    VB6.0で下記のようなロジックでエクセル操作をしていますが、 エクセル出力時に全て文字列扱いされるため計算処理でエラーとなって困っています。 数字は数値型で出力したいのですが、良い方法はありますでしょうか。 dim csvline() as string . . . csvline = Split("AAA,BBB,0,1,3,4", ",") . . . XlsSheet.Range(Cells(0, 1),Cells(0, 6) = csvline

  • EXCELのプロセスを終了させたい!!

    VBAで、EXCELファイルを出力するという処理を書いています。 エクセルオブジェクトを解放するロジックは書いたものの、タスクマネージャを見るとエクセルのプロセスが残ってしまっています。すると、VBの実行中だと作成したエクセルファイルを見ることができません。(T_T) VBの実行中でも、作成したエクセルファイルを見れる状態にしたいのですが、一体どうしたらいいんでしょうか?? ソース内では、RANGEとCELLSプロパティを使ってるんですが、これらの使い方がなにかまずいのでしょうか。。。 どなたか、どうか教えてください。よろしくお願いします。_(._.)_

  • エクセルVBA での繰り返し処理について

    エクセルVBA での繰り返し処理について 以下の作業を20回繰り返そうとしています(別シートから持ってきた値を「行列を入れ替えて」貼り付け)    Sheets("初期設定").Select Range("A6:C6").Select Selection.Copy Sheets(TS).Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True   「初期設定」シートの方は1行ずつ並んでいるので、「2回目」の「2行目」は   「 Range("A7:C7").Select」になり、   「TS」シートの20行後に貼り付けたいので、「2回目」の「5行目」は   「Range("B24").Select」 になります   これを、for ~ next を使い、以下のようにしてみましたが、上手くいきません。    For j = 6 To 26 For k = 4 To 384 Step 20 Sheets("初期設定").Select Range(Cells(j, 1), Cells(j, 3)).Select Selection.Copy Sheets(TS).Select Cells(k, 2).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Next k Next j  1分程度ループし続けた後、「初期設定」シートの最終行だけが貼り付けられてしまいました。 どこをどのように直せばいいのかお教えください。 よろしくお願いいたします。

  • エクセル マクロの設定方法について

    差込印刷でSheet1に作成した名簿データにより、sheet2に作成しているデータへ差込印刷をしています。現在、次のようなマクロを組んで名簿の件数に合わせて、For = 2 To 500 Step 8を修正しながら、印刷しています。できたら、名簿の件数の増減に関係なく印刷できるようになればと考えています。始めたばかりのマクロ初心者です。よろしくご教授ください。お願いします。 Dim i As Long Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = sheets(″sheet1″) Set ws2 = sheets(″sheet2″) For i = 2 To 500 Step 8 ws2 .Range(″A1″).Value = ws1.Cells(i+1,2).Value ws2 .Range(″A7″).Value = ws1.Cells(i+2,2).Value ws2 .Range(″A13″).Value = ws1.Cells(i+3,2).Value ws2 .Range(″A19″).Value = ws1.Cells(i+4,2).Value ws2 .Range(″F1″).Value = ws1.Cells(i+5,2).Value ws2 .Range(″F7″).Value = ws1.Cells(i+6,2).Value ws2 .Range(″F13″).Value = ws1.Cells(i+7,2).Value ws2 .Range(″F19″).Value = ws1.Cells(i+8,2).Value DoEvents ws2.PrintOut Next End Subws2 .Range(″F1″).Value = ws1.Cells(i+5,2).Value ネット等で調べて、上記のようなマクロで作業してます。(マクロの設定方法が間違っているところがあると思いますが?)

  • マクロの処理速度が遅くなってしまいました

     今までエクセル2000を使用していたのですが、エクセル2003にバージョンアップして、以下の処理速度を検証したところ、処理が遅くなってしまいました。内容はsheet2にあるデータを変数に格納して簡単な計算をした後にsheet1に入力するということを5回繰り返し、それぞれの処理にかかる時間をsheet3に表示するというものです。 Sub タイム計測()   Dim myStart As Single, myGoal As Single   Dim j As Integer   Application.ScreenUpdating = False   Sheets(1).Select   Cells.Clear     For j = 1 To 5       myStart = Timer         Call サンプル       myGoal = Timer - myStart       Sheets(3).Select       Cells(j, 1) = myGoal       Sheets(1).Select     Next     Sheets(3).Select   Application.ScreenUpdating = True End Sub Sub サンプル()   Dim i As Integer, j As Integer   Dim Data As Variant, KeKKa(1 To 2000, 1 To 199) As Variant   Data = Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(2000, 199))   For i = 1 To 2000     For j = 1 To 199       KeKKa(i, j) = Data(i, j) + Data(i, j)     Next   Next   Range(Cells(1, 1), Cells(2000, 199)) = KeKKa End Sub エクセル2000のときは1回当り平均して概ね0.7秒位で処理していたのですが、エクセル2003にすると1.4秒位かかってしまいます。処理速度が遅くなってしまうとバージョンアップした意味がないのですが、原因や改善策があればどなたか教えていただけないでしょうか?よろしくお願いします。

  • エクセル追記処理でエラー

    別のフォームで前の処理が既に書き込まれているエクセルシートに、 新たに処理結果を追記していきたいのですが、 「オブジェクトがありません」というエラーになってしまいます。 Setをどのように書けばよいのでしょうか。 Private Sub Command1_Click() Set xlApp = CreateObject("Excel.Application") xlFileName = strFileName Set xlBook = xlApp.Workbooks.Open(xlFileName) Set xlNeosheet = xlBook.Sheets.Item(1) Set Newsheet ★ここがわかりません n = 1 cnt = 0 rowNum = xlNeosheet.Range("A1").CurrentRegion.Rows.Count For i = 1 To rowNum shusseki = xlNeosheet.Cells(i, 5).Value If IsNumeric(shusseki) Then stno = xlNeosheet.Cells(i, 1) stno = Form7.Text1 & stno xlNewsheet.Cells(n, 6) = stno ☆ここでエラー n = n + 1 cnt = cnt + 1 For j = 2 To 5 xlNewsheet.Cells(cnt, j + 5).Value = xlNeosheet.Cells(i, j).Value Next j End If Next i 必要な部分だけ載せました。 よろしくお願いします。

  • エクセルのVBA、ループ処理について

    if文とループ処理をどう組み合わせればいいのかわかりません 以下のコードで、iの数をを増やしていく処理を行いたいのですが、エラーがでてしまいうまくいきません どのように書けばいいのでしょうか 教えてください For i = 2 To 11 If Cells("4,i") > 80 Then Cells("5,i").Value = "A" ElseIf Cells("4,i") > 70 Then Cells("5,i").Value = "B" ElseIf Cells("4,i") > 60 Then Cells("5,i").Value = "C" Else Cells("4,i").Value = "D" End If Next