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

投稿時間:2004/06/25(Fri) 16:02
投稿者名:ちょう
Eメール:
URL :
タイトル:
EXCELの指定したセルの情報を得る
”B2”と”D3”とEXCELファイルのパス、以上3つを引数で受け取り、
そのEXCELファイルの中の
2行目から3行目の、B列からD列のセルの情報(この場合6個分のセル)を取得する、
とコーディングしたいのですが、どう書いたらいいのかわからないのですが。。。
ここのBやDをR1C1参照形式の数値にもし変換できればCellsを使って1ずつ加算しながらセルの情報を取得できると思うのですが、
そういった関数は存在するでしょうか?一応過去ログは調べたつもりです。
もしくは他に良いやり方はありますか?
よろしくお願いします。

投稿時間:2004/06/25(Fri) 16:52
投稿者名:ちょう
Eメール:
URL :
タイトル:
Re: 自己解決
以下の方法で解決しました。

    Dim c As Range

    For Each c In objExcelApp.Worksheets("Sheet1").Range("B2:D3")
        MsgBox c.Value
    Next

投稿時間:2004/06/25(Fri) 17:19
投稿者名:ちょう
Eメール:
URL :
タイトル:
Re: 別の問題が。。改行を認識するには。。
以下のように記述し、指定されたEXCELファイルの、
2行目の3行目の、B列〜D列のデータを取得することはできたのですが、
読み込んだEXCELファイルと同じように2行にわたって出力したいのに、
この方法だとCSVの内容は1行にズラズラ書かれてしまいます。
EXCEL側の改行を認識するにはどうすればいいでしょうか?
この方法では駄目なんでしょうか?
よろしくお願いします。

    Dim objExcelApp   As Workbook
    Dim c As Range
    Dim strBuff As String
    
    'エクセル参照
    Set objExcelApp = GetObject("C:\Book1.xls", "Excel.Sheet")

    '書き込むファイルが存在する場合削除
    If Dir(pstrCSVPath) <> "" Then Kill pstrCSVPath

    '書き込むファイルのオープン
    Open pstrCSVPath For Output As #1

    '指定された範囲のデータ読み込み
    For Each c In objExcelApp.Worksheets("Sheet1").Range("B2:D3")
        strBuff = strBuff & c.Value & ","
    Next

    '書き込み
    Write #1, Left(strBuff, Len(strBuff) - 1)       '最後のカンマを外して書き込み

    '書き込むファイルのクローズ
    Close #1

投稿時間:2004/06/25(Fri) 17:50
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: 別の問題が。。改行を認識するには。。
strBuff = strBuff & c.Value & VBCrLf のように改行したい位置に VBCrLf を付加して
見て下さい。

投稿時間:2004/06/25(Fri) 18:08
投稿者名:ちょう
Eメール:
URL :
タイトル:
Re^3: 謎なのは、改行コードではなく
説明が下手ですいません。謎なのは、改行コードではなく、

For Each c In objExcelApp.Worksheets("Sheet1").Range("B2:D3")
strBuff = strBuff & c.Value & ","
Next

のコードで、エクセルの2行目のデータから3行目のデータへ移り変わる瞬間を認識する方法が謎なのです。

エクセルには以下のように入っています。

A列 B列 C列 D列 E列
あ い  う  え お
か き  く  け こ

現在のコーディングだとCSVには、い,う,え,き,く,け
と入ってしまうので、エクセル側のように2行にはならないのです。
どうすればエクセルの改行を認識できるのか。。。

投稿時間:2004/06/25(Fri) 18:15
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re^4: 謎なのは、改行コードではなく
試してませんが、c.Rowとか調べられませんか?
それでRowの値が変わった時にvbCrLfを連結すれば良いと思います。

投稿時間:2004/06/25(Fri) 18:21
投稿者名:ちょう
Eメール:
URL :
タイトル:
Re^5: ありがとうございました!!!
> 試してませんが、c.Rowとか調べられませんか?
> それでRowの値が変わった時にvbCrLfを連結すれば良いと思います。

これで出来ました!ありがとうございました!!!