Sub Macro1()
'
' Macro1 Macro
'
Dim foldername
Dim file_name
Dim gyo
foldername = Workbooks("全部1つ.xls").Sheets("部署情報").Range("C2").Value
file_name = Workbooks("全部1つ.xls").Sheets("部署情報").Range("D2").Value
Workbooks("全部1つ.xls").Sheets(Array("歳入", "歳出")).Select
Workbooks("全部1つ.xls").Sheets("歳出").Activate
Workbooks("全部1つ.xls").Sheets(Array("歳入", "歳出")).Copy
ActiveWorkbook.SaveAs filename:="C:\Users\a\" & foldername & "\" & file_name, _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Workbooks(file_name).Sheets("歳出").Select
Workbooks(file_name).Sheets("歳出").Range("A23:F23").Select
Selection.Delete Shift:=xlUp
Workbooks(file_name).Sheets("歳入").Select
Workbooks(file_name).Sheets("歳入").Range("A23:F23").Select
Selection.Delete Shift:=xlUp
Workbooks(file_name).Save
Workbooks(file_name).Close
End Sub
2018/04/22 01:43
小川慶一さんのコメント
(コメントID: 5353)
伊藤博文さん:
以下について。
Sub sample1()
Dim FolderName
Dim file_name
ActiveWorkbook.SaveAs Filename:="C:\Users\a\" & FolderName & "\" & file_name, _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
伊藤博文さんの投稿
(投稿ID: 3829)
この演習の練習問題と回答例は、以下からダウンロードで、保存先がデスクトップにあります。
動画のような、式にはならないのですが、
次の動画になると、怒られます。
workbooks(”全部1つ.xls")では、だめなのですか。?
変数を宣言して、foldrename,failname の変数を宣言して、その後の式がおかしいのです。
宜しくお願いします。
小川慶一さんのコメント
(コメントID: 5348)
ログインしているユーザのユーザ名が 「a」であればこれでも動きそうです。
でも、たぶん、デスクトップのような特殊フォルダではなく、普通のフォルダにDLした資料一式を置いて処理したほうが簡単かと思います。
それか、 Thisworkbook.Path を活用して書き改めるか。
(Thisworkbookオブジェクトのプロパティなので基礎編なので紹介しませんでした。が、本当はそのほうが汎用性高くオススメです)
以上で解決の糸口になりそうでしょうか。
何かあればまたご相談ください。
小川
伊藤博文さんのコメント
(コメントID: 8205)
先ほど、指導していただきましたが、保存先をドキュメントにして、
試みましたが、また怒られました。
よくわかりません。ご指導宜しくお願いします。
小川慶一さんのコメント
(コメントID: 5353)
以下について。
というか、その中の、以下の部分について。
>filename:="C:\Users\a\" & foldername & "\" & file_name
上に引用した部分では、ファイルの保存先を指定しています。
コードを読んでみると、ここでは、 Cドライブの「Users」というフォルダの中にある、「a」というフォルダの...というフォルダを指定していますね。
Cドライブの「Users」というフォルダの中に「a」というフォルダはありますでしょうか?なければここでエラーが出ます。
あったとしても、変数「folername」で指定されたフォルダがなければやはりエラーがでます。
まずは、ここまではご理解できますでしょうか?
ファイル保存先として指定されたフォルダがないことが、エラーの原因です。
理解できたという前提で、次の話をします。
この演習は、CドライブとかDドライブとかに、 "renshu" 等の名称のフォルダを自分で作り、そこでやってください。
たとえば、Cドライブにフォルダ「fuga」というフォルダを作ってそこで作業したなら、上に引用した部分は、以下のとおりに書き直します。
>filename:="C:\fuga\" & foldername & "\" & file_name
あるいは、Dドライブにフォルダ「hoge」というフォルダを作ってそこで作業したなら、上に引用した部分は、以下のとおりに書き直します。
>filename:="D:\hoge\" & foldername & "\" & file_name
上記のとおりですので、ここまでの作業で作ったものをなんとか手直ししてやろうとするより、最初からやりなおしたほうが良いと思います。
デスクトップにしろ、マイドキュメントにしろ、どちらも、特殊フォルダです。
ここで言う「特殊」というのは、「エクスプローラーのアドレスバーにある表記からは、そのフォルダの真の所在を知りえない」という意味です。
(VBで調べることはできますが、これ以上いろいろ詰め込むと伊藤さんの頭がパンクする気がするのでそのやり方は示しません)
デスクトップやマイドキュメントは、その実態は、
ログインユーザ名が「piyo」なら
C:\Documents and Settings\piyo\デスクトップ\
C:\Documents and Settings\piyo\マイドキュメント\
ログインユーザ名が「uni」なら
C:\Documents and Settings\uni\デスクトップ\
C:\Documents and Settings\unio\マイドキュメント\
とかになることが多いです。
(断言しません。PCやログインユーザの設定次第で変わることもあるので。実際、僕の手元のPCでは、設定をいじっているので、ぜんぜん違うフォルダになっています)
↑
ここまで、どうでしょうか?すんなり理解できましたでしょうか。
もしすんなり理解できなかったのであれば、コードの手直しだけでささっと解決できる問題ではないです。
なので、この演習は、CドライブとかDドライブとかに、 "renshu" 等の名称のフォルダを自分で作り、そこでやりなおすことをオススメします。
もしすんなり理解できたのであれば、このまま手元のコードをグチャグヂャいじるより、イチからやりなおしたほうが簡明だということもご理解いただけると思います。
その場合も、この演習は、CドライブとかDドライブとかに、 "renshu" 等の名称のフォルダを自分で作り、そこでやりなおすことをオススメします。
つまり、どちらにしても、この演習は、CドライブとかDドライブとかに、 "renshu" 等の名称のフォルダを自分で作り、そこでやりなおすことがオススメです。
面倒に感じられるかもしれませんが、そういうときこそ、ここまでの軌跡を再度たどること自体、よい復習になるでしょう。
特殊フォルダのパスの取得方法については、この問題を僕がオススメする方法で解決されたあと、伊藤さんがさらにご興味あれば、お伝えしたいと思います。
ざっと、以上のとおりです。
伊藤博文さんのコメント
(コメントID: 8204)
先ほどの、ご指導していただきましたことをおこないました。
Cドライブ内にrensyuのフォルダを作成しました。
やはり小川先生がご指導していただいた内容が
バッチリハマってできました。
ひとつトラブルとなかなか、理解がおいついてないもので、
上手くできませんでした。
本当に、わかりやすい解説・ご指導ありがとうございました。
今後ともよろしくお願いいたします。
小川慶一さんのコメント
(コメントID: 5354)
まずは良かったです。
本来なら、フォルダを指定してファイル操作するプログラムの話の前提として、特殊フォルダの話もするべきなのかもしれませんね。
「エクセルマクロを書く人のための、ウィンドウズの基礎知識」というような講座を作るべきかもしれません。そういうところでしっかり話しておくと、伊藤さんの今回のトラブルのようなことが減るでしょうし、説明の必要が生じたとしても、動画での解説のほうがより分かりやすいでしょうし。
ひきつづきよろしくお願いいたします。
伊藤博文さんのコメント
(コメントID: 8203)
昨日より、データ記入用ファイルを配布する演習問題に取り組んでいますが、ご指導していただいた結果、下記の式となりました。
一応、C:\配布物\01-課題一式\配布先フォルダaに、"a.xls"が保存できるようになりました。
結果報告として、下記の式で問題がないとおもうのですが、確認していただきたくおもいますので、宜しくお願いします。
小川慶一さんのコメント
(コメントID: 5358)
拝見しました。
このマクロ単体としては、これできちんと動作しているなら、特に問題ないかと思います。
まずはよかったです。
「fail_name」という変数名だけ気になりますが。(「ファイル」は英語では "file"。"fail"は「失敗」です)