• ベストアンサー

VB6.0同一プログラム上で複数のExcelファイルの編集をしたいのですが…

目にとめていただき有難うございます。 VBについては初心者です。宜しくお願い致します。 VB6.0で、フォーム上で指定した2つのExcelファイルについて、それぞれ特定の行・列を削除してCSVとして保存、そのデータを使って処理を行うプログラムを作成しようとしています。 同じVB6.0のプログラム上で、複数のExcelファイルに対して編集をかけることは可能でしょうか。 プログラムの流れとしては (1)エクセルオブジェクトの新しいインスタンスを作成 (2)エクセルファイル1を開き、特定行を削除する (3)エクセルファイル1をCSVとして保存、閉じる (4)オブジェクトを解放する (5)エクセルオブジェクトの新しいインスタンスを作成 (6)エクセルファイル2を開き、特定行を削除する (7)エクセルファイル2をCSVとして保存する (8)オブジェクトを解放する というものです。 (1)~(4)と(5)~(8)は同じSubプロシージャでファイルのパスだけ変えるようにしています。 (1)~(5)迄は素直に行くのですが、(6)の削除行を指定する段階で ‘Rows’メソッドは失敗しました’_Global’オブジェクト と出てしまう状態です。 (1)~(4)は問題なく動き、ファイル1の編集もきちんと出来ているため、混乱しております。 同じコードでパスだけ変えてやろうという考えが無理な話なのか、コードの組み方が悪いのか… 質問で不明瞭点があれば説明させて頂きますのでご指摘下さい。 宜しくお願い致します。 #ソースまで出した方が良かったのでしょうか…

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

>Rows("1:9").Select >Selection.Delete Shift:=xlUp Rowsの前にオブジェクトが必要です。 Excel内では省略出来ますが、VB内では省略不可だと思います。 (1回目で動くのが不思議です(^^;) xlApp.Rows("1:9").Select xlApp.Selection.Delete Shift:=xlUp 又は、xlSheetを使っているなら xlSheet.Rows("1:9").Select xlApp.Selection.Delete Shift:=xlUp これでどうでしょう?

polestar82
質問者

お礼

venzou さま 早速のご回答ありがとうございます。 きちんと動作してくれました! Excelのマクロ自動生成を参考にやっていたので、 基本的な所をわからないままやっておりました… 今後とも宜しくお願い致します。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

(標題の)VB6で起動するにしろ Set xlApp = CreateObject("Excel.Application") を実行した後は、エクセルVBAの世界で、エクセルVBAの質問ですね。 その際はエクセルの世界で処理を始めるのに比べ、オブジェクトの 指定に神経を使う必要があるように思う。 Set xlBook = xlApp.Workbooks.Open(FileName)を定義しているのだから、それなどを最大限に生かし、シートまで特定することが必要でしょう。エクセルではつい暗黙の了解(Defalt)に助けられてますが、 それが通用しなくなる場面が出てくることがあると思う。 >エクセルファイル2を開き エクセルはつまるところシートへの操作です。そのシートが別ブックのシートの場合、同一ブックの別シートの場合があるわけですが、 1つめのSheet、2つめのシートについて、 http://okwave.jp/qa2588902.html で私が書いている Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Workbooks("Book2.xls").Worksheets("4月") Set sh2 = ActiveWorkbook.Worksheets("Sheet1") sh1とsh2のように別にSh1、Sh2を別々に定義するか、Sh1を定義し、処理後にSh1を解消し、上記のSh2の右辺でSh1を再定義する必要があると思う。 そしてSheet、Range、Row、Column関係を指定する場合、そのコードの前部に、「Sh1.」か「Sh1.やSh2.」を必ずつけて記述しないと、正しく動かない場合があると思いますが。

polestar82
質問者

お礼

imogasi さま 早速のご回答ありがとうございます。 お礼が遅くなりましてすみません。 あいまいな知識でプログラムを組んでいるもので、 Excelの機能に助けられておりました… 今後とも宜しくお願い致します。

回答No.2

確認していません。「_Global VBA」でGoogle検索しただけです http://www.tek-tips.com/viewthread.cfm?qid=1309265&page=1 http://www.smallstyle.com/20050124.html

polestar82
質問者

お礼

himajin100000 さま 早速のご回答ありがとうございます。 お礼が遅くなりすみません。参考にさせて頂きます!

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

>同じコードでパスだけ変えてやろうという考えが無理な話なのか、 可能だと思いますよ。 >#ソースまで出した方が良かったのでしょうか… そうですね。 ソースがないと原因が特定できませんので、お願いします。

polestar82
質問者

お礼

すみません、補足漏れがありましたのでこちらに書かせて下さい。  '特定行を削除する Rows("1:9").Select 2つめのファイルを編集中、ここで‘Rows’メソッドは失敗しました’_Global’オブジェクト というエラーが出てきます。 宜しくお願い致します。

polestar82
質問者

補足

venzou さま 早速のお返事ありがとうございます。 以下にソースの概略をお示し致します。 他のプロシージャでファイル名を"FileName"に格納、以下のプロシージャにて編集を行います。 ----------------ここから----------------- Sub editFile() 'FileName 編集対象のExcelファイル名 'FileNameC CSVとして書き出すファイル名 Dim xlApp As Object 'Excel.Application Dim xlBook As Object 'Excel.Workbook Dim xlSheet As Object 'Excel.Worksheet ' エクセルオブジェクトの新しいインスタンスを作成 Set xlApp = CreateObject("Excel.Application") ' ファイル名を指定してワークブックを開く Set xlBook = xlApp.Workbooks.Open(FileName) ' エクセルを表示 xl.Visible = True   '特定行を削除する Rows("1:9").Select Selection.Delete Shift:=xlUp   '他もろもろの作業を実施.......... ChDir Dir1.Path  '保存先のパスを指定しています xlBook.SaveAs FileNameC xlBook.Close ' Excel を終了 xlApp.Quit ' オブジェクトを解放 Set xlBook = Nothing Set xlApp = Nothing End Sub ----------------ここまで----------------- 以上、宜しくお願い致します。

関連するQ&A

  • EXCEL VBAでのCSVファイルの編集

    CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。

  • CSV形式で編集された項目をVBからEXCELシートへ編集し印刷

    CSV形式で編集したテキスト項目(7項目,300行)を、EXCELファイルへ編集し、印刷する方法を教えて下さい。(VBでEXCELシートへ編集し印刷したが、編集から印字までの処理時間が大きいため、帳票データをCSV形式化し、処理速度を高速化したい)簡単なサンプルがあれば助かります。 処理の概要は、以下の通り。 (1)VBで、CSV形式のテキストファイル作成後、 (2)VBからEXCELファイルを開いて (3)CSVのテキストファイルをEXCELシートへ編集 (4)VBから印刷プレビューを出し (5)印刷指示することで 全て、VBから制御する方法

  • VB6.0 で CSVファイルをEXCELで起動

    VB初心者です。 質問内容なのですが、 VBで「ドライブ/ディレクトリ/ファイルリストボックス」を用いて、ファイルボックスから表示されたファイルをクリックしてCSVファイルをEXCELで起動したいプログラムを作成したいのですが、 CSVファイルをクリックしたときにEXCELで起動する部分のプログラムがわかりません。 言葉足らずの部分が多々あるかと思いますが、手が空いたときにでも、御教授を宜しくお願い致します。

  • データファイルの編集

    回答のほうをよろしくお願いします。 過去の投稿にも似たよう内容がいくつかあったのですが、 理解できなかったため再度質問させていただきます。 PerlでCSVファイルのデータファイルで特定行の内容をテキストボックスに表示させて、 内容を編集して上書き保存したいのですが、どんなプログラムになるのでしょうか? 一応、特定行を表示させるとこまでできているのですが、 どうやって特定行のみを上書き保存するのかがわかりません。 Perlは初心者レベルですので、分かりやすい回答をお願いします。

    • ベストアンサー
    • Perl
  • CSVファイルをエクセルで扱うときのカンマの使い方について

    よろしくお願いいたします。 CSVファイルをエクセルで読み込んで、 編集後、またCSVファイルとして保存したいと思います。 CSVファイルをエクセルで読み込んだとき、 エクセルの中の各セルを編集しようとすると、 文字の前にカンマがついていますが、 これがあるのと、ないのでどのような違いが出ますでしょうか。 困っています。 どなたかよろしくお願いいたします。 エクセルで編集時に、カンマを削除してしまうと、 何が起こりますか。 意図したようにCSVとして保存できないのでしょうか。

  • VB6.0でVB上にExcel

    VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

  • VB6.0でのエクセルのセルのクリア

    VB6.0でのエクセルのセルのクリア VB6.0でエクセルからCSVファイルを作成しています。 それ自体はできているのですが、CSVファイルを作成後に 元のエクセルのセルをクリアしたいと思っております。 5行目以降のB・C・D・Eの列に入っている値(すべて数値が 入っています)をBに数値が入っている行までクリアしたいとい うのが希望です。 どういう構文で実行すればよいか、アドバイスいただければ 幸いです。宜しくお願い致します。

  • 特定のCSVファイルを読み込んでAccessへ保存するコードをvb6.

    特定のCSVファイルを読み込んでAccessへ保存するコードをvb6.0で作ろうとしているのですが、csvファイル中に断続的にある空白行(,→皆無)が障害となって整った形ですんなりと保存できません。もちろんその空白行に1つでも文字を入れれば大丈夫なのですが、空白行がある状態ですっきりと取り込むことは可能なのでしょうか?駄文で申し訳ありません。

  • VB6でファイルを開く

    こんにちは。 いま作成中のプログラムなんですが、data.csvというファイルを作って、そのファイルに値をいれていきます。 現在、data.csvはexeファイルのあるフォルダに保存されるようになっています。 このデータを、プログラム中で呼び出して見たいのですが、どうすればよいでしょうか? 第一希望としては、計算処理中に呼び出してExcelに値が入っていくのを見たいです。 が、むりなら計算処理が終了した後でも可です。 よろしくお願いします。

  • VBから、エクセルでファイルを開くには・・・

    またまた、お世話になりますm(__)m 環境はVB.net2003、エクセルは2002でプログラミングの勉強、データ処理をしているのですが、VBでエクセルを開き、そのエクセル上でファイル(csvやテキストなど)を開きたいのですが、VB上でどのように書けばよいのでしょうか? VBでエクセルをたちあげたり、bookやsheetを開くことはできました。 どなたかご教授お願いしますm(__)m

専門家に質問してみよう