X



Excel VBA 質問スレ Part49©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ bb2e-8SzA)
垢版 |
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
0633620 (アウアウアー Sab6-6wLz)
垢版 |
2017/07/28(金) 04:23:09.57ID:Kx1QSHwna
皆様ありがとうございました! 
理由はわかりませんが突然できるようになりました!
本当にご迷惑おかけしました!
0634デフォルトの名無しさん (オッペケ Srb3-ZCwv)
垢版 |
2017/07/28(金) 04:32:44.73ID:ccATQH/dr
>>632
ごめん。コード間違ってた。orz

参照設定をoffにし、↓のコードで試してみて。

'// olMailItemを直値(0)に変えた
Dim dataSet
Dim lastRow As Long
Dim i As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
dataSet = Range(Cells(2, 1), Cells(lastRow, 4)).Value

With CreateObject("Outlook.Application")
  .GetNamespace("MAPI").GetDefaultFolder(16).Display
  For i = 1 To lastRow - 1
    With .CreateItem(0)
      .To = dataSet(i, 1)
      .Subject = dataSet(i, 2)
      .Attachments.Add dataSet(i, 3)
      .Body = dataSet(i, 4)
      .Save
    End With
  Next i
End With
0637デフォルトの名無しさん (ワッチョイ db11-AITk)
垢版 |
2017/07/28(金) 23:02:57.85ID:+oxMyCi10
win10
excel2016で
MSXML2.XMLHTTPを使って
responseTextでgoogle検索結果のページを取得しようとすると、
responseTextで返ってきたものが、今までwin7 excel2007などで返ってきたものと全然違うんですが、win7の時のように受け取る方法ってありませんか?

win7の時はhtmlそのものが返ってきてましたがwin10では最初の方が判読困難です。

やろうとしていることは、vbaでgoogle画像検索の結果の画像をセルに表示しようと思ってます。
0639デフォルトの名無しさん (ワッチョイ db11-AITk)
垢版 |
2017/07/30(日) 12:41:33.40ID:ND/Yhbfk0
すみません、いろいろ試してたんですが、google以外ではちゃんと同じようなものを受け取れてました。
googleでは環境によって返すものが違うのかもしれません。
その先はスレ違いになるので自分でいろいろやってみます。ありがとうございました。
0641デフォルトの名無しさん (アウーイモ MM9f-GszO)
垢版 |
2017/08/02(水) 00:57:39.97ID:O3oN8G+MM
Function Name2Adr(str As String)
Dim Cts As Folder, Ct As ContactItem
Set Cts = CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set Ct = Cts.Items.Find("[Email1DisplayName] = '" & str & "'")

If Ct Is Nothing Then Name2Adr = "不明" Else Name2Adr = Ct.Email1Address

Set Cts = Nothing: Set Ct = Nothing
End Function
↑ローカルのアドレス帳から表示名を検索しメアドを返す関数です。これはうまくいくのですが、
↓下のグローバルアドレス帳を検索するものがうまくいきません。エラーメッセージは「オブジェクトはこのプロパティまたはメソッドをサポートしていません」です。
どなたか解決法をご教示ください。よろしくお願いします。
Function gName2Adr(str As String)
Dim olApplication As Outlook.Application
Dim olNameSpace As Outlook.Namespace
Dim olAddressLists As Outlook.AddressLists
Dim olAddressList As Outlook.AddressList
Dim olAddressEntries As Outlook.AddressEntries

Set olApplication = New Outlook.Application
Set olNameSpace = olApplication.Session
Set olAddressLists = olNameSpace.AddressLists
Set olAddressList = olAddressLists.Item(2)
Set olAddressEntries = olAddressList.AddressEntries

Dim olAddressEntry As Outlook.AddressEntry
Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
If olAddressEntry Is Nothing Then gName2Adr = "不明" Else gName2Adr = olAddressEntry.Email1Address
End Function
0657641 (オイコラミネオ MMb6-Cs75)
垢版 |
2017/08/02(水) 13:14:55.44ID:1uis+HfsM
みなさん、ご迷惑おかけしてすみません。
outlook vbaのスレに書くべき質問だったでしょうか、、

