Excel VBA 質問スレ Part49©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/06/26(月) 02:15:14.60ID:T3ylemnb0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part48
http://mevius.2ch.net/test/read.cgi/tech/1494890685/

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/08/05(土) 13:08:47.84ID:kXEyZiX90
>>676
Sub foo()
bar = Date / Date
Debug.Print bar
End Sub

普通に1になったけど
679デフォルトの名無しさん (ワッチョイ 8351-FJki)
垢版 |
2017/08/05(土) 13:35:11.02ID:1ncAb1Zc0
https://www.youtube.com/watch?v=h_iMHmwQpR8
2017/08/05(土) 16:53:51.52ID:3n3qQbM6r
質問者からのエラーコードの提示がないので無駄な回答だな。
2017/08/05(土) 18:06:14.68ID:fC/MwjWZ0
時刻を時刻で割る意義は? どんな分野で必要と成るんだ? それは知りたい
2017/08/05(土) 18:54:05.96ID:UH683s5QM
バージョンが上がって…
とか言いながらバージョンを書かない馬鹿
指摘されても書かないという
683デフォルトの名無しさん (ワッチョイ ad91-j7Kr)
垢版 |
2017/08/05(土) 18:58:41.09ID:NpEI7ikB0
>>681
8時間の就業時間の間に25分掛かる作業を何回できるか見積るとか
2017/08/05(土) 19:00:17.07ID:90gBDUFU0
しょうもない質問はほっとけばいいんじゃ?
それとも答えたくてウズウズしてる感じ?
2017/08/05(土) 19:45:20.37ID:ze59kfDf0
>>683
無理くり理由をこじつけてもその程度だよな…ほんと何がしたいんだろうな
2017/08/05(土) 20:31:20.41ID:2UigV3EYM
質問するのにバージョンも書かない
ID変わってるのに名無しのまま
環境書けと言ってるのに無視
こんな処理する理由は?と聞かれても無視


こんな人間の生産物を現場で使う恐怖
2017/08/05(土) 20:47:12.34ID:fC/MwjWZ0
それは時刻で無くて時間だろ と
2017/08/05(土) 23:20:40.34ID:3n3qQbM6r
>>686
何のためにここで質問したのかわからないよね。

つか、俺たちが釣られただけ?
2017/08/05(土) 23:56:01.89ID:dqSa99my0
質問者が軌道修正のために必要な情報を提供しないってのはここではザラにあることだろ。
そんなのによく付き合ってられんなー
2017/08/06(日) 00:12:38.56ID:7dbJmn2Z0
質問室じゃねえんだよ
691デフォルトの名無しさん (オッペケ Srd9-31he)
垢版 |
2017/08/06(日) 12:22:25.32ID:hXGNAkd3r
また教えたがりの無能が暴れとるのかw
2017/08/06(日) 16:09:44.69ID:wM27hiyIa
暴れているのはただの煽り
693デフォルトの名無しさん (オイコラミネオ MM4b-4x8g)
垢版 |
2017/08/07(月) 16:41:33.18ID:/LwpuoG3M
>>678
dim a as date
dim b as date
dim test as date

a = time
b = time
test = a / b

でエラー出た
694デフォルトの名無しさん (ワッチョイ 49ad-mf2b)
垢版 |
2017/08/07(月) 16:59:56.15ID:PHW4jpUx0
>>693
地域オプションで先頭が数字以外になるような書式だったとか?
2017/08/07(月) 19:35:32.88ID:9LTblBy60
>>693
環境書けよ
なんでエラー出たとか言うやつは環境書かないの

VBAの日付型は原則数値として扱えるはずので
日付型である事が原因でエラーが出るとは考えにくいけどなぁ

ちなみにエラー51のヘルプ(2007)には
>このエラーが Error ステートメントまたは Raise メソッドで生成されたものでなければ、Microsoft 製品テクニカル サポートに連絡して、メッセージが表示されたときの状況を知らせてください
ってあるから、ホントにエラー51出たならEXCELのバグの可能性もないではないな
2017/08/07(月) 20:09:27.70ID:PGc1T+jA0
excel2010 win7
エラーが起こるのは除算の分母側がdateだった時
longにキャストするか、variantで宣言していれば問題ない(もちろん宣言してない場合も問題ない)
バグくさい挙動だなぁ

Sub foo2()
Dim a As Time
Dim b As Time
Dim test As Date

a = Time
b = Time
test_long = (a * 1) / (b * 1) 'ok
test = a / (b * 1) 'ok
test = 1 / b 'error
test = (a * 1) / b 'error
test = a / b 'error
End Sub

Sub foo()
Dim a As Variant
Dim b As Variant
Dim test As Date

a = Time
b = Time
test = a / b 'ok
End Sub
697デフォルトの名無しさん (ワッチョイ ad91-3aaz)
垢版 |
2017/08/07(月) 20:36:42.78ID:5JtEoMJq0
Cdbl()で分母をDoubleにキャストすればいいだけじゃね?
2017/08/07(月) 20:39:22.17ID:PGc1T+jA0
>>697
まぁ解決法としてはそれでも何でもいいし、そもそもdateで除算って事をやらないんだけど
根本的な原因が分からないと、変なとこで悪影響受けそう
699デフォルトの名無しさん (ワッチョイ ad91-3aaz)
垢版 |
2017/08/07(月) 20:54:07.86ID:5JtEoMJq0
Time って
DateTime.Time プロパティのことだよな
Property Time As Variant
だからもともとVariant型

dim a As Time がエラーになるんだが
700デフォルトの名無しさん (ワッチョイ ad91-3aaz)
垢版 |
2017/08/07(月) 21:05:47.61ID:5JtEoMJq0
Date型はVBAのデータ型で"21:02:32"みたいな文字列なんじゃね?
だから計算するとエラーになる
分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想
2017/08/07(月) 21:13:12.34ID:PGc1T+jA0
>>699
ごめんなさい訂正前の送ってしまいました
定義部分は以下に変えてください

Sub foo2()
Dim a As date
Dim b As date
702デフォルトの名無しさん (ワッチョイ cf11-4x8g)
垢版 |
2017/08/07(月) 23:25:10.55ID:kmFs6vPH0
>>695
2007じゃエラーでないよ
2017/08/07(月) 23:33:20.74ID:elxVZ6u90
データベースのDATETIME型の値がそのままVBAのDate型変数にマップできれば楽なのに、
1900年以前だとうまくいかないのが残念だ。
704デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/07(月) 23:39:54.26ID:5JtEoMJq0
>>702
2010とかだとエラーになる

分母にDate型を持ってくるときは
明示的にCdblでキャストすればエラーにならなくできる

MS側にバグレポートしたところで修正するかどうかはMS側次第
仕様変更したと言うかもしれない
2017/08/07(月) 23:59:58.12ID:HViBOnBI0
そろそろ日付時刻での除算の意味を教えて
2017/08/08(火) 00:39:23.26ID:sJaKEDtc0
>>705
>>683
全くない需要ってわけでもないと思う
2017/08/08(火) 00:57:18.12ID:ZuuTozCK0
キャストしてできるんならなんの問題もないだろう
キャストできない理由があるんじゃないのか?
まさか発想になかったわけじゃないだろうし
2017/08/08(火) 05:17:42.76ID:ttZKdV6P0
つーか質問者本人どこいったんじゃ
2017/08/08(火) 07:26:59.16ID:qEy0EStIr
>>693
つか、dateをdateで割った答えがdateっておかしくね?

たとえば、60分を15分で割ったら答えは「4分」ではないよね。

なので、

Dim test as Long

とすべき。
710デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 07:52:46.37ID:4vV+Ffiu0
>>709
そこはエラーとは関係ない
debug.print a/b
でもエラーになる

意味的に間違いでも形式的文法的には正しい
2017/08/08(火) 07:57:39.53ID:sJaKEDtc0
これエラーにならん
Debug.Print 1 / Time

これはエラー
foo = time
Debug.Print 1 / foo

