• 締切済み

Excelのワークシートに行を挿入(高速化)

はじめまして。 さっそくですが質問させていただきます。 VB(記述はVBA)からExcel(非表示)のシートに、 行を挿入する処理についてです。 以下のような単純な処理ですが、 「Debug.Print」では通常18秒程度と表示されます。 しかし(1)の所をFalse→Trueにすると、1秒もかかりません。 質問: 1.非表示で行の挿入を高速にする方法はありますか? 2.なぜ表示時の方が速いんですか? どちらかわかる方だけでも良いのでお願いします。 OS    :windows2000 Language :VB6.0(SP6) Excel.Ver :2000

みんなの回答

回答No.2

800字制限で全部入りきらなかったんです。 すみません。 Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private m_lngTimeStart As Long '開始時間 Private Sub InsertCol() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim i As Integer 'カウンタ Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("ファイル名") Set xlSheet = xlBook.Worksheets("シート名") With xlApp '計算停止 .ScreenUpdating = False 'メッセージ停止 .DisplayAlerts = False 'イベント停止 .EnableEvents = False '非表示 .Visible = False ・・・・(1) End With m_lngTimeStart = timeGetTime With xlSheet For i = 15 To 50 .Range("A" & i & ":BZ" & i).Insert Shift:=xlDown Next End With Debug.Print (CDbl(timeGetTime) - CDbl(m_lngTimeStart)) / 1000 xlBook.SaveAs "ファイル名" xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub

  • quoth
  • ベストアンサー率31% (158/506)
回答No.1

>以下のような単純な処理 が、見当たりません。 回答がないと補足が追加できませんので、これの補足に書いてみてください。 この回答にポイントは不要です。

sapporoSweets
質問者

補足

誰か来るの待つのも悪いので、IDを作ってしまいました・・。恥

関連するQ&A

  • VB.NETによるEXCELの行挿入

    VB.NET 2005/XP(sp2)/Excel2003(sp2) 上記の環境で開発しておる者です。 VB.NETでExcelを操作するプログラムを作ろうといています。 内容は雛形Sheetの行(複数行)をコピーして、新しく作成したSheetに貼り付ける処理をしたいのですが、手法がわかりません…。 Excel起動・新しいSheetの作成・Excelの保存はなんとかできましたが、行コピーとコピーした行の挿入部分のサンプルが御座いましたら、どなたか、教えて頂けないでしょうか? よろしくお願い致します。

  • VBAでエクセルのワークシートに、列と行の、挿入と削除を禁止したい

    お忙しいところ、私の質問に取り組んで頂き、有難うございます。 VBAを使って、エクセルのワークシートを編集中に、指定しておいた範囲に、列と行を挿入しようとすると、禁止のメッセージが出て、それらの操作ができないように制御したいのですが、ネット検索をしても、どうしても良い方法が見つかりませんでした。どなたか、良い案のある方、ご教示願えないでしょうか?

  • EXCELで切り取った行を別シートに挿入

    EXCELである行を選択して切り取り、同一シート内の任意の場所に挿入すると 元の行は自動的に削除されます。 しかし、別シートに挿入した時は、元の行は削除されず、わざわざ その行を削除する、という操作が必要となります。 そこで質問なのですが、別シートへの挿入を一つの操作で行う方法はないでしょうか? また、その方法がない場合、それはEXCELの何らかの仕様を反映しているのだと 思いますが、それはどのようなものでしょうか? よろしくお願いします。

  • 行の置き換え、挿入

    Excel97VBAでの行の置き換え、挿入のやり方を教えてください。コードが分かりません。行の整数比とはなんですか。

  • エクセルで行の挿入などだんだん動作が遅くなってきます。

    大きなエクセルファイルを開いています(2Mほど)。 そのファイルを開いてすぐの状態だと、行の挿入を行っても ほとんど時間がかからずできるのですが、 何度か挿入を繰り返しているうちに挿入の動作がとても重くなってしまいます。 (数十秒はかかるようになります。) 原因を考えてみてもよくわからず、再計算を手動に 切り替えるなどしてみたのですが変わりませんでした。 Undo用のデータが大きくて時間がかかっているのかな~とも思いましたが どうしていいかわかりません。 このようにEXCELの動作に時間がかかるようにならないためには どのような方法があるでしょうか?

  • 【マクロ】任意の行の下へ行の挿入&選択

    セルA3:DS750の表があります。 1行=1顧客として使用していますが、度々表に行を挿入して顧客を追加しています。 その為、以下のマクロを作ってみたのですが、最後に【挿入した行をActiveにする】事ができません。 ★挿入位置は、都度変わります。 ★一度に行う挿入行数は1行(多くても3行)の為、マクロは1行追加で作成しています。(行数の指定までは力量により出来ませんでした・・) ★1行目にサンプルを(非表示で)置いて、それを任意の行へ挿入させています。 1行目のサンプルを非表示のまま貼り付けると、挿入した行も非表示になってしまったので、一度再表示させてから処理させています。 サンプル行には、条件書式、数式などがところどころ入っています。 処理の最後に【'行を指定して挿入】と同じ行をActiveにする方法が知りたいです。 記録マクロをいじっただけなので見づらいと思いますが、よろしくお願い致します。 -------------------------------- Sub 挿入() '1行目を再表示 Rows("1:1").Select Selection.EntireRow.Hidden = False '1行目をcopy Rows("1:1").Select Selection.Copy '行を指定して挿入 InsertRow = InputBox("何行目の下に挿入しますか?") + 1 Cells(InsertRow, 1).Insert Shift:=xlDown '1行目を非表示 Rows("1:1").Select Selection.EntireRow.Hidden = True '挿入した行をactiveにする ・・・ end Sub -------------------------------- マクロが根本的におかしかったらすみません。。 アプローチ方法が他にある場合にもご指摘いただけると助かります。

  • Excelへの画像の挿入について

    仕事で、自社Webサイトで使用している全画像をExcelで管理することになりました。 最初は単純に「挿入>図>ファイルから」で1つ1つ入れていけばと考えていたのですが、いざ始めてみると大変効率が悪く、どうにか作業を単純化できないものかと考えています。 VBAでできるのではないか、と思ったのですが、VBAはこれまで使ったことがなく、できるのかできないのかすら分かりません。 最終的には、 ・ある画像フォルダに含まれる全画像から、ファイル名と画像データを取得する。 ・A列をファイル名、B列を画像とし、1行に1画像を配置する。 ・画像が隠れてしまわないよう、それぞれの行の高さを調整する。 ということがしたいのですが、VBAでどこまでできそうか、またVBAに関する解説サイトなどを教えていただけたらと思います。 (VBとVBAの違いも分かっていませんが、VBなら昔やったことがあります。) どうぞよろしくお願いいたします。

  • エクセル2003~行挿入できない~

    すみませんが、お分かりの方いらっしゃいましたら教えてください。 エクセル2003(XP)を使用しております。 作成中の表に、行を挿入したいと思い、実行すると、 「データの消失を防ぐため、空白でないセルをワークシートの外にシフトすることはできません」 と表示されエラーが出ます。 どのようにすれば、行挿入が可能になるでしょうか。 お手数お掛け致しますが、よろしくお願い致します。

  • Excelで行を挿入するには?

    Excel 初心者なので質問するのも気が引けるのですが、行を挿入するとき、その行を選択して、「挿入」をクリックすると、データの消失を防ぐため、空白でないセルをワークシートの外に移動することはできません というメッセージが出ます。どうしたらいいでしょうか。

  • Excel(エクセル)行挿入SAM自動計算

    Excel(エクセル) SAMで1行目から10行目の合計を出していて、10行目以降に行を挿入して自動的に1行目から11行目の合計が出るように設定したいです。 ※元から空白のセルを入れておくことはしたくありません。 ※マクロやVBAは使えません。初心者です。 例 : (A1) 200 (A2) 100 (A3) 200 ←後から挿入した (A4) 合計 300 ←自動的に500になって欲しい 宜しくお願いいたします。

専門家に質問してみよう