[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/08 10:06 / Filesize : 292 KB / Number-of Response : 1011
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part65



1 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 16:27:20.88 ID:hh8LiIgR0.net]

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

※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

652 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 15:58:20.12 ID:io10sll9a.net]
各ボタン押した最初の処理だけわけて
引数つけて共通処理に飛ばせばよくね

653 名前:デフォルトの名無しさん (ワッチョイ 7ab5-l81y) mailto:sage [2020/04/26(日) 18:40:06 ID:IAQJrydO0.net]
全部ここの人達のおかげで完全に憑き物が取れて教えて貰ったURLと持ってる本を参考にひたすら初歩のルールから愚直に
打っては実行を繰り返し練習してます

Do loop
For next
特にこれの破壊力は凄いですね
これだけの為に覚える価値すらあると感じました
あとはmsgboxの使い方の面白さ
感謝しかないです

Do loopでwhileとuntilがあるけどよほど複雑でない場合
書き方変えるだけで同じ処理させられる感じですが
基本どっちかでで使い方覚えていったほうがいいものですかね
質問というよりただただ楽しくここの上級者たちにも癖だったり自分ルールがあるのかなと
ああ楽しい

654 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 19:35:22.95 ID:1a87l4R/0.net]
>>648
繰り返す条件が明確な場合はwhile、終了条件に着目した方が処理の流れがわかりやすい場合はuntil
適切に使い分けると、プログラム全体が読みやすくなって間違いが減る

655 名前:デフォルトの名無しさん (ワッチョイ acce-1Gce) mailto:sage [2020/04/26(日) 19:37:28 ID:1a87l4R/0.net]
よくない例
While Not 終了条件

適切な例
Until 終了条件

656 名前:デフォルトの名無しさん (ワッチョイ 7ab5-l81y) mailto:sage [2020/04/26(日) 20:25:45 ID:IAQJrydO0.net]
>>650

Sub ループwhile()
 Dim i As Long
  i = 1
 Do While Cells(i, 1) <> ""
 Cells(i, 3) = Cells(i, 1) + 10
 i = i + 1
 Loop
 MsgBox i & "回whileでループ"
End Sub

Sub ループuntil()
 Dim i As Long i = 1
 Do Until Cells(i, 1) = ""
 Cells(i, 3) = Cells(i, 1) + 10
  i = i + 1
 Loop    
 MsgBox i & "回untilでループ"
End Sub

なるほど、空白になるまでループってのを練習してました
後者の方が一般的ですかね
勉強になります。

657 名前:デフォルトの名無しさん [2020/04/26(日) 21:08:58.39 ID:RAbG8RW6a.net]
僕は wihle しか使わない
理由は c言語にないから

あと、なんとなくだけど、wihle と until は混ぜて使わない方がよい気がする

いや、混在する人がいても文句は言わないと思うけど

658 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 21:11:31.65 ID:RAbG8RW6a.net]
>>652
651 ですが、
理由は until はc言語にないから
です
すみません

659 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 21:21:03.37 ID:wya5Zv+N0.net]
ド・モルガンの法則なんてのを知ってるとループ条件が
劇的に易しく書けるようになったりするよ

660 名前: mailto:sage [2020/04/26(日) 21:43:11.03 ID:Whjp3eXS0.net]
>>654
ドモルガンは法則ではなくて公理すなわち前提条件なのでは?



661 名前:デフォルトの名無しさん (ワッチョイ acce-1Gce) mailto:sage [2020/04/26(日) 22:54:36 ID:1a87l4R/0.net]
Not Is Nothing
英語の否定文って日本語とロジックが違うから直感的にわかりにくい

662 名前:デフォルトの名無しさん (アウアウエー Sa6a-1Gce) mailto:sage [2020/04/26(日) 23:37:47 ID:x2OEBIkDa.net]
少なくとも一回実行する必要があるとき until
一回も実行しないかもしれないとき while

663 名前:デフォルトの名無しさん (ワッチョイ b05c-QpYc) mailto:sage [2020/04/27(月) 00:02:16 ID:i1fhLCEO0.net]
まぁ大事なのは自分の中でしっかりルールを固めておくこと
なんとなくで使い分けてると100%デスマに陥る

