目次
閉じているExcelBooKへ転記する
こんにちは。伊川(@naonaoke)です。
閉じているBookへ転記する方法を紹介します。
上の記事の続きになります。
問題提起
(株)IKAWAの柄久 瀬瑠子(エク セルコ)は、上司から下記の依頼を受けました。
・Excelでデータベースを作成してほしい。
・ACCESSは使えない。
Excelは、表計算ソフトなので、データベースには適していません。
何か良い方法はあるだろうか?
解決策
・閉じているBookへ転記するVBAを設定する。
・Excelを共有設定は行わず、通常は、読取専用で使用する。
閉じていいるBookへ転記するVBA
作成手順 その1 相対パスで作動するようにする
転送、転記をする場合は、上の図のように、必ず同一フォルダの、同じ階層に設置します。
ここでは、絶対パスと相対パスの詳しい説明は割愛しますが、同じ階層で設置したほうが、汎用性があります。
今回は、Cotrol.xlsmで入力した内容を、集計.xlsmへ転送します。
作成手順 その2 閉じているBookを開く Workbooks.Open
閉じているBookを開くコマンドは、Workbooks.Openを使います。
他にも方法はありますが、この方法が一番簡単です。
これで、集計.xlmsを開く準備ができました。
絶対パスは、転送先のファイルが、他のドライブに移動したときに、毎回、ファイルの場所を書き直す必要があります。
相対パスには、基本的に、煩雑な手間がありません。
ただし、デメリットは、共同開発をするときに、フォルダが不明なり、上手く設定できない等があります。
作成手順 その3 ブックを保存して閉じる DisplayAlerts
DisplayAlertsプロパティは、True の場合、マクロの実行中に特定の警告やメッセージを表示します。
値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
ブール型 (Boolean)は、上の記事で説明しています。
警告アラートを出さないように設定しています。
作成手順 その4 転記のコードを作成する
今回紹介するのは、いったん、閉じているBookを開いて、閉じるという作業をします。
人間の目には、閉じているままの状態に見えるというのが、今回のカラクリです。
転記のコードはそれほど難しくありません。
上のようなコードになります。
Private Sub CommandButton2_Click() Dim wb1 As Workbook Workbooks.Open ThisWorkbook.Path & "\集計.xlsm" Set wb1 = ActiveWorkbook wb1.Worksheets("Sheet1").Range("A1:C4").Value = _ ThisWorkbook.Worksheets("Sheet1").Range("A1:C4").Value Application.DisplayAlerts = False wb1.Save wb1.Close Application.DisplayAlerts = True End Sub
ここがポイント
Valueは、省略できます。ValueがなくてもVBAは、Valueとみなして勝手に処理をします。しかし、今回は、Valueを付けないでコードを記載しましたが、反応しませんでした。反応しない場合など、Value付けて再度、コードを記載しましょう。Valueが省略されていることを忘れないようにしてください。
まとめ
カンタンなVBAで、Excelも、ACCESSと同じように使うことができます。ぜひ、1度試してください。ただし、ACCESSには勝てませんので、データベースが必要であるならば、ACCESSを購入したほうがいいです。
今回のサンプルファイルは、No48です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。