元・天津駐在員が送るエッセイ

中国と日本、それをつなぐ言語について、一緒に考えましょう。

Excel VBA

[ リスト | 詳細 ]

記事検索
検索

全1ページ

[1]

FileMaker 製品は 32 ビットアプリケーションである事が分かりました。
今回購入したWindows Server 2008 R2は、64ビット版しか販売されていない。
と言うことで、ODBC設定をするには、
●64 ビット版の Windows 環境で、FileMaker を xDBC のホストとして使用する場合には、FileMaker Pro をデフォルトの「Program Files (x86)」ディレクトリではないディレクトリにインストールします。(64 ビット版の Windows 環境には、2つの「Program Files」ディレクトリがありますが、「Program Files」ディレクトリにインストールすることはできませんので、別途、インストールディスクのルート上などに「FileMaker」ディレクトリを作成し、その中にインストールを行います。)
●64 ビット版の Windows 環境で、FileMaker から外部 ESS データソースを使用する場合には、32 ビット版の ODBC Data Source Administrator を使用しないと設定した DSN 等を使うことができませんので、C:\Windows\SysWOW64\ 内にある odbcad32.exe を起動して DSN を設定します。
が必要である。

ODBCの設定が済んだらデータを流し込むデータベースをFileMakerで作成する。
今回設定するのは、毎日同じデータを定時に更新する設定。

ExcelVBAを開くと、自動処理がはじまり
まず、基幹システムのデータをExcelに読み込む
※この設定は、秘密
そして、続けて、FileMakerに登録してあるデータを全削除
最後に、Excelに読み込んだデータをFileMakerに流し込む
というVBAを作成する。最初から最後までの処理を一気に処理する。

というこことで、まず、FileMakerのデータベースに有るデータを全部削除するVBAを作成。
最後にご紹介している「FileMaker実践データベースシステム」を参考にさせていただいた。
Option Explicit

'ODBC接続 プライベート定数宣言
Private Const strConnectionDriver       As String = "FileMaker ODBC"
Private Const strConnectionHost         As String = "localhost" 'ホスト名又はIPアドレス
Private Const strConnectionPort         As String = "2399"

Sub ALL_DELETE()

    'オブジェクト変数宣言と初期化
    Dim objConnection           As Object:  Set objConnection = CreateObject("ADODB.Connection")

    '変数宣言と初期化
    Dim strConnectionUserID     As String:  strConnectionUserID = "idno"
    Dim strConnectionPassword   As String:  strConnectionPassword = "password"
    Dim strConnectionDatabase   As String:  strConnectionDatabase = "database_mei"
    Dim strConnectionTable      As String:  strConnectionTable = "table_mei"
    Dim strSQLQuery             As String:  strSQLQuery = "DELETE FROM " & strConnectionTable

    'エラー処理開始
    On Error GoTo Error_Transaction
    
    'ODBC接続文字列定義
    objConnection.ConnectionString = "DRIVER={" & strConnectionDriver & "};" & _
                                     "HST=" & strConnectionHost & ";" & _
                                     "PRT=" & strConnectionPort & ";" & _
                                     "UID=" & strConnectionUserID & ";" & _
                                     "PWD=" & strConnectionPassword & ";" & _
                                     "SDSN=" & strConnectionDatabase & ";"
    'ODBC接続オープン
    objConnection.Open
    
    'トランザクション開始
    objConnection.BeginTrans


'        SQL実行 DELETE FROM <テーブル> WHERE <照合フィールド> = <照合値>
        objConnection.Execute strSQLQuery

'        コミット
        objConnection.CommitTrans
'

Finished:
    
    'ODBC接続クローズ
    objConnection.Close
    
    'オブジェクト変数解放
    Set objConnection = Nothing
    
Exit Sub

Error_Transaction:

    ' ロールバック
    objConnection.RollbackTrans
    
    '終了メッセージ生成 エラー発生時
    lngResultMessage = "Error:" & Err.Number & vbCrLf & Err.Description
    lngResultArgument = vbOKOnly + vbDefaultButton1 + vbCritical
    
    GoTo Finished

End Sub





転載元転載元: 素人が使えるExcel VBA と FileMaker

これまで、説明してきたExcel VBAでの自動処理について、まとめておきましょう。

まず、エクセルを開くとVBAが動き出すようにするには、
Sub Auto_Open()

'処理を書く

ActiveWorkbook.Save

Application.DisplayAlerts = False
Application.Quit

End Sub
という風に、Sub Auto_Open()でVBAを書き始めます。

このときの注意点は、リンク先に詳しく書いてますが、セキュリティーを「低」にしないとVBAを有効に
するかどうかのダイアログが開き、処理が止まってしまいます。「低」には、(推奨しません)と
注意書きがあるので、ご自分で「低」にして使うかどうか判断してください。

また、少し面倒ですが、デジタル署名を使うと、セキュリティを「高」にしてもダイアログで止まる
ことなく動きます。

そしてその次に、知っておきたいのが、そのVBAが動いてほしくないときの処理。
条件は、様々であろうと思うので、私がすべてを説明するわけには生きませんが、一番汎用性があると
思われるのが、有る一定のセルにデータがない場合。
If Range("A2").Value = "" Then
    
    Application.DisplayAlerts = False
    Application.Quit
    Exit Sub
    
End If
ここで注意が必要なのが、Application.DisplayAlerts = False。シートを削除する時、ファイルを保存せずに
閉じる場合など、ダイアログが開くのをご存じだと思うが、これらのダイアログもいちいちVBAの処理を止める
ので、Application.DisplayAlerts = Falseで、ダイアログが開かないようにしておかないと処理が止まって
しまう。


これだけの事ができれば、とりあえず、時間が来ればエクセルのファイルが開き、VBAを実行して
何事もなかったかのように、Excelが閉じる。


自動でVBAを動かす方法は、ご理解いただけたと思うが、なにか処理をしないと意味がない。
私が頻繁につかうVBAをご紹介しておきます。

一番汎用性があるのが、シートの更新。
自動で処理を行うので、同じ名前シートに処理をせざるおえないが、そのシートを消すとまたしても
ダイアログが開く。それを防ぐのがこのVBA。

それから覚えておきたいのが、日付の作り方。
今日の日付だけなら簡単な書き方もあるが、検索などを行う場合に、複雑な日付を別のシステムに合わせて
作れるようになっておかないと、なかなか実践的な使い方は難しい。例えば毎月の月末なんて日付は
すこし知恵が必要になる。


そして最後に、自動化したExcelのファイルは開くと動きだす訳であるから、そのファイルで作った表は別ファイルとして書き出して保存する必要がある。
このVBAをうまく使えば、LANネットワークの別のコンピュータや、みんながみれるファイルサーバーに
保存して公開するなんて事も可能になる。

これまでは、Excel単体での簡単で、とても有効な使い方をご紹介してきたが、これからは、データベースを
利用した使い方をご紹介して行こうと思う。








転載元転載元: 素人が使えるExcel VBA

全1ページ

[1]


.
shi**per
shi**per
男性 / O型
人気度
Yahoo!ブログヘルプ - ブログ人気度について

ブログバナー

よく行くブログ

哲学・思想系

中国人

中国駐在(北方)

中国駐在(南方)

中国以外

日本 関東

日本 中部・北陸

日本 関西

日本 九州

過去の記事一覧

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

よしもとブログランキング

もっと見る

[PR]お得情報

いまならもらえる!ウィスパーうすさら
薄いしモレを防ぐ尿ケアパッド
話題の新製品を10,000名様にプレゼント
いまならもらえる!ウィスパーWガード
薄いしモレを防ぐパンティライナー
話題の新製品を10,000名様にプレゼント
ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事