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

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

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

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

Q&A

解決済

5回答

15346閲覧

エクセルの操作、処理をVBA以外でするメリットについて

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

0グッド

1クリップ

投稿2016/05/19 05:52

半年ほど業務でエクセルVBAを用いてマクロの作成をしている者です。
タイトルの通りエクセルVBA以外、例えばC#やRubyでエクセルを操作するメリットについて皆さんの意見を頂きたく質問しました。

VBAで作成する際、些細なことでコンパイルエラーが表示されることやインクリメント演算子が使えないなどで不満を感じています。
また、下記のようなサイトを知ってから他言語を使ったエクセルの操作に興味がわき、今後VBAからの操作以外でエクセルを扱えないか考えています。

http://magazine.rubyist.net/?0027-ExcellentRuby

しかし、単純な繰り返し処理や少人数のチームでしか使わないような処理であれば、わざわざ別の環境を用意して作成するメリットがあるか疑問に思うところがあります。

経験豊富な皆様から見たメリットまたはデメリットその他意見をお聞かせ願えますでしょうか?

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

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

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

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

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

guest

回答5

0

ベストアンサー

VBA以外で処理する理由って、実行環境にExcelがインストールできない、でもExcelファイルを扱いたい、そういう場合じゃないですか?
例えばウェブアプリでExcelで帳票を作成したいとか、そういう用途が多いと思います。
Excelがインストールできる環境で、わざわざ別の言語から操作するメリットはないと思いますね。
逆にデメリットの方が多いと思います。
・VBAに代わる環境を作らないといけない
・ExcelのバージョンとExcelを操作するためのコンポーネントのバージョンに注意しないといけなそう
・既存処理がVBA、これからはRuby(例え)で混在し現場の迷惑
・自分以外の人も使えるようにトレーニング必須
・Excelブックと動作環境が直結していないからデバッグしづらそう
などなど

些細なことでコンパイルエラーが表示されること

これはオプションの自動構文チェックを外す、で対処できないですか?(これではない?)

投稿2016/05/19 06:40

ttyp03

総合スコア16998

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

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

0

これで書けとかお金貰えるなら書きますけど...ってレベルですね

メリット
使う言語体系が持つメリットを享受できる
→ほんとに?ってレベル

デメリット
何かと面倒
特にリソース解放関連で結局冗長な処理を書かないといけないことに嵌ってorzみたいなことに

結局ドハマりするときはVBAで書いても、他の言語環境で書いたとしても起こりえるわけで
個人的にはVBAで書くときは書き捨てレベルが多いので特にそうなのかもしれませんが..

あと自分しか書けなくなるってのは嫌かな
→VBAで書いておけば誰かが何とかしてくれるでしょ的な

投稿2016/05/19 06:09

dojikko

総合スコア3939

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

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

0

色々な不安がありますね。

C#で実装したことがありますが、ネイティブに作るならExcelのバージョン毎の対応が必要だったり、ある程度ライブラリに任せるとしたら遅延バインディングやCOMやOLEなんかで実行してみないとエラーかどうかわからないのでコーディングはともかくテストにとても時間が掛かりました。新しいバージョンが出たらすべてのテストを再実行する必要もありました。

また、JavaなんかでもPOIとかの有名どころがありますが、POIで出力したものはやたらと軽いサイズだったり、Excelアプリケーションで開くと再現性無くフリーズしたり、確実な動作を要求されるならあまりおススメしません。

生成後、編集せずに印刷するだけでその後の編集は非保証とか、既存のシステムからExcelデータを入出力するなどの要件でもなければ私は採用しませんね。

投稿2016/05/19 07:54

Koozy

総合スコア55

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

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

0

とある業務でEXCELのデータをDBにインポートする処理を
PHPで書いてみたことがあります。
マクロを使うより大分楽だったように思います。

php

1$book = Excel::load($dir.$file); 2$sheet_count = $book->getSheetCount(); 3for($i=0; $i<$sheet_count; $i++){ 4 $sheet = $book->setActiveSheetIndex($i); 5 $sheet_title = $sheet->getTitle(); 6 $sheet_rowmax = $sheet->getHighestRow(); 7 for($j=1; $j <= $sheet_rowmax; $j++){ 8 $val1 = strval($sheet->getCellByColumnAndRow( 0, $j )->getValue()); 9 $val2 = strval($sheet->getCellByColumnAndRow( 1, $j )->getValue()); 10 11 //DB追加 12 $results = DB::update( 13 "insert into table_hoge ( title, val1, val2 ) values ( ?, ?, ? ) " 14 ,array($sheet_title, $val1, $val2) 15 ); 16 } 17} 18

投稿2016/05/19 07:07

tetuyosi33

総合スコア14

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

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

0

参考になるか分かりませんが過去の経験です。

VCで製作したアプリケーションから
エクセルにアクセス
エクセル内のデータを読み込み、演算を実施
演算結果を再度エクセルに書き込み

ということを行ったことがあります。

UIがVCで製作したアプリケーションのため
このような処理になりました。

UIはエクセルではなく、まともなアプリケーションにされたい
または、演算量が多いため高速化されたいような場合には
(※演算内容によって高速化できるか検討は必要です)
メリットがあるのではないかと思います。

デメリットとしましては、エクセルのバージョンが変わったときに
別アプリケーション側のコードがそれに対応しているかどうか
再度確認が必要になるとかでしょうか?

投稿2016/05/19 06:19

eleanor2352011

総合スコア44

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問