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

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

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

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

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

6回答

1530閲覧

ローカル完結型のツールを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2020/02/27 08:36

編集2020/02/27 09:25

個人的な作業改善のため、ツールを作りたいと考えています。
要件は以下の通りです。
・画面に必要な情報を入力できること。
・入力した情報をもとに、ディレクトリ操作(新規作成、複製、名称変更、移動)できること。
・入力した情報をもとに、ファイル操作(エクセル:xlsx、テキスト:txt、の複製、名称変更、データ反映、移動)できること。
・サーバーを立てずに利用できること。
・Windowsで利用できること。
・特定のブラウザに依存しないこと(IEのみだとNG)
以上です。

画面で必要な項目を入力して「実行」ボタンを押したら、完結できるようにしようとしています。
難しいようなら、段階ごとに実行していくのでもいいと思っています。(課題として今後改善します)

一応現段階でも検討していますが、
Javascriptではディレクトリ操作ができない。(ActiveXObjectはIE依存のため使いたくない)
バッチやPowerShellだと画面入力が難しい(見づらいい、入力しづらい)。
PHPはサーバ立てないといけないからやりたくない。
VBAでいいのかなあ?
なんて思いながら調べつつ試しつつ考えています。

何かいい方法ありませんか?
ご教示願います。

※補足1:
ツールは誰でも使えるようなものを目指したいです。(ある程度の非プログラマでも使えること。)
運用ルールを決めるのは当然ですが、直感的にみて作業できることがベストです。
なのでIDEなど環境に依存するものは避けたいです。

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

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

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

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

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

urbainleverrier

2020/03/02 17:43

yamlで設定した内容を反映すればいいのではないでしょうか。 atomでコーディングや作業、監視に自作のpackage作ったりはしますね
guest

回答6

0

Javascriptではディレクトリ操作ができない。

JavaScriptはそもそもWebブラウザ上で起動して
HTMLから生成されたDOMツリーを書き換えて画面の変更を促すためだけの言語ですからね。
AjaxでHTTP通信飛ばせる時点で上出来だと思います。

それは嫌だ汎用スクリプト言語として動かしたいと、
わがまま言い始めた天才が作ったNode.jsがあります。
これはJavaScriptに、ファイル操作や自由なHTTP通信を行うモジュールをC++で作ってくっつけたものになります。

私は雑務やルーチンワークは全てNode.jsでスクリプト作ってやっつけています。
フレキシブルな作りにしたければYAMLファイル編集して対応出来るようにしています。
こういったスタイルでの作業をおすすめします。


候補として上がっている中では
PowerShellはImport-csvはあるものの、YAMLファイルが無いので個人的には微妙でしょうか。

VBAは言語としては何も悪いところはありませんが、
くっそ愚鈍なExcelを起動する所がスタート地点になりますし、
マクロの設定とかで他の環境じゃ動かん、Excelのバージョン上げたら死んだ
……という風におすすめ出来ないポイントだらけです。


個人的な作業改善のため、ツールを作りたいと考えています。
画面で必要な項目を入力して「実行」ボタンを押したら、完結できるようにしようとしています。

目的が1行目で、
自分ひとりで使うだけならGUIはやめたほうが良いです。

Webブラウザを使う技術で言えば
HTML、CSS、JSでまず画面作るという手間が時間の無駄です。
あくまでエンジニア以外のマウス操作しか出来ない一般人に向けたWebアプリです。

他の方法も同様です。
GUIの画面を作る手間は時間の無駄です。

バッチやPowerShellだと画面入力が難しい(見づらいい、入力しづらい)

使いづらいですよね。
これは何とか解決しなければなりません。

外部ファイルを読み込ませて対応するという考え方をオススメします。
フレキシブルなデータを作る場合の候補は下記の2つ

CSVは兎も角、TSVは聞き慣れない人もいるので軽く紹介します。
TSVファイルはカンマではなくタブでデータを区切ります。
TSVの良い点はクリップボード越しにExcel開いてベタッとペーストすると
セルや改行を考慮しながらデータを反映してくれるので、SIer時代には重宝していました。

個人的にはTSVの方がCSVよりもおすすめです。

CSV・TSVは秀丸エディタに専用のモードが用意されてます。
YAMLファイルはvscodeあたりを使っておけば良いんじゃないですかね?


【おまけ】 どうしてもExcelに反映させたい

VBAとの協働作業でしょうかね。
Excelのマクロには裏でコマンドプロンプトを立ち上げてコマンド入力をして文字列を受け取るという機能があります。