664 名前:デフォルトの名無しさん (ワッチョイ 0a2f-Hty+) mailto:sage [2020/04/27(月) 00:02:40 ID:pzY5bj450.net]
>>657
VBAでは、それはDo側に書くかLoop側に書くか

WhileかUntilかはその条件の意味的なもので使い分けるのが本筋だろうけど
書くときの話ならどちらかに統一するルールでも良いと思う

665 名前:デフォルトの名無しさん (ワッチョイ ca56-nG0h) mailto:sage [2020/04/27(月) 00:32:05 ID:7P4A4QOo0.net]
シート1のA1セルにx1、x2、x3と設定し、このx1〜x3をそれぞれx1をB1セルに設定されている値、x2をC2セルに設定されている値に置換するにはどのようにすればよいのでしょうか
Replaceでは検索文字列および置換文字列を一つずつ指定できないため、検索したい文字列が増えるたびに処理が無駄に増えてしまうように思うため効率的なやり方を教えていただきたいです

666 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 03:31:04.69 ID:Rq5FZkLb0.net]
もっとわかるように説明してもらわんと

667 名前:デフォルトの名無しさん (ワッチョイ ae63-V/Lh) [2020/04/27(月) 04:12:22 ID:NMjdVbpJ0.net]
置換と言ってるからセル参照ではない事だけわかった

668 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 04:51:42.68 ID:o+TU1QYP0.net]
学習能力のないひとがやってきて
説明能力の貧弱さを露呈する場所か・・・

669 名前:デフォルトの名無しさん (ワッチョイ 91ad-R0M4) mailto:sage [2020/04/27(月) 05:03:04 ID:Nsh172gi0.net]
>>648
IF文、For文と配列で簡単な処理はこなせる
上級者はまた別のパラダイムで書いているが
先走る必要もなく基礎を確実に身につけよう

>>655
ド・モルガンは定理になることが多いが
そうなるのは公理系しだいだから
名前がおかしいと感じたことはない

670 名前:デフォルトの名無しさん [2020/04/27(月) 06:05:48.59 ID:XYadQOO00.net]
>>660
非効率なコードを上げてくれ



671 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 06:24:43.93 ID:3fBcsBz5r.net]
>>660
select case

672 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 08:38:39.18 ID:MOHWKMXM0.net]
>>660
x3をd3に入れる
置換にこだわらず、代入しなおす

673 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 09:24:40.63 ID:JVYKLC34M.net]
ワークシート名をsheet(i)みたいな感じで配列に格納して、
for i=i to X
sheet(i).cell(row,col) = data
next
の様な、ループで各シートのセルに値を代入する方法を教えていただけないでしょうか。

674 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 10:44:49.67 ID:p6J78QU70.net]
>>668
実際の要件知らんが、普通はもっといい方法があると思うが、質問通りに。

https://i.imgur.com/SdMgpZq.png

675 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 10:47:33.37 ID:o+TU1QYP0.net]
Dim i As Integer
For i = 1 To 3
ThisWorkbook.Worksheets(i).Cells(1, 1) = 1
Next i

で済むようなものだと予想

676 名前:デフォルトの名無しさん (ワッチョイ 0101-K+B8) mailto:sage [2020/04/27(月) 13:38:56 ID:JH5ykH9R0.net]
・ツールの作成
・バク対応、修正業務
・各種テスト
VBAを用いて上記の業務を行う場合、皆さん(自分の取り巻く環境以外)の現場で求められる頻度や重要度が高いスキルや業務を伺いたいです。
よろしくお願いします。

677 名前:デフォルトの名無しさん [2020/04/27(月) 15:07:52.31 ID:VtI6ihiD0.net]
>>671
馬鹿は死ね

678 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 15:33:05.22 ID:uroKfm2Gd.net]
>>668
何でシート名で配列なの?
既にシートオブジェクトの配列として使えるのに。

679 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 15:35:59.76 ID:MOHWKMXM0.net]
>>668
シート名は普通に列挙したいんだと思った
コード内に記述したいのか: sheet=Array("hoge","fuga","piyo","puyo")
セル内に記述したいのか: sheet=WorksheetFunction.Transpose(WorkSheets("hoge").Range("a1:a4"))
どうか、わかんないけど

