Excel VBA質問箱 IV

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

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


6846 / 13646 ツリー ←次へ | 前へ→

【42729】移動の際のエラー回避 06/9/20(水) 10:31 質問[未読]
【42733】Re:移動の際のエラー回避 Jaka 06/9/20(水) 11:36 発言[未読]
【42749】Re:移動の際のエラー回避 06/9/20(水) 15:04 発言[未読]
【42750】Re:移動の際のエラー回避 Jaka 06/9/20(水) 15:26 発言[未読]
【42772】Re:移動の際のエラー回避 06/9/21(木) 14:21 お礼[未読]
【42764】Re:移動の際のエラー回避 パン 06/9/21(木) 7:47 発言[未読]
【42773】Re:移動の際のエラー回避 06/9/21(木) 14:23 お礼[未読]

【42729】移動の際のエラー回避
質問    - 06/9/20(水) 10:31 -

引用なし
パスワード
   book2のシート1のデータ全てをbook1のシート2へ移す内容でエラーが多発してしまいました。
回避方法等を探していたのですが何故か上手くいきません
ご助力願います。

方法1
Set Wb(0) = Application.Workbooks.OpenXML(C_File(0), LoadOption:=xlXmlLoadImportToList)

Set Wb(1) = Application.Workbooks.OpenXML(C_File(1), LoadOption:=xlXmlLoadImportToList)

Wb(1).Worksheets(1).Copy After:=Wb(0).Worksheets(1)

この方法だと「ディスクがいっぱいです」とのエラーが発生

方法2
Set Wb(0) = Application.Workbooks.OpenXML(C_File(0), LoadOption:=xlXmlLoadImportToList)

Set Wb(1) = Application.Workbooks.OpenXML(C_File(1), LoadOption:=xlXmlLoadImportToList)

Wb(1).Sheets(1).Select
Cells.Select
Selection.Copy
Wb(0).Sheets(2).Activate
Wb(0).Sheets(2).Select
Cells.Select
ActiveSheet.Paste

この方法だとコピーは行えるのですがその後の処理で「メモリが足りません」と
すぐ表示されてしまいました。

使用するファイルの内容は容量約5MBで15000行の50列ほどあります。

よろしくお願いします。

【42733】Re:移動の際のエラー回避
発言  Jaka  - 06/9/20(水) 11:36 -

引用なし
パスワード
   >この方法だと「ディスクがいっぱいです」とのエラーが発生
これはどうしようもないですね。

>この方法だとコピーは行えるのですがその後の処理で「メモリが足りません」と
>すぐ表示されてしまいました。
セル全体を処理するのでなく範囲を絞ってやったらどうでしょうか?
こんな感じで...。

AD = Sheets(4).UsedRange.Address
ActiveWorkbook.Sheets(4).UsedRange.Copy Workbooks("Book2").Sheets(1).Range(AD)
DoEvents ←貼り付け後に入れておいた方が良いと良いと思います。

【42749】Re:移動の際のエラー回避
発言    - 06/9/20(水) 15:04 -

引用なし
パスワード
   JaKaさん
助言ありがとうございます。
推測なのですが
どうやら元となるXMLファイル内容が膨大すぎて通常の開くでも時折
「XML インポートエラー」が多発しています。
これはもうどうしようもないのでしょうか・・・

▼Jaka さん:
>>この方法だと「ディスクがいっぱいです」とのエラーが発生
>これはどうしようもないですね。
>
>>この方法だとコピーは行えるのですがその後の処理で「メモリが足りません」と
>>すぐ表示されてしまいました。
>セル全体を処理するのでなく範囲を絞ってやったらどうでしょうか?
>こんな感じで...。
>
>AD = Sheets(4).UsedRange.Address
>ActiveWorkbook.Sheets(4).UsedRange.Copy Workbooks("Book2").Sheets(1).Range(AD)
>DoEvents ←貼り付け後に入れておいた方が良いと良いと思います。

【42750】Re:移動の際のエラー回避
発言  Jaka  - 06/9/20(水) 15:26 -

引用なし
パスワード
   すみません。
XMLファイルを扱ったことが無いので、解りません。

【42764】Re:移動の際のエラー回避
発言  パン E-MAIL  - 06/9/21(木) 7:47 -

引用なし
パスワード
   ▼凪 さん:
こんな感じではどうでしょう?

'XMLデータを取り込むステートメント
Sub コピーxml()

  ActiveWorkbook.XmlImport URL:="C:\フォルダ名\****.xml", _
    ImportMap:=Nothing, Overwrite:=False, Destination:=Range("A1")
End Sub
後、下のものに追加した場合どうでしょうか?


>方法2
>Set Wb(0) = Application.Workbooks.OpenXML(C_File(0), LoadOption:=xlXmlLoadImportToList)
>
>Set Wb(1) = Application.Workbooks.OpenXML(C_File(1), LoadOption:=xlXmlLoadImportToList)
>
>Wb(1).Sheets(1).Select
>Cells.Select
>Selection.Copy
>Wb(0).Sheets(2).Activate
>Wb(0).Sheets(2).Select
>Cells.Select
>ActiveSheet.Paste

Application.CutCopyMode = False   ''''追加
      .Close SaveChanges:=False

>
>この方法だとコピーは行えるのですがその後の処理で「メモリが足りません」と
>すぐ表示されてしまいました。
>
>使用するファイルの内容は容量約5MBで15000行の50列ほどあります。
>
>よろしくお願いします。

【42772】Re:移動の際のエラー回避
お礼    - 06/9/21(木) 14:21 -

引用なし
パスワード
   △JaKaさん
ありがとうございます。
助言を元に作業を試みますね

▼Jaka さん:
>すみません。
>XMLファイルを扱ったことが無いので、解りません。

【42773】Re:移動の際のエラー回避
お礼    - 06/9/21(木) 14:23 -

引用なし
パスワード
   △パンさん
助言ありがとうございました。
二つの処理を入れて何とか動くようになったので後は無駄にメモリを増やさないように改修します。

▼パン さん:
>▼凪 さん:
>こんな感じではどうでしょう?
>
>'XMLデータを取り込むステートメント
>Sub コピーxml()
>
>  ActiveWorkbook.XmlImport URL:="C:\フォルダ名\****.xml", _
>    ImportMap:=Nothing, Overwrite:=False, Destination:=Range("A1")
>End Sub
>後、下のものに追加した場合どうでしょうか?
>
>
>>方法2
>>Set Wb(0) = Application.Workbooks.OpenXML(C_File(0), LoadOption:=xlXmlLoadImportToList)
>>
>>Set Wb(1) = Application.Workbooks.OpenXML(C_File(1), LoadOption:=xlXmlLoadImportToList)
>>
>>Wb(1).Sheets(1).Select
>>Cells.Select
>>Selection.Copy
>>Wb(0).Sheets(2).Activate
>>Wb(0).Sheets(2).Select
>>Cells.Select
>>ActiveSheet.Paste
>
>Application.CutCopyMode = False   ''''追加
>      .Close SaveChanges:=False
>
>>
>>この方法だとコピーは行えるのですがその後の処理で「メモリが足りません」と
>>すぐ表示されてしまいました。
>>
>>使用するファイルの内容は容量約5MBで15000行の50列ほどあります。
>>
>>よろしくお願いします。

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