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

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

ただいまの
回答率

90.47%

  • VBA

    1862questions

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

  • Excel

    1595questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

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

解決済

回答 5

投稿

  • 評価
  • クリップ 1
  • VIEW 4,475

harunandesu

score 8

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+1

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

$book = Excel::load($dir.$file);
$sheet_count = $book->getSheetCount();
for($i=0; $i<$sheet_count; $i++){
    $sheet = $book->setActiveSheetIndex($i);
    $sheet_title = $sheet->getTitle();
    $sheet_rowmax = $sheet->getHighestRow();
    for($j=1; $j <= $sheet_rowmax; $j++){
        $val1 = strval($sheet->getCellByColumnAndRow( 0, $j )->getValue());
        $val2 = strval($sheet->getCellByColumnAndRow( 1, $j )->getValue());

        //DB追加
        $results = DB::update(
            "insert into table_hoge ( title, val1, val2 ) values ( ?, ?, ? ) "
            ,array($sheet_title, $val1, $val2)
        );
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    エクセル VBA シート保護のエラー

    エクセル VBAでシートの保護と保護を解除するコードを作成しております。 作成したコードを以下の手順で実行するとエラーが発生するのですが、原因や対処法を知っている方がおりましたら

  • 解決済

    vbaで、エクセル上の入力データを集計し、配列にしたいです。

    現在エクセルのVBAを勉強をしています。 エクセル上に入力された情報を集計し、配列に入れたいです。 A列が担当者コード、B列が4月のある数値データーで、tanという担当者配列と、a

  • 解決済

    エクセルVBAのFor文について

    エクセルVBAにて質問です。 下記のマクロにおいて、For文が回らずiの初期値のみの動作しかしません。 暫く考えているのですがわからないので、どなたかご教授頂けると幸いです。

  • 解決済

    エクセルVBA 手動計算方法

    手動計算したいシートと、自動計算したいシートがあります。 手動計算したいシート・・・シート名をクリックすると計算が開始される 自動計算したいシート・・・その都度、計算さ

  • 解決済

    エクセル 関数とVBAを使ったシフト表

    エクセルにて、シフト表を作成しています。 関数とVBAを使用して作成しています。 ファイルの容量は2400KB程度でしょうか、起動するにも少々重いです。 作成した時点では不具

  • 解決済

    エクセルVBA   

    Sub ie_test() 'IEテストする。 'IEの起動 Dim objIE As InternetExplorer Dim htdoc As HTMLDocument

  • 解決済

    エクセルvbaのセル値入力

    基本的な質問になるのですが、 Range("A1").Select ActiveCell.Offset(0,1).Value = "test" と入力した時、フォーカ

  • 解決済

    エクセルのVBAの動作の高速化について

    エクセルのVBAの高速化を行いたいと思い質問させていただきます。 現在、きまった形のデータを作成するために、コピーandペースト作業時のミスをなくすためエクセルとVBAを使い

同じタグがついた質問を見る

  • VBA

    1862questions

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

  • Excel

    1595questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。