ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。m(_ _)m

VBにてEXCELシートを作成し、それを既存ファイルのシートに追加し、保存したいと考えています。
・既存ファイルがなけれが新規作成
・既存ファイルに同名のシートがあれば上書きするか、シ ート名を変更するか聞く


私が考えた流れは、
1.既存ファイルを開く
2.新しいシートを追加する
3.シートの名前をつける
4.既に同名シートがあれば上書きの有無を聞く
5.VBで作ったEXCELシートを既存ファイルのシートにコピー
6.既存ファイルを更新
7.EXCELを閉じる
です。

まず、既存シートはコモンダイアログで探し、追加したい既存シートを開くところまではできました。
ただ、 シートを追加しようとすると文字が赤くなって怒られました。
いろいろ調べた結果の文章なので、どうしてここで赤くなるのかが解読できません。

Dim objBook2 As Excel.Workbook
Dim objSheet2 As Excel.Worksheet


Set objBook2 = objExcel.Workbooks.Open(CDl.FileName)
objBook2 .Visible = True
Set objSheet2 = objBook2.Worksheets(1)
Sheets.Add(after:=Worksheets(Worksheets.Count))
↑ここでだめでした。

一気にコピーしたほうがいいのかとも思い、下記を記入しましがだめでした。
objSheet.Copy After:=CDl.FileName.Sheets(CDl.FileName.Sheets.Count)

長々とかきましたが、どなたかEXCELシートを追加する記述方法を教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

これでできましたよ。

(ダメだったって行だけ)
Call objBook2.WorkSheets.Add(,objBook2.Worksheets(objBook2.Worksheets.Count))

ポイント:
1.MSDNあたりのサンプルをごらんになったんでしょうが、そのサンプルはVB.NETじゃなかったですか?いいところまで行ったんですが、あと一歩だったようです。
2.Addの引数に、いきなり","が入っているのがポイントです。"After:="は、「名前付き引数の"After"にはこれを突っ込め」です。C#のサンプルからAfterは第二引数に当ると推測されたので、最初に空のパラメータを渡しました。
3.No.1の方のご指摘どおり、Addの後に括弧をつけるなら、頭に"Call "が必要です。"Call "をつけたくないなら、括弧をつけてはいけません。

蛇足:Visible のところ、"."のまえにSpaceが居ますが、ホンモノ大丈夫ですよね。
    • good
    • 0
この回答へのお礼

詳しい解答ありがとうございますm(__)m
とても参考になりました。

同じシートの追加でもこんなに種類があるんですね。(初心者発言ですみません)

これで、Addの使い方がわかりました。

ご心配頂いた「 .Visible」のスペースは、転記の際に入ってしまったようです。
ご心配ありがとうございます。
ただ、このままだとNo.3の方のご指摘の通りうごきませんでしたが。。。

お礼日時:2005/04/25 09:21

もし直すなら、私なら、こんな風かな。


以下は、単独で開いている場合です。

Dim objExcel As Excel.Application '一応隠れている部分を出しました。
Dim objBook2 As Excel.Workbook
Dim objSheet2 As Excel.Worksheet
Set objExcel = New Excel.Application
Set objBook2 = objExcel.Workbooks.Open(CDl.FileName)
  objExcel.Visible = True  '←ここ
Set objSheet2 = objBook2.Worksheets(1)
  objBook2.Worksheets.Add after:=Worksheets(Worksheets.Count)

私は、その元のコードが良く分からないところがあります。
「objBook2.Visible = True」です。
 objBook2 は、Workbook ですが、このメンバに、.Visible はありましたか?
 それは、Application のメンバだから、objExcel.Visible になるのではないでしょうか?もちろん、Visibleにする必要性があれば、ということで、なくても、保存すれば、シートは追加できますけれど。
    • good
    • 1
この回答へのお礼

早速の解答にもかかわらず御礼が遅れてしまい失礼致しました。m(__)m

シート無事追加できました。

あと、Visible のところですが、シートが追加されてるのか確認したくて Visible = True としていました。
ただ、ご指摘の通りobjBook2 = True  では
「オブジェクトはプロパティとメソッドをサポートしていません」といわれました。

