No.3ベストアンサー
- 回答日時:
あれこれ実験していたら不可解な事が起きました。
一応報告しますね。
EXCEL Sheet1のA1の列に、
FLD1
----
1
2
3
と入力します。
普通にやると、1,2,3は右揃えに表示されますよね。
この状態でRS.Filter="FLD1='2'"とすると問題のエラーが起きます。
書式設定を文字列に変えても。
そうではなくて、
先にA1列の書式設定を文字列に変更。
上の通り入力。
(こうすると左揃えになります。)
そして、その後書式を標準に戻します。
するとなぜか左揃えのままになります。
という状態でRS.Filter="FLD1='2'"をしても問題のエラーは起きません。
一体何がなんだか??
データを書く前に書式を文字列にしておく必要がある・・??という事なんですかね。
あと、参考URLのページにあるデータ型というところにEXCELの場合のデータ型の扱いがかかれてます。
書式設定がどうって事は書いてなかったですが、データ型を指定する方法は無いって書いてあります。
参考URL:http://support.microsoft.com/default.aspx?scid=k …
この回答への補足
少し探しておりましたら、以下のようなサイトが見つかりました。ご参考にしてください。
この度は本当にありがとうございました。
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
付き合ってくださり感謝します。
その通りでしたね。
また、参考URL先のサンプルのExcelADO.exe内のExcelもそうなっていました。
データ型を指定する方法は無く、最初の何行かでフィールドのデータ型が推測されると書いてありました。
よくわかりました。ありがとうございました。バーコードデータの入力(Excelデータベースの更新)はパソコンのパの字もしらないようなユーザーが対象になっており、なるべくスマート(?)に更新させたかったのですが、このような仕様でしたら、仕方ないでしょうね。
No.2
- 回答日時:
意見が無いよりマシくらいに聞いていただければ・・。
私はDAOでEXCELを読み込む事をよくやるんですが、型が一致しないエラーが出るのはその列に数値と文字列が混在している場合に出ます。
MicrosoftのHPによれば、上から(?)8個のデータを見てデータ型を数値なのか、文字列なのか、または他の何かなのかを判断するとか。
EXCELの書式設定には依存しないというような事は明記されてたような・・されてないような・・。
調べて解答すればいいんですけどね。すみません不確かな回答で。
私は仕方がないので、数値の行の先頭に「'」を付けて無理矢理全て文字列にしました。
質問者さんの場合は全部明らかに文字列なのでしょうか?
「Number」という変数を使っているところを見ると数値っぽい値なのかな?と思うのですが。
この回答への補足
回答に感謝します。
検索キーはバーコードの数値です。
Numberという変数にしていたのは数字のJANコードのみを検索していた頃の名残です。修正していないのが心苦しいです。
検索対象列はすべて文字列として入力していますし、「'」で囲めば文字列も扱えると思っていたので質問してみました。
でもExcelの書式設定には依存しないんですね。勉強になりました。
極力検索対象列のセルにバーコード以外のデータはいれたくないのです。なんとかできないものでしょうか?
No.1
- 回答日時:
検索対象のセルの形式が数値なのでしょう。
対象セルの書式が数値のものになっているか、
標準になっていて値が数値と取れるものではないですか?
書式を文字列にすれば間違いないと思います。
この回答への補足
早速の回答に感謝します。
文字列にしてみましたが
一応コードもご覧ください。
Private Function ExcelSearch(Searchkey as String) as Boolean
Dim Cn As ADODB.Connection
Dim Rst as ADODB.Recordset
Dim HitBookMark() as Variant
On Error Resume Next
'Excelへの接続
Set Cn= New ADODB.Connection
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "Excel 8.0;IMEX=1"
'ブック名
.Properties("Data Source") = "ここにExcelファイル名"
'ブックオープン
.Open
End With
'レコードセットの定義
Set Rst = New ADODB.Recordset
With Rst
'シート名
.Source = "Sheet1" & "$"
'静的カーソルを設定
.CursorType = adOpenStatic
'レコードセットオープン(Read Only)
.Open , ExcelInfo.xlApp, , adLockReadOnly, adCmdTableDirect
End With
If Err <> 0 Then
'オープン失敗
MsgBox "Excelオープン失敗"
Err.Clear
Set Rst = Nothing
Set Cn = Nothing
ExcelSearch = False
Exit Function
End If
Redim HitBookMark(1)
With Rst
'検索
.Filter = Rst(0).Name & "=" & "'" & Number & "'"
Do While Not .EOF
k = k + 1
Redim Preserve HitBookMark(k)
HitBookMark(k - 1) = .BookMark
'次の検索
.MoveNext
Loop
End With
If HitBookMark(0) = "" Then
'検索キーなし
ExcelSearch = False
Else
'検索キーあり
ExcelSearch = True
End If
Set Rst = Nothing
Set Cn = Nothing
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Excel(エクセル) Excelについて質問です。 シート1の検索値例えば *ABC* をシート2.3.4から検索して、シ 5 2023/02/17 23:30
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(Microsoft Office) Windows Update 後、Office2019(Word、Excelなど)が消えた 4 2023/01/14 10:28
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) Excelで関数を使って入力した値を、関数を抜いた値として扱いたい 1 2022/07/08 02:10
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
ADOでアクセスのレコードに複数のフィルタをかけるには?
Access(アクセス)
-
[Excel]ADODBでNull変換されてしまう
Visual Basic(VBA)
-
-
4
ado フィルタで 含まない とするには?
Excel(エクセル)
-
5
[ASP+SQL]絞込み済みのレコードセットを一気に計算、SUM?
Microsoft ASP
-
6
VBAで文字列を数値に変換したい
Excel(エクセル)
-
7
ワイルドカード 「Not like」
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
VBAでの Replace関数で、ワイル...
-
EXCELで=より左の文字を一括で...
-
同一セル内に関数と文字列を同...
-
Excelで指数表現しないようにす...
-
UWSCに詳しい方簡単なテキスト...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
エクセル 数値データを桁をそ...
-
エクセルで文字列の最大値を抽...
-
sedなどで、特定の文字列の後の...
-
C言語の文字列の戻り値について...
-
vba 8桁の文字列を日付に変更
-
Msgboxの×が押されたとき
-
Windowsでファイルのリネームで...
-
A B C D E の五文字のすべてを...
-
Left関数とRight関数を合わせた...
-
エクセルで文字列をtxtファイル...
-
VBscriptからバッチに変数を渡...
-
textboxユーザーコントロールの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列の最大値を抽...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列をtxtファイル...
-
Left関数とRight関数を合わせた...
-
【Excel VBA】複数ある特定の文...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
エクセル 数値データを桁をそ...
-
Msgboxの×が押されたとき
-
Excelはなんで先頭の0を消すん...
-
16進数を10進数に簡単に変換す...
-
Pro c/c++ でホスト変数の後に....
-
[C言語]fputsとfprintfの違い
おすすめ情報