>>649
すみません、outlookのライブラリです。
よろしくお願いします。
0660641 (オイコラミネオ MMb6-Cs75)
垢版 |
2017/08/02(水) 16:56:06.29ID:uQ5PKG3iM
みなさん、ご迷惑おかけしてすみません。
outlook vbaのスレに書くべき質問だったでしょうか、、

>>649
すみません、outlookのライブラリです。
よろしくお願いします。
0662デフォルトの名無しさん (ドコグロ MM22-gqKx)
垢版 |
2017/08/02(水) 18:28:23.95ID:i5+f8wczM
>>660
Outlook VBA スレないからまあここでもいいと思うが仕事中に軽くググった範疇だといい方法が見つからん
> Set olAddressEntry = olAddressEntries.Items.Find("[Email1DisplayName] = '" & str & "'") '←この行でエラー
Items.Find( ) は Folder オブジェクトしか持ってないからここでエラーになるのは当然
グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが取得したリストの GetContactsFolder( ) を呼び出しても Nothing しか返ってこない
何か設定が要るのか根本的に頓珍漢なのかさっぱりわからん
0664620 (アウアウアー Sa83-zhMW)
垢版 |
2017/08/03(木) 06:23:52.11ID:y8hiM9O7a
>>662
ありがとうございます!勉強になります。

> グローバルアドレス帳(Global Address List)は GetGlobalAddressList( ) で取得できるし内容も入っているんだが

↑その内容というのは、debug.printで見ることはできますでしょうか??
0667デフォルトの名無しさん (オイコラミネオ MM4b-1llH)
垢版 |
2017/08/04(金) 13:47:28.51ID:2SBD/wKoM
バージョンが上がって日付時刻型の除算ができなくなりました。バリアント型にしても空になります。
対応方法はありませんでしょうか?
また、こういう仕様変更はどこで確認できますか?
0670デフォルトの名無しさん (ワッチョイ cf11-1llH)
垢版 |
2017/08/04(金) 20:11:22.22ID:CfFJ59fY0
時刻ですね
0674デフォルトの名無しさん (ワッチョイ cf11-4x8g)
垢版 |
2017/08/05(土) 11:28:42.39ID:J2w+rLAY0
エラーコードは51
データ型が日付時刻の除算はエラーでる
0676デフォルトの名無しさん (ワッチョイ cf11-4x8g)
垢版 |
2017/08/05(土) 13:00:51.75ID:J2w+rLAY0
>>675
時刻同士で割って見て
0683デフォルトの名無しさん (ワッチョイ ad91-j7Kr)
垢版 |
2017/08/05(土) 18:58:41.09ID:NpEI7ikB0
>>681
8時間の就業時間の間に25分掛かる作業を何回できるか見積るとか
0686デフォルトの名無しさん (アウーイモ MMb3-7CC5)
垢版 |
2017/08/05(土) 20:31:20.41ID:2UigV3EYM
質問するのにバージョンも書かない
ID変わってるのに名無しのまま
環境書けと言ってるのに無視
こんな処理する理由は?と聞かれても無視


