Excel VBA質問箱 IV

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

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


5893 / 13645 ツリー ←次へ | 前へ→

【48310】セルにあるパスのフォルダに保存 arrows 07/4/12(木) 15:43 質問[未読]
【48311】Re:セルにあるパスのフォルダに保存 Jaka 07/4/12(木) 16:03 発言[未読]
【48312】Re:セルにあるパスのフォルダに保存 arrows 07/4/12(木) 16:22 発言[未読]
【48318】Re:セルにあるパスのフォルダに保存 Jaka 07/4/12(木) 17:27 発言[未読]
【48320】Re:セルにあるパスのフォルダに保存 arrows 07/4/12(木) 17:49 発言[未読]
【48333】Re:セルにあるパスのフォルダに保存 Jaka 07/4/13(金) 9:36 発言[未読]
【48335】Re:セルにあるパスのフォルダに保存 arrows 07/4/13(金) 10:02 発言[未読]
【48336】Re:セルにあるパスのフォルダに保存 Jaka 07/4/13(金) 10:28 発言[未読]
【48337】Re:セルにあるパスのフォルダに保存 arrows 07/4/13(金) 10:30 発言[未読]
【48340】Re:セルにあるパスのフォルダに保存 arrows 07/4/13(金) 11:44 お礼[未読]

【48310】セルにあるパスのフォルダに保存
質問  arrows  - 07/4/12(木) 15:43 -

引用なし
パスワード
   いつもお世話になります。

test.xlsにあるSheet2とSheet3を新しいブックにコピーして、
test.xlsのSheet1のC2のセルにある名前をつけてC3セルにあるパス
「C:\Documents and Settings\デスクトップ\新しいフォルダ」
に保存させたいのですがどうしても出来ません。

過去ログなどを探したのですが名前とパスを同じセルに指定する
方法はあったのですが別々での方法がわかりませんでした。

どなたかわかる方がいらっしゃいましたら御教授願います。

【48311】Re:セルにあるパスのフォルダに保存
発言  Jaka  - 07/4/12(木) 16:03 -

引用なし
パスワード
   こんな感じのことでしょうか?
ブック名に拡張子が書いてあり、パスの最後に「\」が付いてないとして。

Sheets(2).Copy
With workbooks("Test.xls").Sheets(1)
 ActiveWorkbook.SaveAs (.Range("C2").value & "\" & .Range("C3").value)
End With
ActiveWorkbook.Close (False)

【48312】Re:セルにあるパスのフォルダに保存
発言  arrows  - 07/4/12(木) 16:22 -

引用なし
パスワード
   ありがとうございます。

試してみたのですがコピーされるシートがSheet2だけでしたが
コピーして保存したいシートはSheet2とSheet3の複数です。
また「ファイルにアクセスできません」のエラーとなりました。

仮に保存名を「aaa.xls」として保管先のパスに問題はなく、
なぜか不明です。

【48318】Re:セルにあるパスのフォルダに保存
発言  Jaka  - 07/4/12(木) 17:27 -

引用なし
パスワード
   ▼arrows さん:
>試してみたのですがコピーされるシートがSheet2だけでしたが
>コピーして保存したいシートはSheet2とSheet3の複数です。
>また「ファイルにアクセスできません」のエラーとなりました。

With Workbooks("Test.xls")
  .Sheets(2).Copy
  With .Sheets(1)
    ActiveWorkbook.SaveAs (.Range("C2").Value & "\" & .Range("C3").Value)
  End With
  ActiveWorkbook.Close (False)

  '同じように追加して書いてください。
  With .Sheets(2)
    ActiveWorkbook.SaveAs (.Range("??").Value & "\" & .Range("??").Value)
  End With
  ActiveWorkbook.Close (False)
End With


>仮に保存名を「aaa.xls」として保管先のパスに問題はなく、
>なぜか不明です。
どんな風に書いたのか解りませんが、多分それが原因です。

【48320】Re:セルにあるパスのフォルダに保存
発言  arrows  - 07/4/12(木) 17:49 -

引用なし
パスワード
   表現が悪くすみません。。。
複数シートを1つのブックに保存したいのです。
追加して書いた場合は2つのブックとして保管する方法ですよね。

>With Workbooks("Test.xls")
>  .Sheets(2).Copy
>  With .Sheets(1)
>    ActiveWorkbook.SaveAs (.Range("C2").Value & "\" & .Range("C3").Value)
>  End With
>  ActiveWorkbook.Close (False)
同じように記述してみましたが、.Range("C3").Valueはtest.xlsのC3を
参照しているのでなく新規に保存しようとしているブックを参照している
ように思えますがいかがでしょうか?

当方が勉強不足でこのエラーについて解明できません。

【48333】Re:セルにあるパスのフォルダに保存
発言  Jaka  - 07/4/13(金) 9:36 -

引用なし
パスワード
   ▼arrows さん:
>複数シートを1つのブックに保存したいのです。
マクロ記録で、基本コードが作れます。
手動での方法はご存知ですよね。

>追加して書いた場合は2つのブックとして保管する方法ですよね。
はい、
>test.xlsにあるSheet2とSheet3を新しいブックにコピーして
こう書いてあったので、そうとりました。

>>With Workbooks("Test.xls")   ←
>>  .Sheets(2).Copy
>>  With .Sheets(1)       ←
>>    ActiveWorkbook.SaveAs (.Range("C2").Value & "\" & .Range("C3").Value)
>>  End With
>>  ActiveWorkbook.Close (False)
>同じように記述してみましたが、.Range("C3").Valueはtest.xlsのC3を
>参照しているのでなく新規に保存しようとしているブックを参照している
>ように思えますがいかがでしょうか?
ヘルプで、Withステートメントを勉強してください。

単にブック名に使ってはけない文字を使っているとか、つながってないネットワークにアクセスしているとかもあるでしょうから、まずは手動にて同じことができるのかをを確認されたほうが良いと思います。
お望みのことはほとんどマクロ記録でできそうです。

ただ、シートの複製、シートをまるまる別ブックの複製する場合の注意点があります。
シートのデータ量が多いと、手動の場合「ディスクがいっぱいです。」とかのエラーになることもあります。
これが、マクロで行った場合どんなエラーを返すのか良く解りません。
もし、当てはまる場合、新規ブックを作って、新規ブックにデータをコピペするようにしたほうが良いと思います。

【48335】Re:セルにあるパスのフォルダに保存
発言  arrows  - 07/4/13(金) 10:02 -

引用なし
パスワード
   いろいろとありがとうございます。

マクロ記録や手動では保存名も含めてしっかり保存できるのですが、
セルにあるパスを参照することが出来ませんでした。
VBAに直接パスを記述しておけば保存は可能なのですが、不定期に
保存先を変更する必要がありセルに指定できればと考えたのですが・・・

もう一度勉強してがんばってみます。

【48336】Re:セルにあるパスのフォルダに保存
発言  Jaka  - 07/4/13(金) 10:28 -

引用なし
パスワード
   もしかして、これ?

Sheets(1) → Sheets("Sheet1")
Sheets(2) → Sheets("Sheet2")

【48337】Re:セルにあるパスのフォルダに保存
発言  arrows  - 07/4/13(金) 10:30 -

引用なし
パスワード
   ▼Jaka さん:
>もしかして、これ?
>
>Sheets(1) → Sheets("Sheet1")
>Sheets(2) → Sheets("Sheet2")

そうです。書き込みの表現が悪くすみません。

【48340】Re:セルにあるパスのフォルダに保存
お礼  arrows  - 07/4/13(金) 11:44 -

引用なし
パスワード
   いろいろと御教授ありがとうございました。

何度か試したのですがエラーを解決することは出来ませんでした。
結局他の方法も試してみてWithステートメントで出来ました。

  Dim mypath As String
  With Workbooks("new.xls").Worksheets("Sheet1")
    mypath = (.Range("C3").Value & "\")
  End With
  Dim myFile As String
  With Workbooks("new.xls").Worksheets("Sheet1")
    myFile = .Range("C2").Value & ".xls"
  End With
  Sheets(Array("Sheet2", "Sheet3")).Copy
  ActiveWorkbook.SaveAs Filename:=mypath & myFile

やり方は違った形とはなりましたが非常に勉強になりました。
今回はありがとうございました。

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