Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
VBAでADOでシート名を取得する場合
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30807#CommentId85477
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
snowmansnow
 (社会人)
投稿日時
2022/10/21 21:18:31
こんばんは、いつもありがとうございます
>CreateObject("Excel.Application") では都合が悪いという状況でしょうか。
いっぱいほぼ一緒の形式のファイルがあり、値もほぼ一緒の位置にあります。
できれば開けずに、値を集約したかったです。
>> ワークブックの一番左のシート名の取得
>> (sheets(0).name みたいな)
>Excel のワークシートは 1 から始まるものだったはずでは…?
これは、自分でも気づいて修正させていただきました。
>> Set adoCat = New ADOX.Catalog
>ADODB は参照設定なしで動くようにしているのに、
>ADOX の方は CreateObject を使わず、参照設定を必須にしている点に違和感があります。
Dim adoCat As ADOX.Catalog
または Set adoCat = CreateObject("ADOX.Catalog")
に、修正する形でよろしいでしょうか?
>試しに、シート名の配列を返すようにしてみました。
>今回は Excel のように 1 から始まる番号で返すようにしています。
シート名で並び替え済なのか、エクセルのシート順を変えても順が変わりません。
シートがA、B、Cという並びでも
シートがC、A、Bという並びでも
A
B
C
というように返してくるようでした
シートがA、B、Cという並びでは
A
B
C
シートがC、A、Bという並びでは
C
A
B
を返すようにならないでしょうか?
自分のADOXでも、SNoを調節しなくては、目的の値が取得できていません。
あるファイルでは、SNo=1、あるファイルでは、SNo=2というように
>ReDim sheetNames(1 To rs.RecordCount)
が、エラー(値が-1)になり、100決め打ちでエラー回避してみました。