意味わかんねぇmsに聞くか
2017/08/08(火) 08:15:13.81ID:qEy0EStIr
>>711
型が関係してるとしか思えないんだけど…
2017/08/08(火) 08:17:59.56ID:7r69+AsTM
>>706
>>683は 時間÷時間 の話で 時刻÷時刻 じゃないだろ
時間を演算するならシリアル値に変換して演算すればいいだけ
日付時刻に対する加減算以外の演算なんて意味ない
714デフォルトの名無しさん (ササクッテロロ Spa9-Mpnj)
垢版 |
2017/08/08(火) 08:18:45.83ID:T3VkQlydp
>>711
TimeはDaterime.timeでvariantだからエラーにならないのはわかる

fooもvariant?それともDate型?
715デフォルトの名無しさん (ササクッテロロ Spa9-Mpnj)
垢版 |
2017/08/08(火) 08:21:04.55ID:T3VkQlydp
>>713
時刻を基準日時刻からの時間以外で定義できるんだっけ?
2017/08/08(火) 08:24:56.85ID:sJaKEDtc0
>>713
>日付時刻に対する加減算以外の演算なんて意味ない
除算も乗算も意味あるんだが、一体何を言ってるんだ
2017/08/08(火) 08:24:58.32ID:Czpew14v0
今のとこ試した範囲では、2010で割る方の方がDate型だとエラー51だすな
バリアントだとVarType 7(vbDate)でも平気
どうにもバグくさい。だれかインシデント余ってるやつMSに聞いてくれ

>>711
だからエラーになるやつは環境かけよ
Win7 2010ではそれだけではエラーにならんぞ
どっかでfooをDateで宣言してんじゃねえのか
718デフォルトの名無しさん (ワッチョイ 57aa-/L7g)
垢版 |
2017/08/08(火) 08:31:46.30ID:Czpew14v0
>>713
VBAでは時間と時刻の型は区別されてないから、その議論に意味があるかは微妙だな
Date型を時刻ととらえるか基準時点からの時間ととらえるかの問題だろ

>>716
時間と時刻の違いわかってる?
一般的な会話での時間って言葉はほとんどが本来だと時刻の間違いだぞ
時刻の除算にどんな意味があるんだ?
2017/08/08(火) 12:35:05.88ID:l31z4HMeM
除算は1900/1/1からの経過日数の比
って認識で良いのかな
2017/08/08(火) 17:34:44.63ID:o2sPvDRf0
>時間の就業時間の間に25分掛かる作業を何回できるか見積るとか

(終了時間ー開始時間)を分単位に直して25で割るってことじゃないですか。
これは10000円を100円単位に分けたらいくつになる?ってのと同じ数量の問題だよね?

時刻の除算ってのは例えば
A = "2017/04/11 16:54:00"
B = "2017/08/15 10:45:48"

で A / B (Aは日付型でなくてもいいんだろうけど)ということでしょ?
これにどんな意味があるのよ
2017/08/08(火) 18:14:01.43ID:Plhneb/rd
単純な操作のはずなのによくわからん

0. .xlmxファイルを(パス:\A)に作成しておく

1. フォルダ(パス:\B)内のすべてのCSVファイル(データは1列のみ)を、先ほど作成したファイルのSheet1の2列目から順次マージする

データを繋げるところで詰まるので助けてください
2017/08/08(火) 18:15:20.46ID:7r69+AsTM
>>715
日時が先か時間が先かは知らんが今の議論には関係ないと思う

>>716
どういう意味があるのか書いてからほざきない

>>718
言語で区別してないから使う人が意識しなきゃねって話
723デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 19:18:53.44ID:4vV+Ffiu0
>>722
Date型で割るとエラーになると言う点と
あとどうでもいいんだが時刻で割ると言う点の
2つの論点が並行している

Dateで割る時はdoubleにキャストすればいいだけ
724デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 19:20:53.27ID:4vV+Ffiu0
>>720
Bを1とした時にAを数値で表した値
どんな価値があるかはその時によるが
全く価値がないとも言い切れない
2017/08/08(火) 19:33:26.34ID:qEy0EStIr
>>721
君が書いたコードのどこが拙いのか検討しようぜ。

