みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB6.0からExcel結合セルへ書出しについて

はじめまして。

[環境]
Windows2000
VB6.0
Excel2000

[主な参照設定]
Microsoft Excel 9.0 Object Library
Microsoft Activex Data Object 2.1 Library
Microsoft Office 10.0 Object Library
Microsoft Access 9.0 Object Library
Microsoft ADO Ext. 2.8 for DDL and Security

[処理ルーチン]
Access2000からデータを取得→固定FormatのExcelを起動→Excelにデータを書出し

[質問]
・VB6.0からExcelにデータを書き出しているのですが、セル(書式設定の動作)について質問させて下さい。
単一のセルに対して、データの書出しは問題ないのですが、結合されているセル(B20:G20)に対して文字を挿入しようとするとうまく反映できませんでした。
で、「セルの書式設定→配置→セルの結合を解除」文字を挿入「セルの書式設定→配置→セルを再度結合」って処理を考えていたのですが、うまく動作しません。

もっと簡単な解決方法があるのでしょうか?
※よろしければ簡単なソースで例て教えて頂けないでしょうか?

投稿日時 - 2006-06-06 12:01:54

QNo.2198673

すぐに回答ほしいです

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

・Range("B20:G20").Cells(1,1).Value = Var

・Range("B20:G20")(1).Value = Var

結合セルの場合は、一番最初のセル、この例の場合はB20セルに対して代入を
行います。Range オブジェクトの Cells プロパティーを使います。

Range("B20:G20").Cells(1,2) なら C20 セルの Range オブジェクトが参照
されます。

Rangeオブジェクト.Cells([RowIndex],[ColumnIndex]).Value = Var

投稿日時 - 2006-06-06 12:18:21

お礼

丁寧な説明でわかりやすかったです。
ありがとう御座いました。

投稿日時 - 2006-06-06 13:19:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

結合セルの座標は「左上のセル位置」を指定します。
B20:G20 なら B20 になります。

Range("B20") = "A"

または、結合セルに対応したプロパティを使用する。
Range("C20").MergeArea = "B"

投稿日時 - 2006-06-06 12:16:35

お礼

無事解決致しました。

というか私がDDEを使用して値の代入を行っていた為に
起こった不具合だと自己解決致しました。
お騒がせしてすみません。
[旧ソース]
intChan1 = DDEInitiate("Excel", "System") ' リンクを設定します。
Shell "" & EXCEL_PATH & " " & EXCEL_NAME & "", 1
  If Err Then Exit Sub
intChan1 = DDEInitiate("Excel", "System")
'End If
strTopics = DDERequest(intChan1, "Selection")
strSheetName = Left(strTopics, InStr(1, strTopics, "!") - 1)
DDETerminate intChan1
intChan1 = DDEInitiate("Excel", strSheetName)
DDEPoke intChan1, "R20C2", "" & strMoj(10) & ""
DDETerminateAll
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[新ソース]
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\DDE\data.xls")
Set xlSheet = xlBook.Worksheets(1)

xlApp.Visible = True 'Excelを表示
xlSheet.Cells(20, 2).Value = "test"

xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

投稿日時 - 2006-06-06 13:18:17

あなたにオススメの質問