前提・実現したいこと
デスクトップ上に、Accesseで作成されたデータ取得ツール"DMCBillXls.accdb" の
ショートカットを作って、手動で起動し必要なデータを取得しています。
"DMCBillXls.accdb"はソフト会社より提供されたものです。
販売管理システムのデータベースにアクセスして必要な情報を取得することができます。
処理メニューから必要なボタンを押下して、データ取得用の条件を入力すれば、
該当するデータが得られるというアプリです。
今は、手動で起動し必要なデータを取得しています。
それをExcelのVBAを使用して自動化しようと思っています。
そこで、ExcelのVbaにて下記のソースを作成し、データ取得ツールを起動しようとしてるのですがうまくいきません。
VBA初心者で他のアプリの起動方法がよくわかっていません。
どうかご教授をお願い致します。
発生している問題・エラーメッセージ
「実行時エラー'5' プロシージャの呼び出し、または引数が不正です。」
該当のソースコード
sub Public StrTtl As String Public intRET As Integer StrTtl = Path8 & "DMCBillXls.accdb" '"データ出力ツール" intRET = Shell(StrTtl, 1) If intRET = 0 Then MsgBox "CSV出力ツールの起動に失敗しました": End Sub
試したこと
補足情報(FW/ツールのバージョンなど)
osはwindows10です。
excelは2016です。
ここにより詳細な情報を記載してください。
> sub
サブルーチン名がないけど質問記載時のミス?
すみません。
サブルーティン名は付けています。表記をしていないだけです。
また、path8も実際は”C:\Users\XXXX\Documents\”となっています。
それから、End subも付けています。
記載したソースコードに漏れがあり申し訳ありません。
> Integer
'r'が全角になってるのも?
ソースはそのままコピペして、隠したいところだけtestとか***とかに置換えた方が良いよ。
こういった不要なやり取りが経るので。
すみません。日本語以外はすべて半角です。
ソースコードは文法上は問題なく動いています。
記載が悪く誤解を与えるようなソースになり申し訳ありません。
ソースはコピペではなく質問時に再度入力したものです。
初めての投稿で要領が悪く申し訳ありません。
以後注意します。
質問を編集しコードを修正された方が回答つきやすいと思います。
編集時に初心者マークを付けることができるので、
初心者マークを付けることをお薦めします。
ソースコードが会社のパソコンにあり、コピペができない状況です。
今分っている分の修正くらいはできないですか?
まぁきちんとした質問ができてないなら的確な回答ができないだけなので構いませんが。
外部アプリを起動させためのプログラムをテスト的に作りましたので
以下のような簡単なソースとなっています。
Sub DB操作テスト()
'-----------------------------------------------------------
On Error GoTo ErrorR
'-----------------------------------------------------------
Public intRET As Integer
Public StrTtl As String
Public Path8 As String
Path8 ="C:\Users\XXX\Documents\"
StrTtl = Path8 & "DMCBillXls.accdb" '"データ出力ツール"
intRET = Shell(StrTtl, 1)
If intRET = 0 Then MsgBox "CSV出力ツールの起動に失敗しました":
step99:
Exit Sub
'-----------------------------------------------------------
ErrorR:
Call エラー処理
End Sub
拡張子が”exe”の外部プログラムは下記のソースコードで起動し、操作できています。稼働している下記のプログラムを参考に作成しました。
同様に作ったのですが、拡張子が"accdb"であるためか、
エラーが発生しうまくいきません。
Sub 処理_取得_従業員情報() '外部プログラム起動()
' MsgBox "CSV出力ツールを起動を起動します"
StrTtl = "C:\SvDMC\tools\CSV出力ツール\CSV出力ツール\CsvOutPutTool.exe" '"データ出力ツール"
intRET = Shell(StrTtl, 1)
If intRET = 0 Then MsgBox "CSV出力ツールの起動に失敗しました": Exit Sub
' AppActivate RetVal, False
Application.Wait Now + TimeSerial(0, 0, 1)
SendKeys "{right 5}" ' 顧客情報取得 Tab Ent キー"
SendKeys "{tab 3}" ' 顧客情報取得 Tab Ent キー"
SendKeys "{ENTER 1}"
Application.Wait Now + TimeSerial(0, 0, 2)
SendKeys "{tab 1}" ' 出力ファイルOpen キャンセルキー"
SendKeys "{ENTER 1}"
Application.Wait Now + TimeSerial(0, 0, 0.5)
SendKeys "{tab 1}" ' 終了 エンタキー"
SendKeys "{ENTER 1}"
Application.Wait Now + TimeSerial(0, 0, 0.5)
SendKeys "{ENTER 1}" ' 終了確認 エンタキー"
MsgBox "社員情報の出力は終了しました"
End Sub
起動部分だけ抜き出してテスト的に作ったものです。
お手数をお掛けしますがよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー