※ ChatGPTを利用し、要約された質問です(原文:VBAで保存(save)の意味は?)
VBAで保存の意味は?
このQ&Aのポイント
VBAで大量の処理を行う際に、一定回数のループ処理の間に保存を行うことで、PCのメモリーフリークを心配せずに処理を続けることができます。
保存の意味はあるかどうかについては議論がありますが、途中で動作が止まった場合には保存しておくことで再度やり直すことができます。
上書き保存の他にも、追加分だけを読み込む方法などもありますが、行数が増えると時間がかかる可能性もあるため、適切な保存方法を選ぶ必要があります。
お世話になります。
エクセル2013を使用です。
VBAで3万~5万行程度の処理をしています。
今回は、ショッピングモールのAPIのxmlデータを
シートに転記する作業です。
それで、下記のように、一定回数ループをした後に、
念のためブックの保存(thisworkbook.save)をしているのですが、
この保存処理のための動作が非常に時間がかかります。
(ステータスバーに保存中ブック名と表示される状態のことです)
それで、見直しをしていましたが、2点程疑問がでてきました。
1.そもそも、ループ処理の間に保存処理をする意味はあるのかどうか?
・保存はPCのメモリーフリークなどが心配だったからなのですが、
保存しないことでメモリーフリークする可能性はあるのでしょうか?
・途中でなにかしらの原因で動作が止まった時に、
保存しておけば、そこからまたやり直しすれば良いという考えでしたが
他に時間がかかるなら、1からやり直しても良い。
2、上記でやはり保存コードがあった方が良い場合、
saveだと行数が増えると時間がかかると思います。
他にブックを保存する方法で、時間がかからない方法があるのでしょうか?
・上書き保存とは、ブック全体を一度読み込んでいると思うのですが、
追加分だけを読み込むという保存方法はあるのでしょうか?
---------------
Sub tes()
Dim xml As object
Dim i_row As Integer, LastRow As Integer
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i_row = 2 To LastRow
Application.StatusBar = (i_row - 1) & "/" & LastRow & "件目 API取得中..."
'処理コード
'例:cells(i_row,2)=xml.Item(1).text
If i_row / 50 = Int(i_row / 50) Then
ThisWorkbook.Save ’←★ここのsaveは意味ありますか?
DoEvents
End If
Next i_row
Application.StatusBar = (i_row - 1) & "件取得完了"
ThisWorkbook.Save
MsgBox "完了"
End Sub
---------------------
お手数をお掛けしますが
何卒よろしくお願いします。
お礼
FEX2053 さま 早速のご回答ありがとうございます。 やっぱり百害あって一利なしのようですね。 ありがとうございます!