680 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 15:36:24.43 ID:uroKfm2Gd.net]
>>671
そいつは現場次第だよねえ。

現場に併せて何でも出来るってことかな。
AccessならSQLは必須だと思うけど。



681 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 16:19:32.17 ID:JH5ykH9R0.net]
>>672
生きる!!!

>>675
自分の周り以外だとどんなことにVBA使ってるか気になりましてね。他意はマジでなくて、単純な興味として質問してみますた。

682 名前:デフォルトの名無しさん (JP 0H34-GHE+) mailto:sage [2020/04/27(月) 17:19:41 ID:H2efCY7TH.net]
既存のVBAをどうしてもメンテせざるを得ないときに使う
新規に使うことはない

683 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 18:02:05.74 ID:fDdETITO0.net]
ちょっとデータを加工したい時、軽い処理とか1回限りの計算はVBAでやってる
VisualStudioはその場限りの捨てコードを書くには大げさすぎる

684 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 18:06:27.58 ID:JnEQ074MM.net]
>>678
そんな貴方にPowershellオススメ

685 名前:デフォルトの名無しさん (ワッチョイ 0101-K+B8) mailto:sage [2020/04/27(月) 18:40:53 ID:JH5ykH9R0.net]
>>677
>>678
レスありがとうございました。
ちょっとした作業を手軽に(環境構築とかなしで)効率化するときに使ってるってのが分かりました。
何気なく使ってるから頻度も重要度もクソもないと

686 名前:デフォルトの名無しさん [2020/04/27(月) 19:15:08.58 ID:XYadQOO00.net]
昔は「値で貼り付け」とかキー割り当てしてたけど最近のは割と便利になったから使ってないな
他には初回印刷日の挿入とか
ファイルプロパティにタイトルの設定とかかな

687 名前:デフォルトの名無しさん (ブーイモ MMfd-enkp) [2020/04/27(月) 20:04:15 ID:GiQWIPCuM.net]
「値で貼り付け」に関して最近のはどう便利になってるの?

688 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 20:24:28.01 ID:Jy0k1GG60.net]
VBAでの開発依頼がしょっちゅう来る…

689 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 20:30:04.12 ID:XYadQOO00.net]
>>682
https://i.imgur.com/xIc2Szq.jpg

690 名前:デフォルトの名無しさん [2020/04/27(月) 20:34:34.60 ID:z3LiCQZGM.net]
配列を使った方が良い場合ってどんな時?



691 名前:デフォルトの名無しさん mailto:sage [2020/04/27(月) 20:48:23.14 ID:XYadQOO00.net]
>>685
相手は誰だ?
ワークシート? Dictionary? CSV文字列?

692 名前:デフォルトの名無しさん (ワッチョイ 0101-K+B8) mailto:sage [2020/04/27(月) 23:24:48 ID:JH5ykH9R0.net]
>>681
自分の素朴な疑問に答えてもらってありがとうございます。

693 名前:デフォルトの名無しさん (ワッチョイ 7a4b-R0M4) mailto:sage [2020/04/27(月) 23:26:56 ID:g7wz6Zov0.net]
ここの人ら凄い、
いつも感心しながら読んでるけど本当に勉強になる。
これだけ知識や経験あるならユーチューバ―とかになって上手くやれば副業も出来そう

694 名前:デフォルトの名無しさん (ワッチョイ acce-1Gce) mailto:sage [2020/04/27(月) 23:27:29 ID:fDdETITO0.net]
>>685
処理したい変数がたくさんあって繰り返し同じことをする時
処理したいセルがたくさんあって繰り返し同じことをする時

695 名前:デフォルトの名無しさん (ワッチョイ acce-1Gce) mailto:sage [2020/04/27(月) 23:28:15 ID:fDdETITO0.net]
office田中もいつのまにかyoutuberになってたけど、こんなおじいちゃんだとは思わなかった

696 名前:デフォルトの名無しさん (ワッチョイ 64ad-Btmo) [2020/04/27(月) 23:42:25 ID:RTbdScdC0.net]
VBAを本を読んだりググったりして勉強中です。
他社システムからいただくCSVファイルをExcelに取り込んで編集する必要があります。
頭にゼロが付いて、長さが不定の数字のフィールドがあるので、そこは文字列で
扱わなくてはならず、そのままExcelで開けません。
querytables.add でインポートしてみたところ、セル内改行の含まれる列があるため、
1行であるべきデータが2行になってしまいます。
POWERQueryを使えば回避できる、という情報にに突き当たり、とりあえずマクロの
記録をしてみて、使えるように変えられないか、と思いましたが行き詰っています。
「ソース = Csv.Document(File.Contents(””CSVのパス””),… 」
のCSVのパスの部分を変数にしたいのですが、変数にすると
「 .Refresh BackgroundQuery:=False」のところで
[Expression error] インポート 変数 がエクスポートと一致しません。モジュールの参照が漏れていませんか?」
と親しげだけど、冷たく突き放されます。
知識が足りなさすぎるのですが、データをきれいにして早く次の処理を作らなくては
いけなくて焦っています。
先輩たちはテレワークで、あまり質問もできず困っております。
どうぞよろしくお願いいたします。

697 名前:デフォルトの名無しさん (オッペケ Sr5f-HrHD) mailto:sage [2020/04/27(月) 23:45:46 ID:3fBcsBz5r.net]
>>690
再生数少ないけど分かりやすいから初心者は見るべきだと思う
schooのは微妙だけど

698 名前:デフォルトの名無しさん (ワッチョイ 4c2c-iUOt) mailto:sage [2020/04/28(火) 01:18:35 ID:7QVY/xgO0.net]
>>691
Ruby なら、以下をscript.rb に書いて、
CSV データを、input.csv に書いてある時、

ruby script.rb input.csv
と、シェルで実行すると、

require 'csv'

file_path = ARGV[ 0 ] # 引数には、CSVファイルパスを渡す。input.csv

# CSV ファイルを、1行ずつ処理する
CSV.foreach( file_path ) do |row|
puts "#{ row[ 0 ] } : #{ row[ 1 ] }"
end

入力・input.csv
あ,いう
a,bc

出力
あ : いう
a : bc

699 名前:デフォルトの名無しさん (ワッチョイ 7ab5-l81y) mailto:sage [2020/04/28(火) 02:18:31 ID:wtscQEd50.net]
Sub ループuntil()
 Dim g As Long
  g = 3
 Do Until Cells(g, 2) = ""
 Cells(g, 6) = Cells(g, 2) + Cells(g, 3) * 10
 g = g + 1
 
 Loop Dim ms As String
 ms = MsgBox(g & "回ループ", vbYesNo, "どうやら")

 If ms = vbYes Then
 MsgBox "更に練習", vbYesonly, "じゃあ"   Else
 MsgBox "論外", vbYesonly, "てめーは"   
 End If
End Sub

何とか練習しつつ
ここにきてデータ型が逆に混乱してきましたわ
バリアントでごまかそうかな
おやすみなさい

700 名前:デフォルトの名無しさん (ワッチョイ d98e-A1EL) mailto:sage [2020/04/28(火) 02:51:59 ID:ro9Vnp/Q0.net]
>>691
こんな馬鹿に仕事をさせるのが間違い



701 名前:デフォルトの名無しさん (ワッチョイ acce-1Gce) mailto:sage [2020/04/28(火) 03:02:31 ID:OG4s1hHd0.net]
>>694
これ、そこらの入門書にはなかなか書いてないんだけど、MsgBoxの結果はVbMsgBoxResultという特殊な型なので、変数msはこう宣言するのが正解

Dim ms As VbMsgBoxResult

この宣言を書いてからコードを書くと、

If ms =

ここまで入力すると自動的に、vbYesとかvbNoなどの選択肢が出てくる

702 名前:デフォルトの名無しさん (ワッチョイ 66e6-iUOt) mailto:sage [2020/04/28(火) 04:56:00 ID:Ok+k67Xa0.net]
Select Case "CSVファイルをExcelに取り込む"
Case "直接開く"
MsgBox "0 padding"
Case "querytables"
MsgBox "inline CR"
Case "POWERQuery"
MsgBox "Syntax Error"
Case "先輩たち"
MsgBox "テレワーク"
Case "2ch"
MsgBox "ググレカス"
Case "自分"
MsgBox "勉強中"
End Select

703 名前:デフォルトの名無しさん (ワッチョイ 91ad-R0M4) mailto:sage [2020/04/28(火) 05:30:30 ID:CHpsAleC0.net]
>>690
VBAは年齢層高いだろ?
Pythonとかより

704 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 06:23:10.14 ID:fDIatR4a0.net]
最近csvを開くのがはやってるみたいだけど、拡張子をtxtに変えて開き直すといいよ

705 名前:デフォルトの名無しさん (ワッチョイ 048f-1Gce) mailto:sage [2020/04/28(火) 08:10:33 ID:uR1kyCkX0.net]
>>671
ぜ・ん・ぶ

706 名前:デフォルトの名無しさん (スッップ Sd70-bbQE) mailto:sage [2020/04/28(火) 08:27:27 ID:F6rfqhbJd.net]
>>685
速度アップの為にあえて使うのはVariant配列。

配列にすることに全く違和感が無いので、"あえて"使うことが少ない。
配列にするのに自然なことがたくさんあるし、普通に使ってる。

707 名前:667 (ワッチョイ 2c7f-So6t) mailto:sage [2020/04/28(火) 13:36:09 ID:1XDByXps0.net]
ありがとうございました。
できました。

708 名前:デフォルトの名無しさん (ワッチョイ 7349-xf6K) mailto:sage [2020/04/28(火) 13:57:24 ID:0tfnjkqK0.net]
いえいえ

709 名前:デフォルトの名無しさん (ブーイモ MM5e-43Dx) mailto:sage [2020/04/28(火) 17:53:56 ID:YPs9lugpM.net]
Sub テキスト抽出()
  ChDir "c:\tmp"
  f = Dir("*.txt")
  c = 1
  Do While f <> ""
    Open f For Input As #1
        Line Input As #1,s
    s = "s"
    r = 1
    Do While Not EOF(1) And s <> ""
      Line Input #1, s
If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
    r = r + 1
    Loop
    Close #1
    f = Dir
    c = c + 1
  Loop
End Sub

710 名前:デフォルトの名無しさん (ブーイモ MM5e-43Dx) mailto:sage [2020/04/28(火) 18:04:37 ID:YPs9lugpM.net]
ここで教えて頂いた>>704の「指定Path内の全txtデータのF列2行目から下に数値が続く限りシートに全部抽出する」コードのお陰で憑き物が取れて運用してるのですが
たまに画像の様な他の列に行がはみ出したデータがあると

実行時エラー'9':
インデックスが有効範囲にありません
で止まりますが

これを「他の列がどうだろうがtxt内のF2から下に数値が続く限り抽出」
に改良するのは難易度高いですか?
というかコードで可能でしょうか
入門編の本には載って無く数字変えたりwhileの位置変えたりしてますが簡単にいくはずもなく
参考になるサイトなどありましたら教えて頂けませんでしょうか

↓こんなデータが混じってるとエラーで止まります
https://i.imgur.com/194ePDL.jpg



711 名前:デフォルトの名無しさん (アウアウウー Saab-/zYc) mailto:sage [2020/04/28(火) 18:19:12 ID:uYkVg/g/a.net]
>>704
まんなかへんのdo while の後ろはかっこをつけたほうがいいよ
判定の対応がわかりにくいので

712 名前:デフォルトの名無しさん (ワッチョイ 7a4b-R0M4) mailto:sage [2020/04/28(火) 18:35:05 ID:yXtY+D7s0.net]
>>690
元々有名な人なんだね。
投稿動画多くてあれこれクリックしてるうちにどんどん登録者数が伸びてったからビックリした。
最初見た時は5000ぐらいだったのに、さてどこまで伸びるかな。

713 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 19:06:29.99 ID:fDIatR4a0.net]
>>705
>If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
この行、最後に(5)ってついてるでしょ
読み込んだデータに5+1番目(0スタートだから+1)の要素が無かったら、どうなると思う?

ここは、splitの結果を一旦配列変数に受けて、配列の大きさを確認する判定をいれるといいよ
実を言えば、s<>"" の判定も不要だったりもする

714 名前:デフォルトの名無しさん (ワッチョイ 048f-1Gce) mailto:sage [2020/04/28(火) 19:48:07 ID:uR1kyCkX0.net]
都道府県別の7日移動平均線を出すグラフ組めないかなあと
思って、

715 名前:「都道府県別の日々新規感染者数」を探したけど見つからん…。

なんで役人は pdf にしたがるんだろう。
[]
[ここ壊れてます]

716 名前:デフォルトの名無しさん (ブーイモ MMed-43Dx) mailto:sage [2020/04/28(火) 20:13:54 ID:ZPYYxv13M.net]
>>708
正直ほとんどさっぱりわからないです。
が、ありがとうございます。そこらへんをいじればなんとかしろなりそうってことですかね。
まだ変数の使い方もよくわかってないのでsplit関数で検索して集中的に勉強していじれるようにがんばります。

717 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 21:00:00.12 ID:CHpsAleC0.net]
>>707
VBAはハードル低くて
エクセルが実用的だから
ユーザが多いんだろう

718 名前:デフォルトの名無しさん (ワッチョイ 4c2c-iUOt) mailto:sage [2020/04/28(火) 22:51:18 ID:7QVY/xgO0.net]
データは、PDF じゃなくて、アプリで処理しやすいように、
同じ場所に、CSV ファイルも置いておくのが基本!

役人は、データ処理の素人w

719 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 23:02:38.82 ID:IT0hJXXxM.net]
EOF関数?
なんじゃこりゃ

720 名前:デフォルトの名無しさん [2020/04/28(火) 23:21:24.84 ID:7mVXavmj0.net]
>>709
各都道府県毎にオープンデータでCSV配布してるのに何言ってんだ?



721 名前:デフォルトの名無しさん (ワッチョイ e709-LlFz) mailto:sage [2020/04/29(水) 01:03:36 ID:j7HdUAEO0.net]
VBAから参照設定をせずにoutlookを操作しようとしていますが、
「Set mailItemObj = oApp.CreateItem(oApp.olMailItem)」のところで、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と
エラーが出てしまいます。どうすれば解決できますでしょうか。。。

Sub sendmail_sample1()
Dim oApp 'As NEW Outlook.Application OutlookのApplication
Dim myNameSpace 'As Outlook.NameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9)
'---コード1|outlookを起動する
Dim toaddress As String '変数設定:To宛先
Dim subject As String '変数設定:件名
Dim mailItemObj 'Outlookで使用するオブジェクト生成
'---コード2|差出人、本文、署名を取得する---
toaddress = Range("B2").Value 'To宛先
subject = Range("B5").Value '件名
'---コード3|メールを作成して、差出人、本文、署名を入れ込む---
Set mailItemObj = oApp.CreateItem(oApp.olMailItem) '★★★ここでエラー
mailItemObj.BodyFormat = 3 'リッチテキストに変更
mailItemObj.To = toaddress 'to宛先をセット
mailItemObj.subject = subject '件名をセット
'---コード7|outlookを閉じる(オブジェクトの解放)---
Set oApp = Nothing
Set mailItemObj = Nothing
End Sub

722 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/04/29(水) 01:10:43 ID:ICnUrfUx0.net]
>>715
こうかな?
Set mailItemObj = oApp.CreateItem(olMailItem)

723 名前:デフォルトの名無しさん (ブーイモ MM2b-EVni) mailto:sage [2020/04/29(水) 01:34:35 ID:L1oMckOiM.net]
配列変数難しすぎて笑える

724 名前:デフォルトの名無しさん (ワッチョイ e709-LlFz) mailto:sage [2020/04/29(水) 01:35:24 ID:j7HdUAEO0.net]
>>716
レスありがとうございます。
「変数が定義されていません」エラーが出てしまいます・・・

725 名前:デフォルトの名無しさん (ワッチョイ e709-LlFz) [2020/04/29(水) 01:40:00 ID:j7HdUAEO0.net]
>>715です。自己解決いたしました。
olMailItemを値指定でゼロ(0)にしたらできました。。。
謎ですが。。。ありがとうございました。。。

726 名前:デフォルトの名無しさん (ワッチョイ bff7-INiV) mailto:sage [2020/04/29(水) 09:03:38 ID:osglNTbf0.net]
定数ってoutlook.olMailItemみたいに書くんじゃなかったっけCreateObjectで別定義する必要があったはず
Excel上だとリファレンス入れないと>>716は機能しない

727 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 09:13:47.90 ID:EmE7DP7rx.net]
ただのパラメータ定数参照だから普通に数字を入れればいいだけ
olMailItemは0だったかな

728 名前:690 (ワッチョイ a7ad-LlFz) [2020/04/29(水) 09:22:41 ID:sSCyRYOw0.net]
>>691です。
みなさんありがとうございました。
もっと勉強します。
>>69

729 名前:7
ちょっと楽しい気持ちになりました。恩に着ます。
[]
[ここ壊れてます]

730 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 18:51:15.87 ID:IoQm9XvmM.net]
msgboxの使い方
inputboxの使い方
Do loop
For next
if then else
初歩だけどここらを色々繰り返し勉強してると楽しい
msgboxは使い方もっと応用していきたい
楽しみながら勉強するといいですね
他にもっとお勧めの処理ありますかね。

あとさらに低レベルな疑問なんですが
vbYesNo
vbOkCancel

これってみんな細かに使い分けます?
タイトルとメッセージで誘導してあげて
elseで何もしないにするとほぼ通じちゃいますよね
これも使い分け必須だったりするのでしょうか



731 名前:デフォルトの名無しさん (アウアウウー Saab-NLJ6) mailto:sage [2020/04/29(水) 20:00:57 ID:ZY0E7GgZa.net]
やってみればわかると思うが

732 名前:デフォルトの名無しさん (ワッチョイ a75f-rvxR) mailto:sage [2020/04/29(水) 22:30:45 ID:sZxShGZL0.net]
メッセージBOXが出ている状態でESCキーを押された時の挙動が違う。

733 名前:デフォルトの名無しさん (ワッチョイ a78e-DBwA) [2020/04/29(水) 23:54:48 ID:GcIsSLnW0.net]
>>723
そろそろ馬鹿は死ね

734 名前:デフォルトの名無しさん (ワッチョイ 67ac-fZS3) mailto:sage [2020/04/30(Thu) 00:04:19 ID:UCocORui0.net]
vbaって必要に迫られてやることが圧倒的な気がする
だからおすすめの処理とか言われてもな

735 名前:デフォルトの名無しさん (JP 0H8f-sYkk) mailto:sage [2020/04/30(Thu) 02:12:11 ID:e+nUl/nvH.net]
同意
VBAは使わなくていいなら使わない方が望ましいわけで、
おすすめと言われると「まずはVBAを使わなくてよい方法を考えること」としか言いようがない

736 名前:デフォルトの名無しさん (ワッチョイ c7ce-ts7H) mailto:sage [2020/04/30(Thu) 03:10:10 ID:mLi4d9n50.net]
道具なんて使う人次第
手作業とワークシート(数式)とVBAと別アプリと、何でやれば一番楽で間違いが起きにくいか比較検討して使い分けるのが理想

737 名前:デフォルトの名無しさん (ワッチョイ c7da-ts7H) mailto:sage [2020/04/30(Thu) 03:36:49 ID:gai1ourp0.net]
>>723
きびしめの意見が続いてかわいそうになったので
めげずにがんがれ

738 名前:デフォルトの名無しさん (ワッチョイ df01-lZTE) mailto:sage [2020/04/30(Thu) 03:50:06 ID:HupizHgZ0.net]
数式だとすぐぶっ壊されてその修正に手間がかかるのでVBA使うのが好き
仕方なく数式に頼ったとしても、数式を一括修正できるボタンとかVBAで作っちゃってる
数式入ってるセルに保護かければいいじゃんって思うだろ・・・・
そうするとな、なんでここには入力できないんだよ!ってクレームがな、
いや、そこはここのシートのこの値が転記されるようになってて・・・とかいう説明を聞き入れる輩じゃないんだ

739 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 04:08:29.30 ID:mLi4d9n50.net]
人に渡すブックなら、VBAは消してシートはバックアップを取っておく
何やったっていじるやつはいじるし文句を言うから、結果だけを渡すようにしとかないと

740 名前:デフォルトの名無しさん (ワッチョイ e7ad-GPK9) mailto:sage [2020/04/30(Thu) 04:41:41 ID:HvDy85U60.net]
>>723
>お勧めの処理
VBAが初心者でも簡単に扱えるのは
エクセルというGUIがついてるから

だけど普通のCUIプログラミングも
できると技術的に幅が広がるだろう

たとえばPythonとかRubyとかでね



741 名前:デフォルトの名無しさん (ワッチョイ e7ad-GPK9) mailto:sage [2020/04/30(Thu) 04:48:14 ID:HvDy85U60.net]
>>731
>>732
複数人利用で関数メインだと
すぐぶっ壊されるのは分かる

あと壊れなくても長期的には
VBAの方が修正が楽だよな?
関数は処理の全体像が不透明

742 名前:デフォルトの名無しさん (ワッチョイ c763-+JA7) [2020/04/30(Thu) 06:40:13 ID:PqPYAyi70.net]
まぁ関数でできる処理は関数でした方が処理自体速いんだけどな
悩ましいけどセル保護だけじゃなく列や行を隠しとかもするけど、いじる人は何しようと結局いじるからね…

VBAと関数で使い分けしないとVBAはどんだけCPUのコア数あっても1コアでしか動作しないから、重たい処理になると頭打ちになる

743 名前:デフォルトの名無しさん (アークセー Sx5b-apiA) mailto:sage [2020/04/30(Thu) 07:48:59 ID:OrbFqVlKx.net]
ワークシート関数が処理の全体像が不明っていってる奴はたぶん関数がセル内できるのを知らないとか、テーブル機能を知らないとか、たぶんそんな感じだろう
ワークシート関数もVBAも下手くそに作ればカオスになる

744 名前:デフォルトの名無しさん (ブーイモ MMcf-EVni) mailto:sage [2020/04/30(Thu) 08:27:32 ID:/wWgOKjWM.net]
なるべく関数はエクセル内で完結させてる
何かの呼び出しや処理のみにVBAにやらせてる
マスター版を個人で持っておく
いじられてもよほどのことが無い限り知らんふり

745 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 08:46:50.92 ID:HvDy85U60.net]
一年後に処理の内容全部忘れてから
もう一回見てご覧?
関数よりVBAの方が分かりやすいから

746 名前:デフォルトの名無しさん (アークセー Sx5b-apiA) mailto:sage [2020/04/30(Thu) 09:38:23 ID:OrbFqVlKx.net]
ワークシート関数の見通しが悪いのはシートの使い方や関数の書き方が悪いから

テーブルで構造化参照させる
多重ネストをしないように作業列を積極的に使う
多重ネストが避けられない場合ははセル内改行する
静的変数として固定セルを参照する場合は名前付きセルにする

こういう配慮をしているかどうかが大切

可読性はVBAと大差ない
VBAだって下手に書くと二度とメンテナンス出来なくなる

747 名前:デフォルトの名無しさん (JP 0H8f-sYkk) mailto:sage [2020/04/30(Thu) 10:14:10 ID:dUO320lFH.net]
>>738
VBAだけ見りゃ理解できるように書いてあるんならいいさ
ハイスキルな君の書くVBAもきっとそうなのだろう
ただ、世の中のほとんどのVBAマクロはワークシートのレイアウトに激しく依存しており、
シートと見比べないと意味不明だし簡単に壊れる

748 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 10:50:37.55 ID:KvTMWgJl0.net]
>>714
そうなの?じゃあ俺の検索力不足だ。
教えてもらえるとありがたい

749 名前:デフォルトの名無しさん (ワッチョイ bff7-INiV) mailto:sage [2020/04/30(Thu) 11:52:42 ID:RI8oXcu50.net]
シート連結部分はクラスにしようぜ

750 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 18:07:04.25 ID:R8msXZW7a.net]
クラスターつくるのか



751 名前:デフォルトの名無しさん (ワッチョイ 2701-F4ic) mailto:sage [2020/04/30(Thu) 20:10:03 ID:6PshQwim0.net]
>>738
これは分からんでもないわ

752 名前:デフォルトの名無しさん (ワッチョイ 671d-sUpK) [2020/04/30(Thu) 23:50:21 ID:b9TIw4B40.net]
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef