![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルvbaでadoを使って他ファイルの件数を取得することは可能でしょうか?
もともと件数を取得したいファイルは共有フォルダに入っていて、
開くのにすごく時間がかかるのでADOで試みたいのです。
しかしうまくいきません。
当方の環境は
Win7、エクセル2010です。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
を参考にしたのですが、
Const cnsProvider = "Microsoft.Jet.OLEDB.4.0"
Const cnsExtProp = "Extended Properties"
Const cnsExcel = "Excel 8.0"
Const cnsDBName = "D:\Book1.xlsx" 'ローカルでテスト
Sub ADO_WS_TEST1()
Dim dbCon As ADODB.Connection
Dim dbRes As ADODB.Recordset
Dim GYO As Long, COL As Long
Dim strSQL As String
' Connection生成
Set dbCon = New ADODB.Connection
With dbCon
.Provider = cnsProvider
.Properties(cnsExtProp) = cnsExcel
.Open cnsDBName
End With
の
.Open cnsDBNameの部分で、
実行時エラー-2147467259
外部テーブルのフォーマットが正しくありません。
となります。
Excel 8.0が原因なのでしょうか?
オフィス2010でもExcel 8.0でいいのでしょうか?
ココがうまく通ったら、
"SELECT * FROM [Sheet1$]"の部分をCOUNTにして
件数が取得できるかなー
と思うのです。
リンク先を読むと、adoでやってもあまり早くはならなそうですが一応やってみたいのです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
"Microsoft.Jet.OLEDB.4.0" を "Microsoft.ACE.OLEDB.12.0" に
"Excel 8.0" を "Excel 12.0" に変更してみてください。
Sub try()
Const adOpenStatic = 3
Const sProvider = "Microsoft.ACE.OLEDB.12.0"
Const sExtended = "Excel 12.0"
Const sDtSource = "D:\Book1.xlsx"
Const sSQL = "SELECT * FROM [sheet1$]"
Dim wkCon As Object
Dim wkRst As Object
Set wkCon = CreateObject("ADODB.Connection")
With wkCon
.Provider = sProvider
.Properties("Extended Properties") = sExtended
.Properties("Data Source") = sDtSource
.Open
End With
Set wkRst = CreateObject("ADODB.Recordset")
wkRst.Open sSQL, wkCon, adOpenStatic
Debug.Print wkRst.RecordCount
wkRst.Close
wkCon.Close
Set wkRst = Nothing
Set wkCon = Nothing
End Sub
やはり"Excel 8.0"ではダメなようですね。
そして"Microsoft.Jet.OLEDB.4.0"もダメなのですか。
この部分だけではなく、サンプルコードまで作っていただきありがとうございます。
無事件数の取得ができました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでアクセスファイル...
-
CSVファイルでVBAを動かす方法
-
エクセルでファイルを閉じても...
-
ExcelファイルがDoxillionに突...
-
エクセルを開いたときのシート
-
Lotus 1-2-3のファイルをExcel...
-
共有しているEXCELシートのアク...
-
エクセルの塗りつぶしの色が勝...
-
エクセルの添付ファイルに記入...
-
エクセルファイルに勝手に数字...
-
エクセルで複数のブックで「元...
-
エクセルで文字の色を変えよう...
-
エクセルの中にエクセルを添付...
-
エクセルのシートが常に小さく...
-
CSVの最終行は?
-
エクセルを開くと二重起動する
-
複数のエクセルファイルからデ...
-
アクセシビリティ:検討が必要
-
エクセルのファイルを開くと部...
-
同じ名前のファイルがすでに開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでファイルを閉じても...
-
共有しているEXCELシートのアク...
-
エクセルVBAでアクセスファイル...
-
エクセルで 例えば 伊藤と名前...
-
Lotus 1-2-3のファイルをExcel...
-
エクセルで複数のブックで「元...
-
400KBのエクセルは重いの?
-
エクセルを開いたときのシート
-
エクセルにクリックすると指定...
-
【マクロ】フォルダからエクセ...
-
エクセルファイルがファイルの...
-
ExcelファイルがDoxillionに突...
-
エクセルの添付ファイルに記入...
-
Windows10で、ほかのWindowsで...
-
過去の定額郵便貯金の金利表
-
エクセルの塗りつぶしの色が勝...
-
エクセルの中にエクセルを添付...
-
メモ帳(拡張子log)の数字デー...
-
CSVファイルをカンマ区切りのテ...
-
開くと警告の出るExcelファイル...
おすすめ情報