• ベストアンサー

プログラムについて

WindowsプログラミングのC++BuilderとVisual Basicでお聞きしたいことがあります。 ExcelファイルをWordファイルに変換したいんですが、 これっていうのはプログラムで変換出来るんでしょうか? 手動でなら保存の時にテキスト形式を選べばいいんですが、かなり量が多いので時間がかかってしまいます。 いろんな参考書を見てがんばってはみたんですが、行き詰まってしまいました。 少しでもアドバイスがいただければうれしいです。 どなたか分かる人や、いいサイトがあれば教えて頂きたいです。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.4

VBからのコントロールですが、yochiさんの回答のVBAの ようにVBから実行します Private Sub Command1_Click() Dim objExcel As Excel.Application Dim objbook As Workbook Set objExcel = CreateObject("Excel.Application") Set objbook = objExcel.Workbooks.Open("C:\TEST1.xls") objbook.Application.DisplayAlerts = False objbook.SaveAs "C:\TEST1.TXT", xlText objbook.Close False objExcel.Quit Set objbook = Nothing Set objExcel = Nothing End Sub で、C++Builderからです //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <utilcls.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- //#include <system.hpp> //#include <vcl\oleauto.hpp> void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString sExcel = "Excel.Application"; Variant excel = CreateOleObject(sExcel); //excel.OlePropertySet("Visible",-1); Variant book = excel.OlePropertyGet("Workbooks").OleFunction( "Open","C:\\TEST1.xls"); excel.OlePropertyGet("Application").OlePropertySet("DisplayAlerts",0); book.OleFunction( "SaveAs","C:\\TEST1.txt",-4158); book.OleFunction( "Close",0); book = Unassigned; excel.OleFunction( "Quit" ); excel = Unassigned; } //--------------------------------------------------------------------------- エラー処理はしてませんので、ご注意を。

yaho
質問者

お礼

プログラムは本当にありがとうございました。 やはりもっと勉強しなくてはいけませんね。 今回は本当にお世話になりました。

yaho
質問者

補足

プログラムまで書いて頂きありがとうございました。 質問なんですが、この回答っていうのはまずVisual Basicで実行してから Builderで続けて実行するんですか? それともBuilder単独でもできますか? Builderだけで実行したんですが、 [C++ エラー] sysvari.h(2583): E2451 Undefined symbol 'TAutoArgs'. [C++ エラー] sysvari.h(2583): E2451 Undefined symbol 'args'. のように、sysvari.hでエラーがかなり出ました。 難しいプログラムだったので、Formにも何を置いていいのか分かりませんでした。 出来れば教えて頂きたいです。 あと、Test1 - Test2 - Test3・・・のように一気にやるには、変換のところを ループで回してやれば出来るんですかね?

その他の回答 (3)

  • yochi
  • ベストアンサー率25% (17/66)
回答No.3

はじめまして m(_ _)m >ExcelファイルをWordファイルに変換したいんですが ExcelならVBAを使用してはいかがですか? 例えば、 ******************************************************************* Option Explicit Sub Samp() ActiveWorkbook.SaveAs Filename:="C:\WINDOWS\デスクトップ\Book1.txt", FileFormat _ :=xlText, CreateBackup:=False End Sub ******************************************************************** 上記は、ExcelのBook1の内容をテキスト形式で保存するものです。これだとWordで開く事が出来ます、この他にCSV形式で保存しても同様な事が出来ますがニュアンスが間違っていればごめんなさい f(^_^;

yaho
質問者

お礼

ニュアンスは大丈夫です。あっています。 大変助かりました。ありがとうございました。 VBだけではなくて、VBAもこれから頑張ります。

  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.2

>量が多い 最初にファイルを選び、 そのすべてに対してExcelで開く-テキスト保存 の処理をする という方法があると思います。

yaho
質問者

お礼

すべてに対してExcelで開く、というところがちょっと分かりにくかったんですが、考えていただいて、ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Excelデータを「コピー」して、WORDへ「貼り付け」ではだめですか?

yaho
質問者

お礼

だめってわけではないんですけどね。 ファイルがたくさんあるから、ちょっとしんどいです。

関連するQ&A