まずはコード書いて。
2017/08/08(火) 19:36:48.60ID:bHuYQqMY0
Excel総合に間違って投下してしまったので、こちらに再投稿します。

以下のマクロをボタンに登録し、印刷範囲をhtmで保存しようとしています。
しかし、このブックを一度上書き保存等しないと正常に動作しません。
見よう見まねでこうなったコードなのですが、どうすれば良いでしょうか?
アドバイスお願いします。

Sub SAVE()
'
' SAVE Macro
'
'
With ActiveWorkbook.PublishObjects.Add(xlSourcePrintArea, _
Range("AT1").Value & ".htm", "Sheet1", "", xlHtmlStatic _
, "", "")
.Publish (True)
.AutoRepublish = False
End With
ChDir "C:\Users\admin\Desktop"
End Sub
2017/08/08(火) 21:36:34.68ID:JRNVbyEr0
複数ステップのOLE DBの操作でエラーが発生しましたとか言われて、
adOpenKeyset, adLockOptimisticで対策したら、
今度はUpdateで怒られるんですが、どうにかなりまんせん?
728デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 21:50:18.55ID:4vV+Ffiu0
>>727
エラーとカーソルタイプやロックタイプは関係あるの?
2017/08/08(火) 22:02:37.25ID:JRNVbyEr0
>>728
わからないんですが、
他にも、adUseServerでエラーになるので、
adUseClientに直すと、違うエラーが出たり、
何かを直すと違うエラーが出る、もぐら叩き状態です。
730デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 22:06:10.50ID:4vV+Ffiu0
sqlのエラーならそこらへんは関係ないんじゃないの?
なんのエラーか知らんけど
2017/08/08(火) 22:12:27.27ID:wQlpajLt0
DB操作はClose通らない処理を挟んでしまって二重にOpenするとかで苦労した事があるなぁ。
それが原因ならクラス作ってデストラクタにClose書いておけば忘れなくて便利。
2017/08/08(火) 23:58:40.83ID:cql1o/lA0
>>723
> Date型で割るとエラーになると言う点と
俺はそんなことは問題にしてない
意味のない演算ができてしまう言語なんて珍しくないし

> あとどうでもいいんだが時刻で割ると言う点の
どうでもいいなら放置しておけば?
2017/08/09(水) 09:22:17.50ID:Qcpwsibl0
>>726
保存先をパス付きで指定したらどうかな
chdirは自分のパスだろうし
2017/08/09(水) 10:44:54.73ID:F6AoeH710
>>727
こいつもそうだけど、ソースも示さずエラーが出ると言ってどんなエラーかも示さず


アホか
大方SQL単体でも失敗してんだろ
2017/08/09(水) 13:14:09.12ID:b9k/R7FPM
Sexel-VBA
2017/08/09(水) 13:28:47.67ID:MinGKowar
>>734
たぶん、『解答』が欲しいのではなく、『レス』が欲しいんだろうね。

つまり、雑談したいだけなんじゃね?
2017/08/09(水) 13:56:39.55ID:LTZc9U500
>>733
ありがとうございます。帰宅後、やってみます。
2017/08/09(水) 18:28:18.83ID:b9k/R7FPM
>>737
いいってことよ(´・ω・`)b
2017/08/10(木) 22:43:19.50ID:JdKfuZ5y0
>>734
一般的でなく、同じ目にあった経験者しか答えを知らなそうな内容なので・・。

ググって出てきた例が全滅なので、
多分、AccessではなくExcelでやってるのが原因だとは思うのですが。
2017/08/10(木) 23:14:30.24ID:JdKfuZ5y0
ちなみに、EOFがtrueじゃありませんとか、
IZAMが有効じゃありませんとか、
そんなやつです。
2017/08/10(木) 23:22:56.42ID:VgLhJXRi0
>EOFがtrueじゃありません

俺もmysqlにアクセスするのを作ってる段階でそういうのを出すことはあるよ。けど、そういうのここで
チンタラチンタラ言っててもソースがない以上こちら側ではどうしようもないわけで。
2017/08/10(木) 23:45:49.59ID:SqJ4/4zg0
>>740
もしかしてEXCELで直接開いてるのにAccessと同じ文法のSQL使ってない?
ワイルドカードとか色々と違う点があるんで、もしかしたらSQLが失敗して空のレコード開いてるのかも。
2017/08/11(金) 04:12:54.28ID:+mgolt3u0
そもそも何のDB(ドライバ)かすら書いてないし
どうやってレコードセット開いてupdateしたのか書いてないし
レスするだけ無駄な気がするぜ

>EOFがtrueじゃありません
そんなエラー見たことないな。EOFがFalseなら普通にデータ取れてるってことじゃねえの?
EOFがTrue前提の操作が浮かばんが、何しようとしたらそんなエラーになるんだよ

>IZAMが有効じゃありません
IZAMって何さ?ビジュアル系バンドメンバーかよ
2017/08/11(金) 07:44:16.53ID:xHfWhpghr
>>743
> レスするだけ無駄な気がするぜ

いいんだよ、それで。雑談が目的なんだから。
答えを出す必要はない。


>> EOFがtrueじゃありません
> そんなエラー見たことないな。

ADOでレコードセットを操作していると、ときたま現れるエラー。
クエリ結果にレコードが1件もない場合とかに出たりする。
745デフォルトの名無しさん (ワッチョイ 0e4b-K+Tw)
垢版 |
2017/08/11(金) 11:24:22.86ID:dnJD889I0
初心者ですがご教授下さい
クラス内にTRが9ありそのうちの1〜4を取得したいと思っています。
現在は1しか取得できません。どう書き換えればいいでしょうか?
Sub shisaku()
Dim objIE As InternetExplorer
Set objIE = CreateObject("Internetexplorer.Application") '
objIE.Visible = True '
objIE.navigate "http://www.aaa/aaa";
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document
Dim colTR, colTH, colTD, colImg As IHTMLElementCollection
Set colTR = htmlDoc.getElementsByClassName("first")
Dim el As IHTMLElement
For Each el In colTR
Set colTH = el.getElementsByTagName("th")
Set colTD = el.getElementsByTagName("td")
Debug.Print colTR(0).innerText
Next el
End Sub
2017/08/11(金) 11:47:54.41ID:H2cGDcz1a
>>745
なんでcolTRをclassnameで取得してんの?
2017/08/11(金) 11:50:59.38ID:H2cGDcz1a
あと並べて書いた場合でも変数一つずつ型指定してかないとvariantになるよ、vbaの場合
2017/08/11(金) 13:07:34.65ID:11Y29+uU0
吉岡美穂のカキタレ
2017/08/11(金) 13:38:42.84ID:dnJD889I0
>>747
vbaでieを操作を読んでもググってもあり理解出来なくてとりあえず作りながら覚えようと
コピペしたものを一部変えました
tr、tdは特定出来ずclassが特定出来るのですがどのように書き換えればよろしいのでしょうか?
750デフォルトの名無しさん (ワッチョイ 0391-8lAF)
垢版 |
2017/08/11(金) 13:56:55.44ID:kj6/PAcR0
>>749
処理対象によってどうすればいいか変わるから
対象が判らないとなんとも言えないのではないと思う

クラスで全部のTRを取れてるのかも判らないし
2017/08/11(金) 14:32:36.47ID:yOhrxWpUa
>>749
trがほしいならgetElementsByTagName("TR")で取るのが普通じゃね
その後のfor eachの中の処理もよくわからんが
2017/08/11(金) 14:42:02.39ID:hvV/hgBn0
例えば下のように文字と数字が並んでいて、文字を数字の横に持って行くにはどうしたらいいですか?

12
q
15
b
10
c

12 q
15 b
10 c
2017/08/11(金) 14:45:37.73ID:fD8DkUIg0
>>745
生のjsそのまま使うのはめっちゃめんどくさいから、ラッパーを探したほうが良い
で、探した。以下のサイトのラッパー使えば多分すぐに出来ると思う
http://language-and-engineering.hatenablog.jp/entry/20090710/p1
2017/08/11(金) 14:51:25.70ID:fD8DkUIg0
>>752
必ず数字と英語が入れ替わりで来るなら以下のマクロ

Sub foo()
For i = 1 To 100
行 = Int(i / 2)
If i Mod 2 = 1 Then
Cells(行 + 1, 2) = Cells(i, 1)
Else
Cells(行, 3) = Cells(i, 1)
End If
Next
End Sub
2017/08/11(金) 15:01:16.16ID:hvV/hgBn0
>>754
ありがとうございます。
でもすみません、2連続で文字のパターンもあります
正確には下のような感じです


q
r


d


c


○ qr(セル内改行)
○ b
○ c
756デフォルトの名無しさん (ワッチョイ 0391-8lAF)
垢版 |
2017/08/11(金) 15:12:27.50ID:kj6/PAcR0
>>755
まず数字か文字列か判別すればいいんじゃね?
if a like "[0-9]*" then
って感じでできる様なきがする
2017/08/11(金) 15:23:36.72ID:hvV/hgBn0
>>756
今考えてるのは以下の感じです
VBAもプログラミングも初心者のため全然コードがわかってなくてすみません


loop (i)
if instr(cell(i,1),"○")<>0
sw=1

if sw=1

sw =1の時それより下のセルの情報を切り取り

 loop(n)
 n=i+1
 if instr(cell(n,1),"○")<>0
 sw=0

 else n=n+1
 loop end

else i=i+1
loop end
2017/08/11(金) 15:32:45.42ID:fD8DkUIg0
>>755
こう
Sub foo()
行 = 1
'一行目は数字
Cells(行, 2) = Cells(1, 1)
tmp = Cells(1, 1)
For i = 2 To 100
If IsNumeric(Cells(i, 1)) Then
'数字
Cells(行, 2) = tmp
Cells(行, 3) = 文字
行 = 行 + 1
tmp = Cells(i, 1)
文字 = ""
Else
'文字
文字 = 文字 & vbCrLf & Cells(i, 1)
End If
Next
End Sub
2017/08/11(金) 15:33:16.05ID:fD8DkUIg0
>>756
なんでlikeなんだよ
isnumericでいいだろw
760デフォルトの名無しさん (ワッチョイ 0391-8lAF)
垢版 |
2017/08/11(金) 15:48:56.25ID:kj6/PAcR0
>>759
数字を含む文字列をどっちに判別するかによるんじゃね
2017/08/11(金) 16:02:01.36ID:yOhrxWpUa
>>749
追記でおせっかいついでに、ie操作覚えたいなら軽くhtml勉強したほうがいいよ
エクセルのオブジェクト理解せずにvbaで扱うなんて無理なのと一緒
2017/08/11(金) 16:32:57.50ID:FWZL6nYt0
Ruby で書いた
https://paiza.io/projects/HhNVuMxF20bU1t4-GMp0VQ

ary = []
File.open("File1") do |file|
# 1行ずつ処理する
file.each_line do |line|
# 0〜9
if /^\d+$/ =~ line.chomp!
ary << line + ' '
else
ary[-1] = ary[-1] + line
end
end
end

puts ary

入力
01
a
b
12
c
23

出力
01 ab
12 c
23

ただし、23 の後ろに、半角空白が入っているけど
2017/08/11(金) 20:25:45.30ID:Nl+bIgs10
>>742
普通にCopyFromRecordsetするだけなら出来るんです。

Do Until rs.EOF
 rs!項目=何とか ←ここで何かしようとすると、Debug.Print以外は全て失敗します。
 rs.MoveNext
Loop

諦めて、GetRowsして編集してから出力しようとしたら、
縦横入れ替わってるし(Excelで使うのに何故こんな仕様にした?)、
Transposeで直そうと思っても型が違いますとか言われるし・・。

>>743
I-zamはサポートしてませんだったかも?
2017/08/11(金) 20:45:51.85ID:2aci5jkj0
>>763
>rs!項目=何とか ←ここで何かしようとすると、

rs.項目に何か代入しようとしてんのか?
2017/08/11(金) 20:48:59.91ID:+mgolt3u0
>>744
>クエリ結果にレコードが1件もない場合とかに出たりする。
それ普通はEOFがTrueになるはずだけど
MySQLのドライバでそうならなかったりするのか?ドライバのバグじゃねえの?
それどうやってゼロ件かどうか判定するんだ?
2017/08/11(金) 21:03:31.05ID:+mgolt3u0
>>763
だからDBとドライバ何で、どうやってそのレコードセット作ってるんだよ

そもそもレコードセットを更新する必要があるのかどうかも疑問だけどな
レコードセットは常に更新できるとは限らんのだぞ
2017/08/11(金) 21:18:12.65ID:Nl+bIgs10
>>764
そうです。
SQL上だと難しい内容があるので、後から入れようかなと。

>>766
CsvとMicrosoft.Ace.OLEDB.12.0です。
元のCsvの方は、多分更新出来ないだろうとは思ってたのですが、
出力結果の方に、編集した内容が反映されればいいかなと。
2017/08/11(金) 21:29:48.64ID:2aci5jkj0
>>767
CursorTypeがどうなっているのかとかいちいちこちらから聞かないと情報を出さないのか?
で、延々と続ける気?
769デフォルトの名無しさん (ワッチョイ 0391-8lAF)
垢版 |
2017/08/11(金) 22:03:13.38ID:kj6/PAcR0
>>764
rsに代入できるんだっけ?
debug.print出来るならrsから読み込むのは出来るんじゃね?
別変数にコピーしてから変更したら?
2017/08/11(金) 22:06:37.63ID:mfxycmdp0
Excel(VBA)でデータベース接続ってどういうのが一般的なんでしょうか?
自分は専ら生ODBCを叩いているので他人のことが気になってる。
771デフォルトの名無しさん (ワッチョイ 0391-8lAF)
垢版 |
2017/08/11(金) 22:11:37.85ID:kj6/PAcR0
>>770
そんなの統計とかアンケートとかとってる人いないんじゃないかな
実現したいことができればいいんじゃね
2017/08/11(金) 22:15:41.96ID:fD8DkUIg0
そもそもexcelでデータベースに接続しないな
全部accessで済ませてしまう
2017/08/11(金) 22:36:29.71ID:mfxycmdp0
>>772
VBAとODBCドライバしか使わないのでExcel, Outlook, Word, Access その他 Officeなら何でもOKにはしてる。
ExcelとOutlookくらいしか使わないけどね。
Outlookはメールで「このテーブルをこう読んだときに〜」とか連絡を受けたときにそのままVBEを開いて使ったりとか。
2017/08/11(金) 23:12:57.71ID:Nl+bIgs10
>>768
それは最初に、読み取り専用じゃないやつに変えたけどダメだったと書きましたけど。

>>770
ググって引っかかる率が高いのはADO。
外部データ取り込みの方なら、参照設定もいらないのに、どういうわけかADOばっか。
ADOばっか出るから、ADOに乗り換えてみたら、このザマですよ。
2017/08/11(金) 23:35:39.96ID:mfxycmdp0
>>774
乗り換えた、って何から?
2017/08/12(土) 00:49:01.81ID:RTe2mUwF0
>>775
外部データ取り込み(Microsoft Query)からです。

シートの指定が、なぜか[シート名$]じゃなくて`シート名$`とか、
データの出力開始列にコマンドボタンを配置すると、ボタンを押した瞬間、
ボタンが横に逃げるとか(離すと元の位置に戻ってくる)、
意味不明な軽い嫌がらせがありますけど。
2017/08/12(土) 10:58:36.59ID:AoA5DjYT0
ヘルプ見ると日付型の説明として以下のように書いてあるじゃん。

 日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。
 西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 〜 23:59:59 の
 範囲の時刻を表すことができます。

でも1900年以前のDate型変数をワークシートに貼ろうと思ってもできなくて、

 実行時エラー'1004':
 アプリケーション定義またはオブジェクト定義のエラーです。

ってエラーが出てくるじゃん。これ控えめにいtt
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況