基本的なところが分かっていないようです。。。

たすかりました。ありがとうございました。

お礼日時:2005/04/25 09:10

Addメソッドを括弧でくくってしまっているのが原因だと思います。


Call Sheets.Add(after:=Worksheets(Worksheets.Count))

Sheets.Add after:=Worksheets(Worksheets.Count)
を試してみてください。
    • good
    • 0
この回答へのお礼

解答ありがとうございます。
そしてお礼が遅れ失礼致しました。

Addはかっこでくくってはいけないんですね。。。

括弧を外したらうまくいきました。

助かりました、ありがとうございましたm(__)m

お礼日時:2005/04/25 09:13

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBでEXCELのシートのコピーに関して

同一Book内で、シートのコピーをしようと考えて、幾つかのHPを参考に、以下のような
記述をしました。

その際に、以下の記述をした場合、本来はコピー先のシート名を変更したいにも関わらず、コピー
元のシート名が変わってしまいます。

追加したシートの名前を変更させるには、どのような書き方にすれば良いでしょうか?

自分で記述しておきながら、どのように対応したら良いかわからず。。。

また、以下のような記述をした場合、追加したセル側のシートを操作したいにも関わらず、
コピー元のシートを書き換えてしまいます。

追加したシートのセルを操作したい(値を入力)ような場合は、どのような記述を
すれば良いでしょうか。。。

ご教授頂ければと思います。

'既存のEXCELファイルを開く
Dim xlFilePath As String = "C:\test.xls"

'起動時の処理
Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath)

'確認のためExcelのウィンドウを表示する
xlApp.Visible = True

Dim xlSheets As Excel.Sheets = xlBook.Worksheets
Dim xlSheet As Excel.Worksheet = CType(xlSheets.Item(1), Excel.Worksheet)
Dim xlSheet2 As Excel.Worksheet = xlBook.Worksheets(1)

'シートのコピー
xlSheet.Copy(After:=xlSheet2)

'シートに名前を付ける
xlSheet.Name = "TEST"

Dim xlRange As Excel.Range

'データの入力セル範囲
xlRange = xlSheet.Range("A1:A1")

'セルへデータの入力
xlRange.Value = “AABBCC”

同一Book内で、シートのコピーをしようと考えて、幾つかのHPを参考に、以下のような
記述をしました。

その際に、以下の記述をした場合、本来はコピー先のシート名を変更したいにも関わらず、コピー
元のシート名が変わってしまいます。

追加したシートの名前を変更させるには、どのような書き方にすれば良いでしょうか?

自分で記述しておきながら、どのように対応したら良いかわからず。。。

また、以下のような記述をした場合、追加したセル側のシートを操作したいにも関わらず、
コピー元のシートを書き...続きを読む

Aベストアンサー

う~ん
サンプルのステートメントをよく噛みしめていますか?
現在のシート数はどうやって求めましたか?
Worksheets.Count ですよね。これが常に現在の
シート数を持っているのです。コピーして、シートが
増えたらこのCountプロパティも増えます。
論理的には以下のようなコードになるでしょう。

Dim 現シート数 As Integer
Dim 最終シート As Excel.Worksheet
Dim 最新シート As Excel.Worksheet

Do
  '末尾にシートをコピーする
  現シート数 = xlBook.Worksheets.Count
  最終シート = xlBook.Worksheets(現シート数)
  xlSheet.Copy(After:=最終シート)
  最新シート = xlBook.Worksheets(現シート数 + 1)
  '***** 何らかの処理 *****
  If 終了 Then Exit Do
Loop

尚、最初からシート数が分かっているような実務は
殆どありませんよ。30年以上この商売してますが、
そんなのは1回あったかなかったくらいです。

ついでに言うと、複数形のものはコレクション、
単数形のものはオブジェクトと言います。
Workbooksはコレクションで、Workbookの集合です。
だから、Count(個数)があり、メンバを追加する意味で
Add(新規ブック作成)やOpen(既存ブックを開く)という
メソッドがあります。メンバを減らすのはCloseです。
同様にシートもWorksheetsとWorksheetがあります。
AddやCopyでメンバが増え、Deleteで削除されます。
コレクションからはインデックスか名前を指定すると
オブジェクトが得られます。上記もインデックスで
コレクションからオブジェクトを得ていますよね。
こういう関係を知らないと正確なプログラムは作れ
ません。

う~ん
サンプルのステートメントをよく噛みしめていますか?
現在のシート数はどうやって求めましたか?
Worksheets.Count ですよね。これが常に現在の
シート数を持っているのです。コピーして、シートが
増えたらこのCountプロパティも増えます。
論理的には以下のようなコードになるでしょう。

Dim 現シート数 As Integer
Dim 最終シート As Excel.Worksheet
Dim 最新シート As Excel.Worksheet

Do
  '末尾にシートをコピーする
  現シート数 = xlBook.Worksheets.Count
  最終シート = xlBook.Worksh...続きを読む

QVBの処理結果をEXCELシートへ出力したい

VB6で処理した結果を、EXCELシートへ編集しプリンターへ出力する方法を教えて下さい。
(1)VBからEXCELをどのようにして、起動させるのか。
(2)EXCELファイルのオープンはどのようにするのか。
(3)BVとEXCEL間の制御が分らない。

Aベストアンサー

こんなかんじでしょうか。

Sub test()

Dim oXl As Object 'Excel
Dim FileNM As String 'ファイル名
Dim BookNM As String 'ブック名
Dim SheetNM As String 'シート名

FileNM = "c:\test.xls" 'ファイル名

Set oXl = CreateObject("Excel.Application") 'excel起動
oXl.Workbooks.Open (FileNM) 'ブックを開く
BookNM = oXl.ActiveWorkbook.Name 'ブック名を取得
SheetNM = oXl.ActiveSheet.Name 'シート名を取得

oXl.Workbooks(BookNM).Worksheets(SheetNM).Cells(1, 1).Value = "test" 'A1セルに「Test」をセット
oXl.Workbooks(BookNM).Save '保存
oXl.Visible = True '表示

'oXl.Workbooks(BookNM).Close '閉じる
'oXl.Quit '終了
'Set oXl = Nothing '解放

End Sub

こんなかんじでしょうか。

Sub test()

Dim oXl As Object 'Excel
Dim FileNM As String 'ファイル名
Dim BookNM As String 'ブック名
Dim SheetNM As String 'シート名

FileNM = "c:\test.xls" 'ファイル名

Set oXl = CreateObject("Excel.Application") 'excel起動
oXl.Workbooks.Open (FileNM) 'ブックを開く
BookNM = oXl.ActiveWorkbook.Name 'ブック名を取得
SheetNM ...続きを読む

Q【VB6】EXCELのシート名を変更したい

お世話になっております。

VB6(visual basic 6)プログラムからEXCELのシート名を指定したいです。

EXCEL:EXCEL 2000
OS: win XP

以下の記述ではシート名がデフォルトのままです。
(sheet1のままで変更できていない)

Dim fs As Object
Dim oApp As Object

Set oApp = CreateObject("Excel.Application")'EXCEL起動
oApp.Visible = True
oApp.UserControl = True
oApp.Workbooks.Add '新規のワークシートsheet1を追加する
oApp.Cells(1, 1) = "シート名を指定したい!" 'セル入力はできた
oApp.Sheets("sheet").select
oApp.Sheets("sheet").Name = "新シート名"

ご覧のように
(1)自動EXCEL起動して
(2)セル1,1に文字入力して
(3)シート名を指定
しようとしております。
セル(1,1)に「シート名を指定したい!」は入力されております。
ブック名(ファイル名)はデフォルトのBook1.xlsです。

シート名の指定方法が間違っているからうまくいかないと思っております。

どうぞよろしくお願いいたします。

お世話になっております。

VB6(visual basic 6)プログラムからEXCELのシート名を指定したいです。

EXCEL:EXCEL 2000
OS: win XP

以下の記述ではシート名がデフォルトのままです。
(sheet1のままで変更できていない)

Dim fs As Object
Dim oApp As Object

Set oApp = CreateObject("Excel.Application")'EXCEL起動
oApp.Visible = True
oApp.UserControl = True
oApp.Workbooks.Add '新規のワークシートsheet1を追加する
oApp.Cells(1, 1) = "シート名を指定...続きを読む

Aベストアンサー

以下の行ですが、
oApp.Sheets("sheet").select
oApp.Sheets("sheet").Name = "新シート名"

シート名はsheetになっていますが、実際にはsheet1で開かれていませんか?
(sheet1に変えたらOKでした)

一番綺麗な形は、元のシート名も取得して使うのがベターかと思われますが・・・(参考URL参照ください)

参考URL:http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv202.html#3

QVB6 配列を初期化したい

VB6でループさせて配列に値を入れて、計算させて最終的に求めたい値をRとします。そのときループで繰り返すためか同じ配列に値を入れてどんどん値がでかくなりRの値がおかしくなってしまいます;
おそらく問題は一回前に入れた配列がそのままのこってしまってるからなのだと思うのですが;
配列の中の値をクリアする方法はないものでしょうか?
一応、配列=0として初期化しようとしても値は変わらず前のが残ったままになってしまっています;
どなたかわかる方いらっしゃいましたらご回答宜しくお願いします

その他何かいい方法があればそれも教えていただけたらと思います

Aベストアンサー

Eraceステートメントを使用

  Dim a() as Long
  Dim s(100) as String
  Dim x() as Long

  Erase a     ’要素が0になる
  Erase s     ’要素が""になる

  Redim x(100) as Long

  Erase x      ’メモリを解放

注)VB2005の場合は動作が異なるので注意して下さい。

QVBでエクセルに罫線を引くには?

VBからエクセルの表に罫線を引くようにしたいのですが、
使用しているVBが VB2010 Expressだからか、色々検索して試しても、
エラーが出てしまい、やり方が分からなくて困っています。

ちなみに関係ないとは思いますが、エクセルは2007を使用しています。

Aベストアンサー

こんばんは。

まずは基本的なことの確認をします。

・Excelへの参照設定はできていますよね?
 できてないなら、「ソリューションエクスプローラ」から該当のプロジェクトを右クリックし、
 「参照の追加」から「COM」タブで「Excel 12.0 Object Library」を選択して「OK」をクリックし
 ておいてください。

・VBでExcelを操作するのはなかなかやっかいです。Excelのマクロの記録は役には立ちますが
 そのままでは使用できません。

・また、いちいち「Select」しなくても罫線くらいは引けます。

以下のコードは、新しいExcelを開いてブックを追加し、Sheet1のA1:B2のセル範囲を太罫線で囲みます。

Imports Microsoft.Office.Interop.Excel
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim AppExcel As New Microsoft.Office.Interop.Excel.Application
AppExcel.Visible = True
Dim WB As Workbook
WB = AppExcel.Workbooks.Add
Dim WS As Worksheet
WS = WB.Worksheets(1)
With WS.Range("A1:B2")
With .Borders(XlBordersIndex.xlEdgeLeft)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeTop)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeBottom)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeRight)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
End With
End Sub
End Class

こんばんは。

まずは基本的なことの確認をします。

・Excelへの参照設定はできていますよね?
 できてないなら、「ソリューションエクスプローラ」から該当のプロジェクトを右クリックし、
 「参照の追加」から「COM」タブで「Excel 12.0 Object Library」を選択して「OK」をクリックし
 ておいてください。

・VBでExcelを操作するのはなかなかやっかいです。Excelのマクロの記録は役には立ちますが
 そのままでは使用できません。

・また、いちいち「Select」しなくても罫線くらいは引けます。

以下のコ...続きを読む

QVBからExcelに書き込む方法

こんにちは。VB6.0(SP5),Excel2000,Win2000でVBの勉強をしています。
VBでコマンドボタンを押した時に、テキストボックスのデータを、Excelに書き込みたいと思っています。
特定のExcelに書き込むことは「GetObject」で出来たのですが、名前がわからない場合はどうしたらよいのでしょうか?

※ExcelはVBから起動したものではなく、人が任意のファイルを起動しています。Excelの名前はわかっていません(任意なので、何かわかりません)

このような場合に、VBから書き込むのは可能なのでしょうか?
よろしくお願いします。

Aベストアンサー

'Microsoft Excel への参照を格納する変数を宣言します。
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet


'Microsoft Excel が既に起動されているかどうかを調べます。
'第 1 引数を指定せずに GetObject 関数を呼び出すと、
'アプリケーションのインスタンスへの参照が返されます。
'Microsoft Excel が起動されていないと、エラーが発生します。
Set xlApp = GetObject(, "Excel.Application")

If Err.Number Then
MsgBox "Excel が起動されていません。"
' エラーが発生した場合は Err オブジェクトをクリアします。
Err.Clear
Else
' MsgBox "Excel はすでに起動中です。"
Set xlBook = xlApp.Workbooks.Item(1)
Set xlSheet = xlBook.Worksheets.Item(1)

xlSheet.Cells(3, 5) = Me.Text1.Text
End If

上記のプログラムで開いてるエクセルの1つめのブックの1つめのシートにテキストボックスのデータが書き込まれます。
いかがでしょうか?

'Microsoft Excel への参照を格納する変数を宣言します。
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet


'Microsoft Excel が既に起動されているかどうかを調べます。
'第 1 引数を指定せずに GetObject 関数を呼び出すと、
'アプリケーションのインスタンスへの参照が返されます。
'Microsoft Excel が起動されていないと、エラーが発生します。
Set xlApp = GetObject(, "Excel.Application")

If Err.Nu...続きを読む

QVBからEXCELのセルの値を取得する方法

VBからEXCELファイルのあるセルの値を取得すると、本来の書式設定とは
違った形式で取得されてしまいます。
VBから値を取得する方法を教えて下さい。

*EXCELファイルのセルの設定

 セルの書式設定-ユ-ザ-定義-[h]:mm
  (時刻ではなく、時間として設定しています)

これをVBから普通に取得すると「1.7523548785」などといった
数値になってしまいます。

Aベストアンサー

[Worksheets(1).Cells(1,1).Value]や[Worksheets(1).Cells(1,1)]
ではなく

Worksheets(1).Cells(1,1).Text
で取得

QVB6.0-整数と余りを求める

表題の通り、整数と余りを求める関数を教えてほしいです:例:100/60=1余り40
整数:1
余り:40
よろしくお願いいたします。

Aベストアンサー

Dim A,B,C,D as integer
A=100
B=60
C=Int(A/B) <---答は1
D=A mod B

●IntはAをBで割った時の整数部分を求める関数ですが、答が負の場合は
注意が必要です。 例 Int(-100/40)=-2
これを回避する場合 Fixがいいです

●mod は A を B で割った時の余りを求める関数

QVBで既存エクセルシートを新規ブックにコピー

VB6,Excel2003です。
既存のエクセルシートを新規ブックにコピーする
プログラムを作成してみましたが
タスクバーに新規ブックのタスクバーボタンが2つできてしまいます。
どこが原因か教えてください。よろしくお願いします。

Private Sub Command1_Click()
Dim xlsApp As Excel.Application
Dim xlsBookTemp As Excel.Workbook 'コピー元ブック
Dim xlsBookCopy As Excel.Workbook 'コピー先ブック
Dim xlsSheetTemp As Excel.Worksheet 'コピー元シート
Dim xlsSheetCopy As Excel.Worksheet 'コピー先シート

Set xlsApp = CreateObject("Excel.Application")
Set xlsBookTemp = xlsApp.Workbooks.Open("C:\Temp.xls")
Set xlsSheetTemp = xlsBookTemp.Sheets(1)
Set xlsBookCopy = xlsApp.Workbooks.Add
Set xlsSheetCopy = xlsBookCopy.Sheets(1)

xlsApp.Visible = True
'コピー元のSheet1を新規ブックにコピーする
xlsSheetTemp.Copy Before:=xlsSheetCopy
'コピー元のブックは閉じる
xlsBookTemp.Close

