質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

3814閲覧

エクセルVBA バッチファイルがうまく起動できない

TKM2977

総合スコア18

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2019/01/11 08:03

現在、エクセルからLINEにメッセージを送信するアプリケーションを作成中です。
しかしながら、バッチファイル部分が完成している(つもり)ものの、呼び出すにあたり送信が行われない現象が発生しています。どなたかご教授ください…

<発生している問題>
コマンドプロンプトの画面は起動しているものの、実際に送信が行われていない。
※おそらく引数の受け渡しの問題ではないかと予想しております。

<問題のコード>

VB

1Dim obj 2Sub LineMes(Message As String) 3 Dim obj As IWshRuntimeLibrary.WshShell 4 Set obj = New IWshRuntimeLibrary.WshShell 5 'Message = "" + Message + "" 6 'Debug.Print Message 7 ret = obj.Run(ActiveWorkbook.Path + "\LineCommand2.bat " + "" + Message + "") 8End Sub

念のため、バッチファイルの中身も追加しておきます。

bat

1@echo off 2set KEY=<アクセストークン> 3set MASSAGE=%1 4curl -X POST -H "Authorization: Bearer %KEY%" -F "message=%MASSAGE%" https://notify-api.line.me/api/notify

一応、行ったエラーチェックの状況も記しておきます。
①バッチファイルをコマンドプロンプトから呼び出し、引数を渡して送信させる。 →成功
②バッチファイルをファイル名を指定して実行から呼び出し、引数を渡して送信させる。 →成功

どなた様かご教授のほどよろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/01/11 08:21

[Debug.Print ActiveWorkbook.Path + "\LineCommand2.bat " + "" + Message + ""]とやって出された結果を、コマンドプロンプトにはりつけてうまくいくかの検証を行っていただけませんか?
TKM2977

2019/01/11 13:12

ご協力ありがとうございます。検証させていただいた結果(文字化けはしましたが)成功しました。同じく、念のためファイル名を指定して実行でも行い、成功しました。VBAの仕様上の問題でしょうか…引き続きご協力よろしくお願いします!
TKM2977

2019/01/12 00:59

どうやらコマンドプロンプト側でcurlがコマンドとして認識されていない模様です。エラーメッセージも添えておきます。 'curl' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
TKM2977

2019/01/12 01:00

なお、コマンドプロンプトなどから行った場合このメッセージは表示されるものではありません。
shinobu_osaka

2019/01/12 10:50

curlは標準のコマンドではありませんので…おそらくバッチファイルの実行時パスの問題かと思います。実行時パスがどこであれ動くよう、インストールなされているcurlコマンドの位置へのパスをつければ(curlをフルパス表記にすれば)動くのではないでしょうか?
TKM2977

2019/01/13 07:57

送れました!ご協力ありがとうございます!あとは文字化けとの戦いですね・・・頑張っていきたいと思います。皆さんありがとうございました!
shinobu_osaka

2019/01/13 15:09

よかったです。文字化けは文字コードかもしれませんね? VBAはたしかshift-jisで、Windows標準はUTF-8かな?
guest

回答2

0

ベストアンサー

質問への追記・修正にてほぼ解決してしまいましたので、
改めてこちらへ今回の解決を書いておきます。

curlは標準のコマンドではないので、
バッチファイルの実行時パスの問題で起動しなかったものと思われます、
インストールなされているcurlコマンドの位置へのパスをつければ動きます。
文字化けは文字コードかもしれませんね? VBAはたしかshift-jisで、Windows標準はUTF-8かな?

投稿2019/01/15 20:06

編集2019/01/15 20:07
shinobu_osaka

総合スコア456

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

わかる範囲でアドバイスを…、と思ったら追記・修正依頼の中で概ね解決されていたようですね。

「VBAからLINEを送る」という内容や「バッチファイルの同期処理」という部分は他にも知りたい人がいると思いますので、回答欄で回答し解決させたほうが後続の方のためにもいいかと思います。

ともあれ、実現できたようで何よりです。

投稿2019/01/15 01:54

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinobu_osaka

2019/01/15 20:04

大変失礼しました…回答した気になっておりました(^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問