[リストへもどる]
一括表示

投稿時間:2004/06/09(Wed) 16:47
投稿者名:ひろぽん
Eメール:
URL :
タイトル:
DAOでのEXCEL使用について
初めまして、ひろぽんと言います。
DAOにてEXCELファイルを読込、更新する方法はこのHPでの方法を
参考にさせて頂きました。ありがとうございます。
ここからが質問なのですが、DAOにて読み込んだEXCELファイルに
列を挿入したいのですが、どの様な方法がありますか?
過去ログも参照させて頂いたのですが、ちょっと思いつかないので
よろしくお願い致します。
開発環境はWin98SE、VB6.0sp5です。

投稿時間:2004/06/09(Wed) 17:31
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: DAOでのEXCEL使用について
> ここからが質問なのですが、DAOにて読み込んだEXCELファイルに
> 列を挿入したいのですが、どの様な方法がありますか?

試していませんが、
  Set Y = X.OpenRecordset("Sheet1$A6:E20", dbOpenDynaset)
のように、セル範囲を指定して読み込ませてみては如何でしょうか?

投稿時間:2004/06/09(Wed) 18:55
投稿者名:ひろぽん
Eメール:
URL :
タイトル:
Re^2: DAOでのEXCEL使用について
回答、ありがとうございました。
早速試してみたのですが、自分の質問の仕方が悪かったせいで思った様に動作しませんでした。
大変申し訳ないのですが、もう一度質問させて頂きます。

 A   B
1  a  10
2  b  20
3  c  30

上記の様なEXCELの表を

 A   B   C
1  a   -  10
2  b   -  20
3  c   -  30

の様にB列を挿入して、B列に値をセットして更新する作業をEXCELを開かないで行いたい場合
どの様な方法があるのでしょうか?
大変わかりずらい質問で申し訳ありませんが、よろしくお願い致します。

投稿時間:2004/06/10(Thu) 10:28
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: DAOでのExcel使用について
C列以降にも情報があれば(セル自体は空データでもOK)、
  Set RS = DB.OpenRecordset("Sheet1$A1:C3")
のようにして、対象セルを読み込めるので、
  RS.Edit
  RS.Fields(2).Value = RS.Fields(1).Value
  RS.Fields(1).Value = "-"
  RS.Update
のようにして、各行毎に処理していく事ができます。


しかし、元のファイルにB列までしかセル情報が無い場合には、
|
| 実行時エラー: 3673
| このテーブルには、このスプレッドシートで定義されている範囲外のセルが含まれています。
|
というエラーになってしまうようです。


また、今回の例の場合、B列は数値しか無いので、この列は数値型と
認識されてしまっています。このため、B列には「1」や「Null」などの
値は代入できても、"-"という文字列は代入できないようです。


…という事で、代替案。

案1) *.xlsファイルを Openステートメントで開いて、BIFFデータを直接編集する。
     http://www.pleasuresky.co.jp/insidexl.php3
     http://support.microsoft.com/default.aspx?scid=kb;EN-US;284441
     http://support.microsoft.com/default.aspx?scid=kb;EN-US;207475

案2) Excel Creatorなどの、市販のExcelファイル操作ツールを用いる。
     http://www.adv.co.jp/PRODUCTS/

案3) 諦めて、Microsoft Excel を呼び出す。

投稿時間:2004/06/10(Thu) 12:12
投稿者名:ひろぽん
Eメール:
URL :
タイトル:
Re^4: DAOでのExcel使用について
丁寧な返答、ありがとうございます。
>
> しかし、元のファイルにB列までしかセル情報が無い場合には、
>
まさしく、この状態なので代替案を参考にさせて頂きやってみようと思います。

投稿時間:2004/06/11(Fri) 11:18
投稿者名:ひろぽん
Eメール:
URL :
タイトル:
Re^5: DAOでのExcel使用について
一応、なんとかなりそうなのでご報告まで

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("c:\book1.xls")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Range(xlInsertCell & "1").Activate
For i = 1 To xlCellCount
  xlApp.Selection.EntireColumn.Insert
  xlApp.ActiveCell = "追加列" & i
Next
xlSheet.SaveAs "c:\book1.xls"
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

補足.xlInsertCell 挿入開始位置
   xlCellCount  挿入列数

の様にEXCELの表に列を挿入してからDAOを使用して更新する様にしました。
ありがとうございました。