'///新規ブックの編集処理///

Set xlsSheetTemp = Nothing
Set xlsBookTemp = Nothing
Set xlsSheetCopy = Nothing
Set xlsBookCopy = Nothing
Set xlsApp = Nothing
End Sub

VB6,Excel2003です。
既存のエクセルシートを新規ブックにコピーする
プログラムを作成してみましたが
タスクバーに新規ブックのタスクバーボタンが2つできてしまいます。
どこが原因か教えてください。よろしくお願いします。

Private Sub Command1_Click()
Dim xlsApp As Excel.Application
Dim xlsBookTemp As Excel.Workbook 'コピー元ブック
Dim xlsBookCopy As Excel.Workbook 'コピー先ブック
Dim xlsSheetTemp As Excel.Worksheet 'コピー元シート
...続きを読む

Aベストアンサー

またまた登場、onlyromです。

>'///新規ブックの編集処理///の中には今は何も記入していません
>VBを終了してやりなおすと、2つ表示されてしまいました

おかしいですね。
ということでブレークポイントをセットしてどこでそうなるかみてみないと。

Set xlsApp = CreateObject("Excel.Application")
▲▲xlsApp.Visible = True
Set xlsBookTemp = xlsApp.Workbooks.Open("C:\Temp.xls")
Set xlsSheetTemp = xlsBookTemp.Sheets(1)
●●Set xlsBookCopy = xlsApp.Workbooks.Add
Set xlsSheetCopy = xlsBookCopy.Sheets(1)

'コピー元のSheet1を新規ブックにコピーする
xlsSheetTemp.Copy Before:=xlsSheetCopy
'コピー元のブックは閉じる
●●xlsBookTemp.Close


▲▲のところに、xlsApp.Visible = True を移動
●●のところに、ブレークポイント

少なくともこれでどの時点で、質問の件が起こるかわかりますよね。


そしてそれが済んだら、
ブレークポイントを外して、
▲▲xlsApp.Visible = True を
●●xlsBookTemp.Close の後に移動
要するにコピーが済んでTempをクローズしてから、ExcelをActiveにするということです。

以上2つを試してみてください。
 

またまた登場、onlyromです。

>'///新規ブックの編集処理///の中には今は何も記入していません
>VBを終了してやりなおすと、2つ表示されてしまいました

おかしいですね。
ということでブレークポイントをセットしてどこでそうなるかみてみないと。

Set xlsApp = CreateObject("Excel.Application")
▲▲xlsApp.Visible = True
Set xlsBookTemp = xlsApp.Workbooks.Open("C:\Temp.xls")
Set xlsSheetTemp = xlsBookTemp.Sheets(1)
●●Set xlsBookCopy = xlsApp.Workbooks.Add
Set xlsSheetCopy = x...続きを読む

QVBから既存のExcelファイルを更新したい

VisualBasicのコーディングで既存のExcelファイルを開き、変更を加えた後同一ファイルに上書き保存したいのですが...
CreateObjectだと新規作成しか出来ないし、GetObjectで上書き保存するとExcelのページ違反が発生し強制終了されました。誰か詳しい方のアドバイスを待っています。
ついでに、保存時の上書き確認メッセージを表示しないようにする方法もわかれば教えていただきたいのですが...

Aベストアンサー

参照設定で、Microsoft Excel9.0 Object Library 二チェックを付けてから、下記のようにコーディングします。

Private Sub Command1_Click()
  Dim ExcelApp As New Excel.Application
  Dim mySheet As Excel.Worksheet
  ExcelApp.Workbooks.Open "C:\Folder1\book1.xls"
  Set mySheet = ExcelApp.Workbooks(1).Worksheets("Sheet1")
  'Z1とZ2のセルに値を入力
  mySheet.Range("Z1") = 1
  mySheet.Range("Z2") = 2
  '上書き保存してから閉じる
  ExcelApp.Workbooks(1).Save
  ExcelApp.Workbooks(1).Close
  Set ExcelApp = Nothing
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング