エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロ・VBA基礎編フォローアップ アドバンスド
       └ データ記入用ファイルを配布する-その2

データ記入用ファイルを配布する-その2

[9809] 2018-04-21 16:43:52 伊藤博文さんからの投稿です。

お世話になります。

先ほど、指導していただきましたが、保存先をドキュメントにして、
試みましたが、また怒られました。
よくわかりません。ご指導宜しくお願いします。


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

 


[9810] 2018-04-21 19:30:43 小川慶一さんからの投稿です。

伊藤博文さん:

以下について。

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


というか、その中の、以下の部分について。

>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" 等の名称のフォルダを自分で作り、そこでやりなおすことがオススメです。
面倒に感じられるかもしれませんが、そういうときこそ、ここまでの軌跡を再度たどること自体、よい復習になるでしょう。


特殊フォルダのパスの取得方法については、この問題を僕がオススメする方法で解決されたあと、伊藤さんがさらにご興味あれば、お伝えしたいと思います。

ざっと、以上のとおりです。



> お世話になります。
>
> 先ほど、指導していただきましたが、保存先をドキュメントにして、
> 試みましたが、また怒られました。
> よくわかりません。ご指導宜しくお願いします。

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

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