こんな人間の生産物を現場で使う恐怖
0691デフォルトの名無しさん (オッペケ Srd9-31he)
垢版 |
2017/08/06(日) 12:22:25.32ID:hXGNAkd3r
また教えたがりの無能が暴れとるのかw
0693デフォルトの名無しさん (オイコラミネオ 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

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

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

ちなみにエラー51のヘルプ(2007)には
>このエラーが Error ステートメントまたは Raise メソッドで生成されたものでなければ、Microsoft 製品テクニカル サポートに連絡して、メッセージが表示されたときの状況を知らせてください
ってあるから、ホントにエラー51出たならEXCELのバグの可能性もないではないな
0696デフォルトの名無しさん (ワッチョイ 3b6d-VAa7)
垢版 |
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
0697デフォルトの名無しさん (ワッチョイ ad91-3aaz)
垢版 |
2017/08/07(月) 20:36:42.78ID:5JtEoMJq0
Cdbl()で分母をDoubleにキャストすればいいだけじゃね?
0699デフォルトの名無しさん (ワッチョイ ad91-3aaz)
垢版 |
2017/08/07(月) 20:54:07.86ID:5JtEoMJq0
Time って
DateTime.Time プロパティのことだよな
Property Time As Variant
だからもともとVariant型

dim a As Time がエラーになるんだが
0700デフォルトの名無しさん (ワッチョイ ad91-3aaz)
垢版 |
2017/08/07(月) 21:05:47.61ID:5JtEoMJq0
Date型はVBAのデータ型で"21:02:32"みたいな文字列なんじゃね?
だから計算するとエラーになる
分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想
0702デフォルトの名無しさん (ワッチョイ cf11-4x8g)
垢版 |
2017/08/07(月) 23:25:10.55ID:kmFs6vPH0
>>695
2007じゃエラーでないよ
0704デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/07(月) 23:39:54.26ID:5JtEoMJq0
>>702
2010とかだとエラーになる

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

MS側にバグレポートしたところで修正するかどうかはMS側次第
仕様変更したと言うかもしれない
0710デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 07:52:46.37ID:4vV+Ffiu0
>>709
そこはエラーとは関係ない
debug.print a/b
でもエラーになる

意味的に間違いでも形式的文法的には正しい
0714デフォルトの名無しさん (ササクッテロロ Spa9-Mpnj)
垢版 |
2017/08/08(火) 08:18:45.83ID:T3VkQlydp
>>711
TimeはDaterime.timeでvariantだからエラーにならないのはわかる

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

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

>>716
時間と時刻の違いわかってる?
一般的な会話での時間って言葉はほとんどが本来だと時刻の間違いだぞ
時刻の除算にどんな意味があるんだ?
0720デフォルトの名無しさん (ワッチョイ 0b06-gAma)
垢版 |
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は日付型でなくてもいいんだろうけど)ということでしょ?
これにどんな意味があるのよ
0721デフォルトの名無しさん (スプッッ Sddb-6kmL)
垢版 |
2017/08/08(火) 18:14:01.43ID:Plhneb/rd
単純な操作のはずなのによくわからん

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

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

データを繋げるところで詰まるので助けてください
0723デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 19:18:53.44ID:4vV+Ffiu0
>>722
Date型で割るとエラーになると言う点と
あとどうでもいいんだが時刻で割ると言う点の
2つの論点が並行している

Dateで割る時はdoubleにキャストすればいいだけ
0724デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 19:20:53.27ID:4vV+Ffiu0
>>720
Bを1とした時にAを数値で表した値
どんな価値があるかはその時によるが
全く価値がないとも言い切れない
0726デフォルトの名無しさん (ワッチョイ 5323-/FH4)
垢版 |
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
0727デフォルトの名無しさん (ワッチョイ 1f6f-/FH4)
垢版 |
2017/08/08(火) 21:36:34.68ID:JRNVbyEr0
複数ステップのOLE DBの操作でエラーが発生しましたとか言われて、
adOpenKeyset, adLockOptimisticで対策したら、
今度はUpdateで怒られるんですが、どうにかなりまんせん?
0728デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 21:50:18.55ID:4vV+Ffiu0
>>727
エラーとカーソルタイプやロックタイプは関係あるの?
0730デフォルトの名無しさん (ワッチョイ ad91-Mpnj)
垢版 |
2017/08/08(火) 22:06:10.50ID:4vV+Ffiu0
sqlのエラーならそこらへんは関係ないんじゃないの?
なんのエラーか知らんけど
0731デフォルトの名無しさん (ワッチョイ 693d-gAma)
垢版 |
2017/08/08(火) 22:12:27.27ID:wQlpajLt0
DB操作はClose通らない処理を挟んでしまって二重にOpenするとかで苦労した事があるなぁ。
それが原因ならクラス作ってデストラクタにClose書いておけば忘れなくて便利。
0732デフォルトの名無しさん (ワッチョイ 1311-/F0N)
垢版 |
2017/08/08(火) 23:58:40.83ID:cql1o/lA0
>>723
> Date型で割るとエラーになると言う点と
俺はそんなことは問題にしてない
意味のない演算ができてしまう言語なんて珍しくないし

> あとどうでもいいんだが時刻で割ると言う点の
どうでもいいなら放置しておけば?
■ このスレッドは過去ログ倉庫に格納されています

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