Excel VBA質問箱 IV

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

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


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

【30628】名前をつけて保存 kono 05/11/1(火) 16:14 質問[未読]
【30630】Re:名前をつけて保存 Kein 05/11/1(火) 16:40 回答[未読]
【30634】Re:名前をつけて保存 kono 05/11/1(火) 17:14 発言[未読]
【30644】Re:名前をつけて保存 ぱっせんじゃー 05/11/1(火) 19:25 発言[未読]
【30631】Re:名前をつけて保存 Jaka 05/11/1(火) 16:40 回答[未読]
【30632】Re:名前をつけて保存 kono 05/11/1(火) 17:00 お礼[未読]
【30656】Re:名前をつけて保存 YN62 05/11/1(火) 22:27 発言[未読]
【30677】Re:名前をつけて保存 kono 05/11/2(水) 15:53 お礼[未読]

【30628】名前をつけて保存
質問  kono  - 05/11/1(火) 16:14 -

引用なし
パスワード
   シートをコピーして新しいブックを作り、
名前を付けて保存をし、そのブックを閉じ、
さらにコピー元のブックは保存しないで閉じる。
というコードを作っています。
名前はコピーしたシートのA1+B1にしたいのです。

Sub Macro81()

Dim mypath As String
Dim myfolder As String
Dim mycode As String

mypath = "C:\集計\"
Set myfolder = thisworksheet.Range("A1") ’このmyfolderで止まりました
Set mycode = thisworksheet.Range("B1")

Sheets("sheet1").Copy
ActiveWorkbook.SaveAs Filename:=mypath&myfolder&mycode
ActiveWorkbook.Close
ActiveWorkbook.Close
End Sub

myfolderの部分で、『オブジェクトがありません』エラーで止まりました。

アドバイスをお願い致します。

【30630】Re:名前をつけて保存
回答  Kein  - 05/11/1(火) 16:40 -

引用なし
パスワード
   thisworksheet などというオブジェクトはありません。そんなもの勝手に作っても
エクセルは知らないよ、と言ってるわけです。
おまけに String型の変数なのに、Setステートメントで設定しようとしてるし。
ナンか基本も勉強しないまま適当に作ってみた、という印象しかありませんね・・。
例えばこんなふうに書けばよいのです。

Sub Macro81()
  Dim myfolder As String, mycode As String
  Const mypath As String = "C:\集計\"

  With Worksheets("Sheet1")
   myfolder = .Range("A1").Value
   mycode = .Range("B1").Value
   .Copy
  End With
  ActiveWorkbook.Close True, mypath & myfolder & mycode
  ThisWorkbook.Close False
End Sub

どこが違うか、じっくり比べてみて下さい。

【30631】Re:名前をつけて保存
回答  Jaka  - 05/11/1(火) 16:40 -

引用なし
パスワード
   ▼kono さん:
>Set myfolder = thisworksheet.Range("A1") ’このmyfolderで止まりました
 ↓
myfolder = ThisWorkbook.Sheets(〇〇).Range("A1").value

【30632】Re:名前をつけて保存
お礼  kono  - 05/11/1(火) 17:00 -

引用なし
パスワード
   jakaさま。

どうもありがとうございました。
Setが余計でしたね。
勉強不足でした。

助かりました。

【30634】Re:名前をつけて保存
発言  kono  - 05/11/1(火) 17:14 -

引用なし
パスワード
   おっしゃる通り、確かに基本はしっかり勉強していません。
基本がしっかりしていれば
こんな簡単で基本的なコードでつまづくこともないと思います。
マニュアル本やヘルプを見ながら作って、エラーが出て、
色々やってみたが自己解決できずに質問箱に聞きに来る・・

そういう利用の仕方は間違えていますか?

基本の勉強をじっくりやるヒマもなく
仕事上必要に迫られ、試行錯誤しながらマクロを組む、
自分のようなスタンスの人間も気軽に利用できるのが質問箱
だと思っていたのですが。

【30644】Re:名前をつけて保存
発言  ぱっせんじゃー  - 05/11/1(火) 19:25 -

引用なし
パスワード
   横から失礼します。

>基本の勉強をじっくりやるヒマもなく
>仕事上必要に迫られ、試行錯誤しながらマクロを組む、

それは、会社に文句言ってください。
というか、実力が無いのに実力があるように評価される
ことの方が怖いです。

私だったら、徹夜してでもヘルプや参考書を勉強して
マクロ完成させますね。

【30656】Re:名前をつけて保存
発言  YN62  - 05/11/1(火) 22:27 -

引用なし
パスワード
   ▼kono さん:
今晩は・・・
貴殿のコードをちょっとアレンジしました。

Sub Macro81()

Dim mypath As String
Dim myfolder As String
Dim mycode As String

mypath = ActiveWorkbook.Path & "\" 'ActiveとかThisはルーズ者に便利なんです。
myfolder = Range("A1") 
mycode = Range("B1")

Sheets("sheet1").Copy
ActiveWorkbook.SaveAs Filename:=mypath & myfolder & mycode
ActiveWorkbook.Close
Application.DisplayAlerts = False
Application.Quit

End Sub

でも、kein様の記述がはるかにレベルが上ですね。
少しずつ真似させてもらいます。
それがこれ↓
Sub Macro82()
  Dim myfolder As String, mycode As String 
  With Worksheets("Sheet1")
   myfolder = .Range("A5").Value
   mycode = .Range("B5").Value
   .Copy
  End With
  ActiveWorkbook.Close True, ThisWorkbook.Path & "\" & myfolder & mycode
  Application.DisplayAlerts = False
  Application.Quit
End Sub

【30677】Re:名前をつけて保存
お礼  kono  - 05/11/2(水) 15:53 -

引用なし
パスワード
   YN62さま

回答をどうもありがとうございました。
また、新しいことをひとつ覚えることができました。
日々実践と失敗を繰り返して、時間はかかりますが
いつか形が見えてくることを信じて頑張ります。

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