Excel VBA 質問スレ Part45 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2017/01/03(火) 02:51:16.56ID:9Y8iTik6コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part44
http://echo.2ch.net/test/read.cgi/tech/1479421482/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
0175デフォルトの名無しさん
2017/01/17(火) 01:13:18.56ID:mp4Rluyj0176デフォルトの名無しさん
2017/01/17(火) 06:36:26.66ID:Upzxz6/t完全一致でも昇順に並べられていることを前提とすれば辞書方式が使えると思うけどな
0177デフォルトの名無しさん
2017/01/17(火) 07:13:51.32ID:jzPK8o2C使えるが そういう仕様に なってない
0178デフォルトの名無しさん
2017/01/17(火) 09:11:54.79ID:035vzIzN0179デフォルトの名無しさん
2017/01/17(火) 19:24:38.16ID:gxb7F/t0いろいろ勉強になりました。
十数年、vlookupは特殊な場合を除いて完全一致で使うものだと思っていました。
数十万のvlookupをかけて3時間ぐらい帰ってこないような処理をしたことがあり
いま考えると無謀だったなと、、
0180デフォルトの名無しさん
2017/01/17(火) 20:31:05.76ID:EPmzwVhoどなたか教えてくださいお願いします。
イメージ図:
http://www.dotup.org/uploda/www.dotup.org1127385.jpg
I1にXML文、A〜G列の1-2行目がある状態でVBAを実行すると、
A〜G列の3行目から下が出力されるイメージです。
XML文全体は約500行のものが複数、どれも階層は4以下です。
以上、よろしくお願いします。
0181デフォルトの名無しさん
2017/01/17(火) 21:21:06.99ID:pDqJREhGこの辺りを見てがんばれー
http://freefly3104.hatenablog.com/entry/2015/04/03/222516
0182デフォルトの名無しさん
2017/01/17(火) 21:22:53.32ID:UOrZs7iTノード名もパラメーターとして出す(イメージ図で言う太字の箇所)
で良いのかい?
あと、階層の各列には同じ数値しか入らない
で良いのかい?
これを求めているのなら求めているで構わないけど得られる結果をまた精査することになると思う
0183デフォルトの名無しさん
2017/01/17(火) 21:47:24.91ID:pDqJREhGあと出力順が
1
2
3
3
3
のようになってるけど
1
2
3
3
2
3
つまり Subject が2回出力されるんじゃダメ?
0184デフォルトの名無しさん
2017/01/17(火) 21:49:25.15ID:EPmzwVhoありがとう。
実はこのサイトとかを参考に試行錯誤したがうまくできくてここで尋ねたんだ。
>>182
はい、おっしゃる通り
・ノード名もパラメータとして(太字で)出す。
・階層の各列には同じ数字しか入らない。B列は空白か1か、C列は空白か2、・・・。
です。
0185デフォルトの名無しさん
2017/01/17(火) 21:53:52.16ID:EPmzwVho1
2
3
3
2
3
のようにSubjectを2回出力するのだとだめです、申し訳ない。
これも、1人でできない原因の一つです。
許されたらfor文で各行に対してsplitとか使えばなんとかなりそうだけど・・・
0186デフォルトの名無しさん
2017/01/17(火) 23:53:22.45ID:HYIsieSIその場合
<xxx ...>
<...>
<...>
</xxx>
<yyy ...>
<...>
<...>
</yyy>
<xxx ...>
<...>
<...>
</xxx>
の場合はどのように出力するの?
タグ名毎に集約するの?
0187デフォルトの名無しさん
2017/01/17(火) 23:55:02.78ID:HYIsieSI<xxx ...>
<...>
<...>
</xxx>
<yyy ...>
<...>
<...>
</yyy>
<xxx ...>
<...>
<...>
</xxx>
のケースね。
0188デフォルトの名無しさん
2017/01/18(水) 00:16:31.88ID:P2ujaP/Jはい、そのケースではタグ名毎に集約します。つまり、
<xxx ...>
<...>←yの上の1行目
<...>←yの上の2行目
<...>←yの下の1行目
<...>←yの下の2行目
</xxx>
<yyy ...>
<...>
<...>
</yyy>
と同値とみなします。(Fの列にyyyが1つだけ出る)
ただし、
<xxx ...>
<yyy ...>
</yyy>
</xxx>
<zzz ...>
<yyy ...>
</yyy>
</zzz>
のように階層が異なったり、一つは<xxx>,もう一つは<zzz>の下にあるような場合は、
<xxx>の下の<yyy>と<zzz>の下の<zzz>は別のものとして扱います。(Fの列にyyyが複数出る)
0189デフォルトの名無しさん
2017/01/18(水) 07:02:26.64ID:KfZHaLf7<xxx ...>
<yyy ...> -- (1)
</yyy>
</xxx>
<zzz ...>
<yyy ...> -- (2)
</yyy>
</zzz>
<xxx ...>
<yyy ...> -- (3)
</yyy>
</xxx>
のケースで (1) と (3) も集約するの?
たぶん xml からの読み込みと集約処理を分けた方がいいと思う。
0190デフォルトの名無しさん
2017/01/18(水) 08:46:32.65ID:dxlKDUod携帯から失礼します。
はい、その場合も集約します。
具体的にはどんなコードで書いたらよろしいですかね。
0191デフォルトの名無しさん
2017/01/18(水) 10:08:50.79ID:nvWV6Cl10192デフォルトの名無しさん
2017/01/18(水) 10:46:36.89ID:mepmwC6J0193デフォルトの名無しさん
2017/01/18(水) 12:19:13.71ID:zXM8oXohGroovy とかで、すぐに出来るだろ
0194デフォルトの名無しさん
2017/01/18(水) 12:35:52.38ID:4FnlBNL6すぐw
じゃあ書いてみろよ
0195デフォルトの名無しさん
2017/01/18(水) 12:38:39.68ID:NBGHKSlQ0196デフォルトの名無しさん
2017/01/18(水) 12:54:48.99ID:Fv9px6Lv例えば文字が入ってなくても色や太さが設定されてるとか
0197デフォルトの名無しさん
2017/01/18(水) 13:04:49.97ID:UZ6KtMVe普通にセルのプロパティで取得すればいいんでない
0198デフォルトの名無しさん
2017/01/18(水) 13:07:57.97ID:Fv9px6LvIf Range("A1").Value="" Then
でいけますか?
0199デフォルトの名無しさん
2017/01/18(水) 13:25:21.60ID:UZ6KtMVeforecolorとかbackcolorとかだよ
オブジェクトブラウザでcells調べてみ?
0200デフォルトの名無しさん
2017/01/18(水) 15:02:26.86ID:zXM8oXohdef root = new XmlParser().parse("ファイル名.xml")
root.タグ名.each{
println it.text()
ここで処理する
}
it は、イタレータから渡ってくる、暗黙の要素を指す
0201デフォルトの名無しさん
2017/01/18(水) 17:11:44.24ID:XrR2JBi4そもそも、なんでExcelに展開しようとしてるんだ?
それが最終目的か?
あと、自分でどこまでできたのか書いてくれ。
0202デフォルトの名無しさん
2017/01/18(水) 17:46:16.92ID:WZOpQPDJXML関連
0203デフォルトの名無しさん
2017/01/18(水) 19:44:31.06ID:zXM8oXoh<Subject math="sugaku">
1回目の<Subject>の際、japanese, math の、2つが取れているのは、Traverse の幅優先探索か?
普通は、深さ優先探索だけど
様々な言語を見たけど、日本語のサイトで、Traverse の処理を書いているサイトは、ほとんどない。
どないなっとんねん?
0204デフォルトの名無しさん
2017/01/18(水) 20:09:10.01ID:P2ujaP/JExcelに展開するのが最終目的であってます。
現在自分ではこのような状況・・・
DOMとかわからなくて挫折。xml文の各行をfor文で回してやっている。
【できたこと】
各行のXML文がどの階層についての話か調べる
階層 = (各行の<の前にある空白)×1のため、InStr("各行のXML文","<")-1で求めた。
【できないこと】
パラメータ名と設定値の抜出。
設定値に関してはsplit関数でできるかなと思ったが、
パラメータ名は「空白と=」や「<と空白」等で何で囲まれているかが異なっており、どうすればよいかわからない。
簡単に言うと、
I2:「 <examType first="zenki/shiken" second="koki/shiken" third="">」
とあるとき、
examTypeをF3、firstをF4、secondをF5、thirdをF6、
"zenki/shiken"をG4、"koki/shiken"をG5、""をG6に出す方法がわからない。
0205デフォルトの名無しさん
2017/01/18(水) 20:17:32.50ID:WZOpQPDJでgetelementsbytagname()とかつかう
0206デフォルトの名無しさん
2017/01/18(水) 20:26:10.85ID:9qUMY5Wm馬鹿過ぎて話しにならない。
馬鹿に無理。
0207デフォルトの名無しさん
2017/01/18(水) 20:47:34.80ID:IDSE4GPaふぅ
0208デフォルトの名無しさん
2017/01/18(水) 21:15:38.89ID:zXM8oXohただ、traverse の説明が、日本語のサイトでは見当たらない。
深さ優先ではなく、幅優先探索だろ?
0209デフォルトの名無しさん
2017/01/18(水) 21:22:46.40ID:uheDDMMjDOMじゃないと結構つらいかもよ 出来ん事はないけどね DOM勉強する気があるなら サンプル上げとくよ
DOM+再帰処理してるので詳細はググってねw
あと何階層でも良いのだけれど シートが4階層までしか用意されてないので 4階層に制限してます
'Microsoft XML v3.0 を参照設定
Sub main()
Dim XMLDoc As MSXML2.DOMDocument
Dim Row As Long
Dim No As Long
Row = 3 'シートに書き込む最初の行位置
No = 1
Set XMLDoc = New MSXML2.DOMDocument
XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
Call ListXml(XMLDoc.ChildNodes(1), Row, No, 1)
Cells(Row, "G").Value = "FINISH"
End Sub
Sub ListXml(ByRef Node As IXMLDOMNode, ByRef Row, ByRef No, ByVal Level)
Dim NodeList As IXMLDOMNodeList
Dim Node1 As IXMLDOMNode
Dim Node2 As IXMLDOMNode
Dim NodeAttr As IXMLDOMAttribute
'ノード名表示
Cells(Row, "A").Value = No
Cells(Row, "B").Offset(0, Level - 1).Value = Level
Cells(Row, "F").Value = Node.nodeName
Cells(Row, "G").Value = "-"
Row = Row + 1
No = No + 1
0210209
2017/01/18(水) 21:23:19.50ID:uheDDMMj'ノードパラメータ表示
For Each NodeAttr In Node.Attributes
Cells(Row, "A").Value = No
Cells(Row, "F").Value = NodeAttr.Name
Cells(Row, "G").Value = NodeAttr.Value
Row = Row + 1
No = No + 1
Next
'階層制限
If Level = 4 Then Exit Sub
'同じ名前の子ノードを 最初の一つに集約
For Each Node1 In Node.ChildNodes
Do
Set NodeList = Node1.ParentNode.SelectNodes(Node1.nodeName)
If NodeList.Length = 1 Then Exit Do
For Each Node2 In NodeList(1).ChildNodes
NodeList(0).appendChild Node2
Next
Node1.ParentNode.RemoveChild NodeList(1)
Loop
Next
'子ノード処理(再帰)
For Each Node1 In Node.ChildNodes
Call ListXml(Node1, Row, No, Level + 1)
Next
End Sub
0211デフォルトの名無しさん
2017/01/18(水) 21:25:28.46ID:zXM8oXohただ、traverse の説明が、日本語のサイトでは見当たらない。
深さ優先ではなく、幅優先探索だろ?
Java
http://www.technotype.net/tutorial/tutorial.php?fileId=%7BDOM%7D&sectionId=%7Btraversing-the-node-tree%7D
子ノードリストを取得
NodeList list = parentNode.getChildNodes();
要素に従属する属性リストを取得
NamedNodeMap map = elementNode.getAttributes();
最悪、traverse 関数内で、traverse・自分自身を呼ぶ、再帰的な処理を作る。
traverse 関数が最初からあれば、もっと簡単。
それに幅優先探索を指定する
0212デフォルトの名無しさん
2017/01/18(水) 21:56:11.82ID:P2ujaP/Jありがとう。
実際やってみたらA3とB3に1が出力されて、
オブジェクト変数またはWithブロック変数が設定されていません
と言われました。どうしてだろ。。。
>>211
はい、幅優先探索です。
ありがとうございます。transverseについてちょっと調べてみます。
0213デフォルトの名無しさん
2017/01/18(水) 22:00:58.72ID:uheDDMMjXML規則に則ってる?
あと ノード名(タグ名?)は 大文字小文字 区別するぜ
どっか XMLファイルUP出来ない?
0214デフォルトの名無しさん
2017/01/18(水) 22:08:43.87ID:uheDDMMjもしかして↓このまま? 実際のXMLファイル名に修正してよね
XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
0215デフォルトの名無しさん
2017/01/18(水) 22:12:35.06ID:P2ujaP/J実際のXMLファイル名とそのパスにしています。
XML.txtの中身は以下の通りです。
<?xml version="1.0" encoding="UTF-8">
<examType first="zenki/shiken" second="koki/shiken" third="">
<Subject japanese="kokugo">
<Gendaibun min="50/100" max="85/100" />
<Kobun min="60/100" max="100/100" />
</Subject>
<Subject math="sugaku">
<IA min="30/100" max="80/100">
</IA>
</Subject>
</examType>
0216デフォルトの名無しさん
2017/01/18(水) 22:29:42.43ID:uheDDMMjXML読み込み失敗してるね
※XMLファイル修正(最後に?がない)
× <?xml version="1.0" encoding="UTF-8">
○ <?xml version="1.0" encoding="UTF-8"?>
※コード修正(読み込みエラーでたらMSGBOX)
XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
If XMLDoc.parseError.ErrorCode <> 0 Then
MsgBox XMLDoc.parseError.reason
Exit Sub
End If
0217デフォルトの名無しさん
2017/01/18(水) 22:30:45.22ID:vXs3og/7シートだと階層構造のデータを保存しにくいからxmlファイルにして保存したい
0218デフォルトの名無しさん
2017/01/18(水) 22:41:40.88ID:P2ujaP/Jありがとうございます。エラーはなくなりました。
ただ1つ問題が・・・
math,sugakuを読み込んでいない。8行目と9行目の間に入れたいのですが。
実行画面結果は以下のようになりました
http://www.dotup.org/uploda/www.dotup.org1128435.jpg
0219デフォルトの名無しさん
2017/01/18(水) 22:50:58.80ID:uheDDMMj'同じ名前の子ノードを 最初の一つに集約
で集約してるからそうなるが(その下は移動してる)
前からの レスで集約するって言ってたんじゃない?
'同じ名前の子ノードを 最初の一つに集約
の(FOR〜NEXT)部分ざっくり削除してみ
0220デフォルトの名無しさん
2017/01/18(水) 23:09:44.67ID:P2ujaP/Jあー、申し訳ない。
7行目のSubjectの下に、japaneseとmathをまとめて出力するという意味で使ってしまっていました。
0221デフォルトの名無しさん
2017/01/18(水) 23:20:05.28ID:P2ujaP/Jという意味です
0222デフォルトの名無しさん
2017/01/19(木) 00:09:17.23ID:wXKnExNuこゆう事かな?(同じパラメータは 最後のに置き換えられるよ)
下をそっくり入れ替えて
'同じ名前の子ノードを 最初の一つに集約
For Each Node1 In Node.ChildNodes
Do
Set NodeList = Node1.ParentNode.SelectNodes(Node1.nodeName)
If NodeList.Length = 1 Then Exit Do
For Each Node2 In NodeList(1).ChildNodes
NodeList(0).appendChild Node2
Next
'パラメータコピー
For Each NodeAttr In NodeList(1).Attributes
NodeList(0).Attributes.setNamedItem NodeAttr.CloneNode(True)
Next
Node1.ParentNode.RemoveChild NodeList(1)
Loop
Next
0223デフォルトの名無しさん
2017/01/19(木) 00:38:26.41ID:qjpOvOJuプログラムでプログラム文を自動生成します、みたいな話だろ?
0224デフォルトの名無しさん
2017/01/19(木) 05:02:36.80ID:WDgxZeysまたは既に、外人が作って、Gitにあるはず。
日本のサイトで探しても、見つからない
それに、深さ優先探索か幅優先探索を指定する
Pythonのwalkは、あるディレクトリ以下の階層を渡り歩く。
つまり、それのXML版だろ
ディレクトリもXMLも、Tree だから、基本的には同じ
0225デフォルトの名無しさん
2017/01/19(木) 06:58:46.51ID:JadLiFtg> シートだと階層構造のデータを保存しにくいからxmlファイルにして保存したい
XML 文字列ををセルとかブックのプロパティとかに入れときゃいいだけじゃないの?
0226デフォルトの名無しさん
2017/01/19(木) 07:34:02.29ID:R0f6tJX+できたああああああああああああ
ありがとうございます!
罫線やノード名の一部を太字にするなど微修正は自分でできました。
皆様ありがとうございました。
0227デフォルトの名無しさん
2017/01/19(木) 12:16:13.59ID:SpG+j8gZ1 山田 10:50
2 山田 11:50
3 山田 4:50
山田の時間(B列)を1行目から順番に変数(a)に代入して合計を計算して、
Application.Floor(a + TimeValue("0:30"), TimeValue("1:00"))で
30分繰り上げ(例えば1:30の場合2:00に繰り上げ)しているのですが、
総計が24時間を超えると"1900/1/1 28:00"と日付が入り、表示形式がおかしくなってしまいます。
繰り上げのコードが間違っているのでしょうか?
0228デフォルトの名無しさん
2017/01/19(木) 12:21:46.57ID:4RX8xFF/[h]:mm
0229デフォルトの名無しさん
2017/01/19(木) 12:47:27.51ID:ZXvOrtNX解決しました
ありがとうございます
0230デフォルトの名無しさん
2017/01/19(木) 15:08:53.45ID:SN1gevnSエクセルにはブック共有状態で変更履歴記録機能があり、新しいシートに変更履歴一覧を作成できると思います。
そこで、VBAで変更期間「すべて」で「新しいシートに変更履歴一覧を作成」の操作をしたいのですが可能でしょうか?
大量のドキュメントの変更履歴を取りたいので、マクロ化したいのが目的です。
可能であればやり方を教えていただきたいです。よろしくお願い致します。
0231デフォルトの名無しさん
2017/01/19(木) 15:37:44.80ID:irXhj7sGとりあえずマクロの記録を試してみたら?
0232デフォルトの名無しさん
2017/01/19(木) 15:50:51.90ID:9G0IwAcwこれは俺も知りたいc++だとxmlに書いてるのよく見るけどvbaはどうなんだ
0233デフォルトの名無しさん
2017/01/19(木) 18:24:05.68ID:xZWyIIjd大きな差があるようですがこんなものですか。
7万レコードのセル値取得に使ったのですが、前者は0.3秒ほど
後者は130秒かかりました。
上のほうのレスで .Textを見つけて喜んで使ってみたのですが、、
0234デフォルトの名無しさん
2017/01/19(木) 20:17:42.34ID:irXhj7sGTextの方は書式を評価しないといけないからそんなものじゃね?
0235デフォルトの名無しさん
2017/01/19(木) 20:23:44.41ID:R0f6tJX+0236デフォルトの名無しさん
2017/01/19(木) 21:13:36.84ID:9zfnUwsNなるほど
.Valueで取得してから書式あてた方が無難ですね
0237デフォルトの名無しさん
2017/01/19(木) 23:40:16.64ID:qjpOvOJuValueで取得しようとすると、
#N/Aでコケるから、ずっとText使ってたわ!
ん?
でも0.3秒と130秒って違い過ぎじゃないか?
0.3秒なんて、For Nextじゃ取れないと思うが。
a=Range("A1:A70000").Valueとかじゃないと。
0238デフォルトの名無しさん
2017/01/20(金) 04:41:52.83ID:9/J9Uge2そう言われると、、あらためて追試。
試したコードはこんな感じ。
Cells(1, 1).Resize(70000, 1).Select
'------------------------------
st = Timer
For Each r In Selection
var = r.Value
Next
ed = Timer
Debug.Print "by .Value", ed - st; "[Sec]"
'------------------------------
st = Timer
For Each r In Selection
var = r.Text
Next
ed = Timer
Debug.Print "by .Text", ed - st; "[Sec]"
セルには[1-70000]のシーケンシャルな数値を格納
これの書式なしと書式あり"[h]:mm"を試しました。
(続く)
0239デフォルトの名無しさん
2017/01/20(金) 04:43:33.99ID:9/J9Uge2(続き)
結果、、
---------------------------------------------
by .Value 0.1855469 [Sec]
by .Text 1.241211 [Sec]
by .Value (Formatted) 0.1806641 [Sec]
by .Text (Formatted) 1.569336 [Sec]
---------------------------------------------
結果、差はあるものの、日中にテストしたものほど
は差がでませんでした。
日中のデータで再度試した結果です。
---------------------------------------------
by .Value (Formatted) 0.2011719 [Sec]
by .Text (Formatted) 99.20215 [Sec]
---------------------------------------------
他の要因もあるかもしれません。
実際のデータはOracleからSQLで引っ張ってきた
テーブルを.Unlistしたもので、70000行x130列ほど
の大きさ。これのV列あたりにある "hh:mm"書式が
当たっているというものです。
自動再計算はOffです。
0240デフォルトの名無しさん
2017/01/20(金) 11:00:31.99ID:32Bwzd9Pシート1のA列で文字列の色を変えてその後A列に同じ文字列が書き込まれたら同じ色に変えたいんです。
そして出来たらシート2のA列の同じ文字列も同じ色にしたいんです。
誰かコード分かる方いますでしょうか?
0241デフォルトの名無しさん
2017/01/20(金) 13:04:58.83ID:nnKMBoVDスマホから書き込もうと思ったら案外大変で諦めた
A列の重複を排除したリストを作成(配列、コレクション等)
リストとA列を比較して色を指定
で行けるんだけど、何がわからんのか
文字列の種類は不定なのか固定なのか、色に指定はあるのかなど情報も少ない
0242デフォルトの名無しさん
2017/01/20(金) 13:05:01.85ID:JXdqXSkU自分でマクロの記録で調べろよ
0243デフォルトの名無しさん
2017/01/20(金) 14:58:10.41ID:Nvso2zBq0244デフォルトの名無しさん
2017/01/20(金) 16:54:43.86ID:bVBZQrA4学校でgoogle financeのapiを利用したのを作成しているのですが
A列の証券コードの羅列を読み取りURLに追加しJSONのティックデータを取得するところまでは
行けたのですが、どうやって個々にパースすればいいかわかりません、生データを取得するまでのコードは以下
Dim W As Worksheet: Set W = ActiveSheet
Dim i As Integer
Dim Last As Integer
Last = W.Range(
0245デフォルトの名無しさん
2017/01/20(金) 16:59:50.09ID:bVBZQrA4取得したでーたは下のurlの通りです
https://finance.google.com/finance/info?client=ig&q=TYO:1332,1515,1925,7203,8058,8766,8801,9501,1954,1973,2928,2172,7980,6656,9085,5998,4556,1381,1400,1382,1739,2173,2351,7464,1734,7958,1736,2425,6960,2121
とずっと続いています
これを個々にパースしてセルごとに振り分けたいのですが
個々にパースするにはどのようにすればいいかわかりません
誰か助けてください
0246デフォルトの名無しさん
2017/01/20(金) 17:12:18.70ID:gQ8iElJX"vba json パース"でググる
0247デフォルトの名無しさん
2017/01/20(金) 18:21:41.59ID:FuK3VNeE在日か?日本語不自由そうだな
0248デフォルトの名無しさん
2017/01/20(金) 18:33:30.59ID:Zm/Pjw4Evbaからセルに10銘柄程コードを入れても頻繁にすべてN/Aと出てしまうのです
接続が切れてるわけではなく、例えばexcelの上書き保存をクリックするとN/Aが
消えてすべて表示されるのです
vbaでは画面の更新は切ってないのですが原因は考えられますか?
0249デフォルトの名無しさん
2017/01/20(金) 19:25:28.08ID:gGEm4cbBPowerShellやC#やVB.NETじゃダメだったのか
0250デフォルトの名無しさん
2017/01/20(金) 20:22:24.18ID:ymDflbNb結果を Excel で処理したいんだろ
なら VBA が一番自然だわな
ただ言語としての機能がいまいちだから俺なら PowerShell で取得して Excel に書き込むかな
0251デフォルトの名無しさん
2017/01/20(金) 20:58:17.11ID:mJKyjGCeいや、いいんじゃないか?
ただスレチになるから
そういう話は.Netのスレでやればいいだけで
0252デフォルトの名無しさん
2017/01/20(金) 21:08:26.20ID:MJq7L3EOこれ?
DATA_SESSIONS はjsonの配列表記っぽいけど、データ部は単なるカンマ区切りのような(他も改行区切りだしjsonじゃないような)
.NETもjsonのパースにはNuGetが必要じゃなかったっけ(なんかDLLが増えるのが嫌で自力パースしたことある)
PowerShellはjsonのパースもできるのか
0253デフォルトの名無しさん
2017/01/20(金) 21:31:05.58ID:z3TtdYe7えくせるしかないなら仕方ない
0254デフォルトの名無しさん
2017/01/20(金) 22:33:30.45ID:vub4eIsVそれは本職プログラマーの発想だろうな。
事務職プログラマーは、VBAが一番いいの。
普段からエクセル使ってるから。
0255デフォルトの名無しさん
2017/01/20(金) 22:47:39.08ID:RRdjAoJXもうちょっとPSや.NETとの連携が楽になれば助かるね
0256デフォルトの名無しさん
2017/01/20(金) 23:00:24.99ID:v0MXJAlx0257デフォルトの名無しさん
2017/01/20(金) 23:58:46.82ID:0ryOpRhFまあ VB.Net for Application でもいいけど
0258デフォルトの名無しさん
2017/01/21(土) 00:17:22.31ID:O6MYDtgM0259デフォルトの名無しさん
2017/01/21(土) 00:37:57.62ID:7WDSmlh4送信先やCCやタイトルや本文は書くことができました。
しかし本文のある部分を好きな色にしたり好きなフォントにしたり好きなサイズにしたりハイパーリンクをつけたいんです。
そのためにはどうすればいいでしょうか?
0260デフォルトの名無しさん
2017/01/21(土) 08:04:31.56ID:6NvQGvfC2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
0261デフォルトの名無しさん
2017/01/21(土) 09:24:23.74ID:W/Qp5igc↓のサイトを参考にして作ってみたら?
http://outofmem.tumblr.com/post/63355773212/vbavbaでjsonをパースする
ざっくり 作って見たけど なんとかなりそうよ
学校の課題らしいからこの辺で
では
0262デフォルトの名無しさん
2017/01/21(土) 10:17:45.16ID:W/zpHkC+学生なら勉強として書いてみる価値はある
0263デフォルトの名無しさん
2017/01/21(土) 11:18:37.44ID:1cIKmUbZHTML でやるならここのサンプル
https://msdn.microsoft.com/ja-jp/library/office/ff869979.aspx
リッチテキストでやるならフォーマットを RTF に設定して RTFBody に設定すればいい
https://msdn.microsoft.com/ja-jp/library/office/ff867828.aspx
0264デフォルトの名無しさん
2017/01/21(土) 11:23:47.66ID:7WDSmlh4ありがとうザマス。
やってみるでガンス。
0265デフォルトの名無しさん
2017/01/21(土) 11:27:24.97ID:7WDSmlh4Outlookのカレンダー(おそらく型はolAppointmentItemでしょう)の本文でも
本文のある部分を好きな色にしたり好きなフォントにしたり好きなサイズにしたりハイパーリンクをつけるにはどうすればいいでしょう?
ちょっと調べるとBodyFormatプロパティやHTMLBodyプロパティはなさそうですが。
0266デフォルトの名無しさん
2017/01/21(土) 11:44:27.71ID:1cIKmUbZHTMLBody はないけど RTFBody はあるよ
https://msdn.microsoft.com/ja-jp/library/office/ff861303.aspx
0267デフォルトの名無しさん
2017/01/21(土) 12:01:08.22ID:7WDSmlh4わたしのOffice2007のバージョンのOutlookにはRTFBodyプロパティは無いようなのですが。
http://www.dotup.org/uploda/www.dotup.org1130546.png
でもOffice2007でもカレンダーの本文のある部分に手動で装飾ができるのでマクロでもできるはずだと思います。
どうすればいいのでしょうか?
0268デフォルトの名無しさん
2017/01/21(土) 13:22:18.60ID:JwMYXArD全部用意してやるからActiveXやWin32APIを使うなと言わんばかりの不便さ
言語の内部にない機能を外から持ってくるからオープン系と言うんだと思ってたけど
0269デフォルトの名無しさん
2017/01/21(土) 13:57:11.70ID:1cIKmUbZう〜ん、ないなら無理っぽいかと
> でもOffice2007でもカレンダーの本文のある部分に手動で装飾ができるのでマクロでもできるはずだと思います。
アプリの機能の全てをマクロでサポートしてるとは限らんし...
0270デフォルトの名無しさん
2017/01/22(日) 18:24:33.89ID:dK0oU8+I仕事で各部署から大量に写真が来て、部署毎の名前のフォルダに連番ファイルで保存しているのですが、
フォルダの最後のファイルだけピックアップする必要ができてしまいどうにも困っています。
Excelのマクロを使えばどうにかなりそうだとは思うのですが、どなたかお知恵を貸していただけないでしょうか?
例)
c:\営業一課\営業一課00001.jpg 〜営業一課00060.jpg
c:\資材課\資材課00001.jpg 〜 資材課00020.jpg
c:\物流課\物流課00001.jpg 〜 物流課00120.jpg
等、ファイル名は[フォルダ名 + 5桁の数字]。5桁の数字は00001から始まって、終わりの数字(ファイル数)はフォルダ毎にバラバラの状態です。
この状態で、↑の例で言うなら営業一課00060.jpgと資材課00020.jpgと物流課00120.jpgを、
c:\最後\ のフォルダに切り取り貼り付けしたいのですが…
マクロ限定では無く、何かのソフトの組み合わせで実現できるというならそれでも構いません。
フォルダ数が10や100なら力任せにファイラーで移動するのですが、現在50000くらいフォルダ数があって、一日200-300くらいの勢いで増えてます…
0271デフォルトの名無しさん
2017/01/22(日) 18:45:46.18ID:mco4N0ih0272デフォルトの名無しさん
2017/01/22(日) 18:56:47.41ID:PXtZmaP4切り取り貼り付けで馬鹿だとよくわかる
ロジック的にも間違いを引き起こすようなロジックしか考えられないし
馬鹿確定
0273デフォルトの名無しさん
2017/01/22(日) 19:13:35.66ID:K9IWtO+t>>272みたいな上級者気取りが現れるから仕方ないか・・
これを参考にして
http://officetanaka.net/excel/vba/file/file07.htm
0274デフォルトの名無しさん
2017/01/22(日) 19:49:33.32ID:YJLP3OgH$work =
■ このスレッドは過去ログ倉庫に格納されています