アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトルの通り、行列を入れ替えたいエクセルファイルがあるのですが、数が多くいちいちファイルを開いてやるのはあまり、いいやり方ではないかなと思っています。どなたか、ファイルをひからずに、フォルダに入っているファイルごとに行列入れ替えを適用する方法をご存知の方がいらっしゃいましたらよろしくお願いします。

入れ替えごのファイルは元のファイルを上書きしても大丈夫です。

A 回答 (1件)

どの方法であれ、データを開かず(メモリに読み込まず)作業することはできません。

しかし、アプリのインターフェイス(要は画面)を表示せずにバックグラウンドで処理することは可能です。最も簡単な方法はVisualBasic.Netを使うことだと思います。ExpressEditionがお勧めです。無料ですし、ご希望のことはそれで十達成できます。私は必要に応じてコードをしょっちゅう書きかえるので、実行可能ファイルにせずにデバッグモードで実行しています。

VBScriptingで済ます方法(メモ帳があればできる)もあるのですが、インテリセンスが使えないし、メソッドやプロパティを調べるのも面倒なので、あまりお勧めできません。(記述に結局時間がかかる) ただ、雰囲気を味わうのにはいいので、サンプルコードを書いてみました。以下のコードをコピーして、メモ帳にペーストし、テキスト形式で、拡張子を.vbsにして保存。ダブルクリックして実行してください。

** Cドライブ直下にtext.xlsという名前のダミーファイルを置いてください。
** xlApp.visible= FalseのところをTrueにすると可視です。

このコードにはありませんが、ファイルやディレクトリ内情報の取得や操作、エクセルのコントロールなど全く問題なく実現可能です。主要部分をエクセル側にマクロを置いて処理させてもよいと思います。

'Excel起動
Set xlApp = CreateObject("Excel.Application")
'True=可視 False=不可視 デフォルトはFalse
xlApp.visible= False

'処理開始(本来は全書類が終わるまでループ)

'ファイルを開く
Set xlBook =xlApp.Workbooks.Open("C:\test.xls")
'行列変換(もどき)
Set xlSheet1 =xlBook.WorkSheets(1)
Set xlSheet2 =xlBook.WorkSheets(2)
xlSheet1.cells(1,1)="test1-1"
xlSheet1.cells(1,2)="test1-2"
xlSheet2.cells(1,1)=xlSheet1.cells(1,1)
xlSheet2.cells(2,1)=xlSheet1.cells(1,2)

'確認表示(通常不要)
msgbox xlSheet2.cells(2,1).value
'保存
xlBook.Save
'閉じる
xlBook.Close
'処理終了

'Excel終了(必ず入れる)
xlApp.Quit
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!