Step15 新規ブックを作成し請求書をコピーする

前回設置したファイル保存ボタンをクリックすると、新規ブックに請求書部分のみをコピーします。

したいことは下記になります。
・関数や式をコピーせずにデータのみコピーする
・列幅と行幅はそのままでコピー
・罫線もそのままでコピー

簡単にはできそうにないので、試行錯誤を繰返して完成させたいと思います。



Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

作成画面

前回作成「名前を付けて保存ダイアログボックス」を開くコードにバグがあったので修正したください。

Public Function MySaveFileName() As String
     Dim sgetfile As String

     sgetfile = Application.GetSaveAsFilename(fileFilter:="エクセルファイル (*.xls), *.xls")
     If sgetfile = "False" Then
         MySaveFileName = ""
     Else
         MySaveFileName = sgetfile
     End If
End Function

バグ発生予防の為、先頭に下記のVBAコードを追加してください。

Option Explicit

これを入力しておくと、宣言されていない変数を使うとエラーになるのでバグを予防できます。

■新規ブックを作成し列単位で請求書をコピーしました

新規ブックを作成し列単位で請求書をコピー

Private Sub CommandButton2_Click()
    Dim sSaveFile As String
    Dim sNewBook As String
    
    sSaveFile = MySaveFileName
    If sSaveFile = "" Then
        Exit Sub
    End If

    Worksheets("請求書").Columns("D:Z").Copy
    
    Workbooks.Add
    
    sNewBook = ActiveWorkbook.Name

    Workbooks(sNewBook).Activate

    Worksheets("Sheet1").Columns("D:Z").PasteSpecial

End Sub


■実行ソフトの流れ
1)名前を付けて保存ダイアログボックスを開き、ファイル名が入力されれば続行し、キャンセルされればコマンドボタンクリックイベントから抜けます。
2)請求書部分を列単位でコピーします。
3)新規ブックを作成します。
4)作成した新規ブックの名前を取得します。
5)新規ブックをアクティブにします。 これは新規作成された時点でアクティブになるので、必要ないかもしれませんが、せっかく作成した請求書がダメになるとイヤなので、念のため追加しました。
6)新規ブックの「Sheet1」の請求書を列単位で貼り付けます。

実行結果です。
請求書を列でコピーした結果

結果、下記の点が分かりました。

・コマンドボタンはコピーされていません。
・計算式と関数がコピーされエラーになっています。
・列幅は正常ですが、行幅は合っていません。

次回より、正しく請求書がコピーされファイル保存されるように修正します。

Homeに戻る > Excelでアプリケーションソフト3 > 請求書アプリ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved