Access VBAでバッチファイル実行

一応、処理前にやるかやらないかの選択実行を設置

Dim objWSH As Object
If MsgBox(“繰越処理を実行しますか? yes/no”, vbYesNo, “繰越処理最終確認”) = vbYes Then

Set objWSH = CreateObject(“WScript.Shell”)
objWSH.Run “d:\LIFE\LIFE繰越データバックアップ.bat”
Set objWSH = Nothing

End If

Windows sftpを使う。

WindowsでFTPをバッチファイルで動かして以前使おうかとしたら、標準の物ではパッシブモードが無い為、有料版を購入したりして対応したが、結局挙動が怪しいのでLINUXを使う事にした。しかし、今回は、どうしてもWindows上で処理した方が簡略化できるので何とか頑張った。

探せばいいソフトがあるものです。その名は、「WinSCP」様です。もう、あえて、様をつけたくなるようなソフトでした。GUIでも使えるのですが、DOSでも使える優れものです。更に、セキュリティキーがあるようなFTP接続にも対応しているというもの。本当に作者に感謝したい。

普通にGUIソフトの様にインストールすると、

C:\Program Files\WinSCP\

にインストールされる。この中にWinSCP.comっていう実行ファイルがあるので、これが、SFTPの役割をしてくれるようだ。

バッチファイルで動かしたかったので、サーバーにアクセスして、ダウンロードするまでのスクリプトを記載する。

●download.bat 実行させながら、スクリプトファイルを読んでいる。

@echo off
“C:¥Program Files¥WinSCP¥WinSCP.com” ¥script=C:¥data¥download.txt

※上記の¥マークは、全角にしてありますので、そのままコピペしないように。半角の¥マークです。なぜか、このワードプレスでタイピングすると「\」になってしますので全角で記入しました。このマークは重要なので間違えの無いように。

●download.txt すべてのtxtファイルをダウンロードさせる。

open sftp://joy@hogehoge.jp -privatekey=”C:¥data¥暗号化.ppk”
cd /
cd /from_joy/finished
get *.txt c:¥data¥from_joy¥finished¥
exit

※ここも¥マークと/で混在しているが、このようにしたらまともに動いた。

 

このバッチファイルをアクセスのマクロで動かしてデータの操作をさせた。

まだ、WinSCPの機能は沢山あるようだが、今回はこの辺で。

PASSIVE FTP

Windows10プロフェッショナルを使っているが、DOSプロンプトで使用するFTPクライアントは、パッシブモードが使えないらしい。時間をかけて調査してみたが、結局は、海外の有料ソフトを使う事にした。まったく同じように使えるようだ。

http://passive-ftp.com/

なぜ、DOSで動くFTPを探していたかというと、あるサーバーにFTP接続して、特定のファイルをこちら側のサーバーに持ってくるためである。それを自動化させたかったので、このような調べ物をやっていた。

後ほどスクリプトなども記載するが、ちょっと理解できないくらいのもの。結局WindowsのDOS上で動くようなバッチファイルにするしかないのだが、今の時代でバッチファイルを使うのかとおもうと寂しい。GUIで全てできればいいのに。

SQLサーバーも無料版じゃなく有料なら、FTP接続マネージャーなるものがあるようだが、とにかく高い。なので、時間をかけて無料で対応するしかない。