SIer時代にやっていた内容です。

  • 実行用のExcelシートを作っておき、「データ取得」ボタン実行
  • 新しいシートをテンプレートシートからコピー(VBAの機能で存在する)
  • コマンドから外部ファイルを呼び出して実行
  • コマンドの実行結果の文字列を持ち帰って新しいシートに結果を書き込む
  • 新しいシートを確認して問題なければ「ファイル作成ボタン」を押す
  • 新しいExcelファイルを生成して起動、そのExcelファイルに作ったシートを移動させてファイル保存

全て全自動とまではいきませんが、これに近い所までは行けました。
この中の「外部ファイルを呼び出して実行」の部分にPowershell、Node.js、Ruby、Python等のスクリプト言語を充てがえるので、
スクリプト言語で出来る前提で色々作っておく癖をつけると一生困らないと思いますよ。


【おまけ】 補足に向けた対応

ツールは誰でも使えるようなものを目指したいです。(ある程度の非プログラマでも使えること。)

運用ルールを決めるのは当然ですが、直感的にみて作業できることがベストです。
なのでIDEなど環境に依存するものは避けたいです。

これが入ると途端に大問題になります。

候補に上がっているWebサーバを立ち上げるというやり方してる言語は全部ゴミですね。
何故か?自分のパソコンのファイルを加工したいんですよね?
PHP立ち上げているサーバーのファイルが更新されても嬉しくないはずです。
そこを面倒見始めると自分が旗振って全自動All-in-one業務遂行パッケージを作りたいと言ってるんですか?みたいな大袈裟な話になって死にます。

私だったら上記の「どうしてもExcelに反映させたい」を利用して、
自分が使うときはスクリプトファイルでやっつけて、
どうしても他人に使わせるという段階でExcelを渡すという感じにします。

質問者さんの状況を鑑みればExcel+VBAが最適解になるんじゃないでしょうか?
色んな回答がぶら下がっているので比較しながら検討してみる事をオススメします。

投稿2020/02/27 09:35

編集2020/02/27 10:40
miyabi-sun

総合スコア21158

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

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

0

PowerShellをおすすめします。
画面入力が難しいことを心配されているようですが、以下のようにXAMLを利用することでPowerShellでも簡単にGUIフォームを表示して入力を行うことが可能です。

PowerShell

1Add-Type -Assembly System.Windows.Forms 2Add-Type -AssemblyName PresentationFramework 3 4# フォーム定義 5[xml]$xaml = @' 6<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 7 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 8 Title="PowerShellからXAMLでフォーム表示" 9 Width="500" Height="200" 10 WindowStartupLocation="CenterScreen"> 11<StackPanel> 12 <Label Content="ラベル"/> 13 <TextBox Name="txtSample" Text="テキスト" Margin="10"/> 14 <Button Name="btnSample" Content="ボタン" HorizontalAlignment="Center" Width="75" /> 15</StackPanel> 16</Window> 17'@ 18 19$reader = (New-Object System.Xml.XmlNodeReader $xaml) 20$window = [Windows.Markup.XamlReader]::Load($reader) 21 22# ボタン動作設定 23$btnClose = $window.FindName("btnSample") 24$btnClose.add_Click.Invoke({ 25 $txtSample = $window.FindName("txtSample") 26 [System.Windows.Forms.MessageBox]::Show("入力されたテキストは「$($txtSample.Text)」です。") 27 $window.Close() 28}) 29 30# 表示 31$window.ShowDialog() | Out-Null

投稿2020/02/28 06:09

編集2020/02/28 06:14
ku__ra__ge

総合スコア4524

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

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

0

powershellか、選択肢にありませんがVBScriptを推します。

投稿2020/02/27 08:45

DreamTheater

総合スコア1095

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

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

0

PowerShell でいいと思います。

画面入力が難しい(見づらいい、入力しづらい)。

PowerShell ISE 使ってますか?
Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!

投稿2020/02/27 08:43

Lhankor_Mhy

総合スコア36074

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

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

0

Javascriptではディレクトリ操作ができない。(ActiveXObjectはIE依存のため使いたくない)

Electron、という選択肢もあります。

投稿2020/02/27 08:53

maisumakun

総合スコア145183

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

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

0

完成したツールを誰でも”使える”という意味なら
VisualStudio でもダウンロードしてVBとかC#で作って実行ファイルを配布すればいいと思いますけど
そうすれば画面を作るのも簡単でファイル操作などにも制限がないです。

ただ、完成したツールを誰でも”改変”できるようにしたいという意味なら
PowerShellかHTAアプリケーション(HTMLとvbScript or JavaScriptの組み合わせ)かな。
こちらは画面作成が若干面倒だし、いくばくかの制限があります。

投稿2020/03/06 05:07

編集2020/03/06 05:14
yukiyuki123456

総合スコア130

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問