pickup

 

目次

SCHOOL OF VBA そのあとに その3

こんにちは。伊川(@naonaoke)です。

長らくお待たせしました。

さぼっていたわけではないのですが、時間をおいて申し訳ありませんでした。

今回は、作成したファイルを自動で保存します。




スポンサーリンク

特殊フォルダの取得

作成したファイルをデスクトップに自動保存します。

その際に必要な知識は、WScript.Shell,SpecialFoldersプロパティです。

CreateObject関数で作成したWscript.ShellのSpecialFoldersプロパティで、

特殊フォルダを示す文字列を引数に指定して特殊フォルダを取得します。

デスクトップのフォルダ、スタートメニューのフォルダ、個人用ドキュメントのフォルダなどを取得できます。

自動保存 作業手順 その1 コード抜粋


CreateObject関数で作成したオブジェクトを利用するにはCreateObject関数の戻り値を

Setステートメントでオブジェクト変数に代入します。


この書き方でデスクトップを取得できます。

自動保存 作業手順 その3 コードを解説

Sheet2を選択

最終行を取得

条件分岐で判定する

もし、セルC2の文字数が、0以上だったら

出力範囲を設定します。

新しいシートを作成して、選択したデータを新しいシートにコピー


CSVで出力するコード




これで、自動でデスクトップに作成した数値が自動保存されます。

Sub CSVファイルへ出力()
    Dim i As Long
    Dim rng As String
    Dim Path As String, WSH As Variant
    Set WSH = CreateObject("WScript.Shell")
    Path = WSH.SpecialFolders("Desktop") & "\"
    
     Sheets(2).Activate
     
     maxrow = Cells(Rows.Count, 4).End(xlUp).Row
     For i = 2 To maxrow
     
     If Len(Worksheets(2).Range("C2")) > 0 Then
     
     Worksheets(2).Range("C2:U13").Select
     rng = Selection.Address '選択範囲のセルアドレス
     sname = Worksheets(2).Name 'シート名
     Worksheets(sname).Range(rng).Copy Destination:=Worksheets.Add.Range("A1") '新しいシートを追加し、選択範囲をコピー
     ActiveSheet.Move '新しいブックを作成し、そこにシートを移動する
      Application.DisplayAlerts = False '上書きのメッセージを表示させない
        ActiveWorkbook.SaveAs Filename:=Path & Left(ActiveSheet.Range("A2"), 14), FileFormat:=xlCSV

    ActiveWorkbook.Close SaveChanges:=False '保存せずに閉じる
   
    Application.DisplayAlerts = True 'メッセージ表示を戻す
   
    Set WSH = Nothing
 

     
   End If
   
   Next i
   
   
   
   MsgBox "出力完了"
   
   End Sub

 

ここがポイント

ここがポイント
Function8.png
全自動で保存されます。名前を付けて保存等、面倒な作業を依頼すると売れません。最初は、何時間も考えました。一度覚えると、カンタンなもので、パーツを組み合わせる感覚です。

 

まとめ

一応、ACCESSへの転送等もあるのですが、それは、一般公開の動画で紹介しています。

ここでは、割愛します。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事