Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53107 / 76736 ←次へ | 前へ→

【28448】Re:メモリ使用量 実験2
発言  ichinose  - 05/9/6(火) 20:49 -

引用なし
パスワード
   今度は、ブックをデータとマクロに分けてみました。

実験 2

>新規ブックのSheet1のセルA1から
>    A   B    C    D
> 1 大分類 中分類  小分類   金額
> 2 服   紳士服  紳士服   500
> 3 服   婦人服  婦人服   400
> 4 服   子供服  子供服   300
> 5 本   マンガ  男子向   100
> 6 本   マンガ  女子向   150
> 7 飲み物 ジュース オレンジ  110
> 8 飲み物 ジュース アップル  115
> 9 飲み物 ジュース パイン   120
>10 飲み物 お茶系  麦茶    100
>11 飲み物 お茶系  ウーロン茶 100
>
>というEXCEL_VBA中の下 さんがご提示されたサンプルデータを
>使用します。
>
今度は、上記データのみを名前を付けて保存します。
(ブック名は、excelsampwithado.xlsとでもしましょう)

保存後、このブックは閉じてください。


別の新規ブックを作成し、
このブックには、以下のマクロだけを登録します。

>
>
>このブックの標準モジュールに
>
>'===========================================================
>Sub main()
>  Dim flno As Long
>  Dim idx As Long
>  flno = FreeFile()
>  Open ThisWorkbook.Path & "\memlog.csv" For Output As #flno
>  Print #flno, "NO,使用メモリー,空きメモリー,トータル"
>  For idx = 1 To 100
>   Call test
>   DoEvents
>   With Application
>     Print #flno, idx & "," & .MemoryUsed & "," & .MemoryFree & "," & .MemoryTotal
>     End With
>   Next idx
>  Close #flno
>End Sub
>'========================================================================
>Sub test()
>  Dim rs As Object
>  Dim mysql As String
  If open_ado_excel(ThisWorkbook.Path & "\excelsampwithado.xls") = 0 Then
>    mysql = "select [大分類],[中分類],sum([金額]) from [sheet1$] group by [大分類],[中分類]"
>    If get_exec_sql(mysql, rs) = 0 Then
>     With Worksheets("sheet2")
>      .Cells.ClearContents
>      .Range("a2").CopyFromRecordset rs
>      .Range("a1:c1").Value = Array("大分類", "中分類", "金額")
>      End With
>     End If
>    Call rs_close(rs)
>    End If
>  Call close_ado
>End Sub
>
>
>別の標準モジュールに
>'===============================================================
>Public cn As Object
>'======================================================
>Function open_ado_excel(book_fullname As String) As Long
>  On Error Resume Next
>  link_opt = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>       "Data Source=" & book_fullname & ";" & _
>       "Extended Properties=Excel 8.0;"
>  Set cn = CreateObject("ADODB.Connection")
>  cn.Open link_opt
>  If Err.Number <> 0 Then
>    MsgBox Err.Number & ":::" & Err.Description
>    End If
>  open_ado_excel = Err.Number
>  On Error GoTo 0
>End Function
>'======================================================
>Sub close_ado()
>  On Error Resume Next
>  cn.Close
>  Set cn = Nothing
>  On Error GoTo 0
>End Sub
>'======================================================
>Function get_exec_sql(sql_str, rs As Object) As Long
>  On Error Resume Next
>  Set rs = cn.Execute(sql_str)
>  If Err.Number <> 0 Then
>    MsgBox Err.Number & ":::" & Err.Description
>    End If
>  get_exec_sql = Err.Number
>  On Error GoTo 0
>End Function
>'======================================================
>Sub rs_close(rs As Object)
>  On Error Resume Next
>  rs.Close
>  Set rs = Nothing
>  On Error GoTo 0
>End Sub


これを適当なブック名を付けてexcelsampwithado.xlsと同じフォルダに保存した後、
プロシジャーmainを実行してください。

>ブックと同じフォルダにmemlog.csvというログファイルを
>作成します。
>mainの実行後、呼び出してください。
>cvsファイルになっていますからExcelで読み込めるはずです。

ログファイルのメモリが増えていないことが確認できましたか?

どうやら、Excelで開いているブックに対してADOで
処理を行うとメモリーの増加という現象が見られます。
(上記のようにマクロとデータのブックを分けても
データブック「excelsampwithado.xls」を開いた状態で
mainを実行してもメモリーの増加は見られます)。

・マクロと対象データが入っているブックを分けること。

・ADOで処理している間は対象ブックを開かない

なんて事を注意して仕様を考えてみてはいかがですか?

0 hits

【28395】メモリ使用量 EXCEL_VBA中の下 05/9/5(月) 14:34 質問
【28396】Re:メモリ使用量 ちくたく 05/9/5(月) 14:53 発言
【28400】Re:メモリ使用量 小僧 05/9/5(月) 16:16 発言
【28401】Re:メモリ使用量 EXCEL_VBA中の下 05/9/5(月) 16:37 発言
【28403】Re:メモリ使用量 小僧 05/9/5(月) 17:39 発言
【28415】Re:メモリ使用量 ichinose 05/9/6(火) 7:59 発言
【28427】Re:メモリ使用量 EXCEL_VBA中の下 05/9/6(火) 14:41 発言
【28447】Re:メモリ使用量 実験1 ichinose 05/9/6(火) 20:28 発言
【28448】Re:メモリ使用量 実験2 ichinose 05/9/6(火) 20:49 発言
【28451】Re:メモリ使用量 補足 ichinose 05/9/7(水) 6:56 発言
【28452】Re:メモリ使用量 補足2 ichinose 05/9/7(水) 8:06 発言
【28453】Re:メモリ使用量 補足2 ちくたく 05/9/7(水) 8:47 回答
【28488】Re:メモリ使用量 補足2 よろずや 05/9/7(水) 22:33 発言
【28499】Re:メモリ使用量 補足2 ichinose 05/9/8(木) 8:32 発言
【28537】Re:メモリ使用量 補足2 よろずや 05/9/8(木) 19:29 発言
【28541】Re:メモリ使用量 補足2 小僧 05/9/8(木) 22:18 質問
【28542】Re:メモリ使用量 補足2 よろずや 05/9/8(木) 22:49 発言
【28544】Re:メモリ使用量 補足2 小僧 05/9/9(金) 0:12 質問
【28545】Re:メモリ使用量 補足2 ichinose 05/9/9(金) 1:36 発言
【28555】Re:メモリ使用量 補足2 小僧 05/9/9(金) 10:39 質問
【28570】Re:メモリ使用量 補足2 よろずや 05/9/9(金) 12:59 発言
【28597】Re:メモリ使用量 補足2 ichinose 05/9/9(金) 17:20 発言
【28598】Re:メモリ使用量 補足2 小僧 05/9/9(金) 17:47 お礼
【28402】Re:メモリ使用量 ちくたく 05/9/5(月) 16:51 発言

53107 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free