TOP絵変更 → 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41  クリックすると変更されます
HOME

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WORD VBA あれこれ

完全に備忘録。
まぁしかしググれば出るものばかりだが。




WORDには『Tasks』っていうオブジェクトがあって、
タスクマネージャーの要素が入っているらしい。
EXCELにはないようだ。

WORDのVBAで開発してるならもう直接
Tasks("Microsoft Graph - 新規シート のグラフ").Close
とか書くと、タスクマネージャーで開いてるもんを
強制的に閉じる。


もしEXCELのVBAで開発してるなら、
WORDを起動してそこから間接的にタスクマネージャーを
いろいろすればいい。

Set WD = CreateObject("Word.Application")
WD.Tasks("Microsoft Graph - 新規シート のグラフ").Close

上のような感じで。

まぁWORDを開きっぱなのもアレなんで、
WD.Quit
Set WD = Nothing
でも付けたしときゃ綺麗に閉じる。


実行中のタスクを探すやつは
まんまググったら出てきたからURLだけ乗せておく。
Office TANAKA - Excel VBA Tips[実行中のタスク一覧(非API)]

このサイトにある、
For Each task In WD.Tasks

を使って、まずは自分が何かしらやりたいタスクの名前はなんなのかを
見つけるというときも便利。

しかし、VBAでタスクを何かしらしたいなんて思う
個人ユーザははたしているのだろうか…。




次にXMLを開く技

VBAでXMLを何かしらしたい場合は、
まず参照設定の設定をする。
今私の手元にあるWORD VBAの参照設定では、
Microsoft XML, v6.0 にチェックを入れている。

私は以下のような感じのを用意した。


Const XML_FILE As String = "\test.xml"

Function readXML(file_path As String) As IXMLDOMNode
Dim dom As New MSXML2.DOMDocument60 ' XML接続

dom.validateOnParse = True
If Not dom.Load(file_path & XML_FILE) Then
MsgBox "XMLファイルが読み込めませんでした。"
Exit Function
End If

Set readXML = dom.SelectSingleNode("root")

End Function


引数にXMLファイルのあるファイルパスを、
定数XML_FILEにはXMLファイル名を設定。

XMLファイルの中身は以下のようにしてみた。

<?xml version='1.0' encoding="utf-8"?>
<root>
<User>sa</User>
<Pass>pass-01</Pass>
<ODBC>DATA_TEST</ODBC>
</root>


Set readXML = dom.SelectSingleNode("root")
ってすると、
XMLの <root> から </root> までのデータを
読めるようになるよってこと。


これは返り値にして渡しているので、
この関数は以下のような感じで呼び出す感じになると思われる。

Dim ndRoot As IXMLDOMNode
Set ndRoot = readXML("C:")
If ndRoot Is Nothing Then
Exit Sub
End If


とりあえず読み込めなかった場合はExit Subしてる。
ファイルパスはC直下にしてみた。

んで、rootの下のはどうやって取り出すかというと、

Dim str As String
str = ndRoot.SelectSingleNode("Pass").Text

こんな感じで取り出せる。
いや、書き方は同じなんだが.Textがついている。
この場合変数strには『pass-01』という値が入る。


ついでにもし以下みたいに入っていたら

<root>
<Test>
<Test1>a</Test1>
<Test2>b</Test2>
</Test>
</root>


こうする。

str = ndRoot.SelectSingleNode("Test/Test1").Text


さらについでにこうなってたら

<root>
<Test>
<Test1>a</Test1>
<Test1>b</Test1>
</Test>
</root>

こう出来る

Dim ndChild As IXMLDOMNode
Dim ndChild1 As IXMLDOMNode

Set ndChild = dom.SelectSingleNode("root/Test")

For Each ndChild1 In ndChild.ChildNodes
MsgBox ndChild1.Text
Next


さらにこうも出来る

Dim ndChildList As IXMLDOMNodeList
Dim ndChild1 As IXMLDOMNode

Set ndChildList = dom.SelectNodes("root/Test/Test1")
For Each ndChild1 In ndChildList
MsgBox ndChild1.Text
Next


わかったか?(わかりません

For文も使えるため、もしかしたらデータベース化とか
出来るかもしれない。ていうかWORD2007以降の拡張子が.xlsxというのは
そうしてるらしい。最後のxはXMLのxだとか。




グローバル変数について

グローバル変数は標準モジュールのところにおかなきゃだめよってのを
最近になって知った。まぁ、グローバル変数というか定数というか
使わないので調べもしなかっただけだが。

グローバルなやつには最初に『Public』を付ける。

Public Const FILE As String = "\Test.xml"
Public Test As String

ていうかグローバル変数使うなら私はXMLファイルを読み込む。




Select Case について

Select Case はこう使う。

Select Case test
Case 0

Case 1

Case Else

End Select


いつも毎回End Selectを忘れてしまう。
End IfとかNextとかLoopは忘れないのに。
そしてなぜSelect Caseを備忘録に書こうとしたのか謎。




Replace(置換)について

こうやる。
wk = Replace(wk, "\", "¥")




エラーで飛ぶやつ

こうやる。

Sub Test()
On Error GoTo errorHandler

Exit Sub

errorHandler:
MsgBox "エラーが発生しました。"
errFlg = True

End Sub



If文のアンドとかオアについて

||とか&&じゃないってことを忘れないようにしよう。
And と Or を使う。

If test1 = "" And test2 <> "" Then

If test1 = "" Or test2 <> "" Then



表示形式について

str = Format(kingaku, "###,###,##0")

ってやると、9桁まで、3桁ずつカンマつきで表示
kingakuが""の場合、0って出てくる。




配列について

Dim ha As Variant
Dim work As String

work = "1,2,3"

ha = Split(work, ",")


ってやると、配列として1,2,3が入る。

Erase ha

ってやると内容を消せる。
UBound(ha)ってやると要素数を取得できる。



あとヘッダーとかブックマークとかあるけど
めんどい。
ブックマークはマクロの記録で見ればおk

ヘッダーは…うぅむ。一応置いておこう。
セクション区切り後のヘッダー設定。前と同じヘッダーにはしないようにしている。
ヘッダー用シークバーも閉じる。しかし下のやつだとセクション2しか設定できないので
そこは開発用途に応じて変更ってところか。


Selection.InsertBreak Type:=wdSectionBreakNextPage

ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter. _
LinkToPrevious

newDoc.Sections(2).Headers(wdHeaderFooterPrimary).Range.Font.Size = 7
newDoc.Sections(2).Headers(wdHeaderFooterPrimary).Range.Text = "test"
newDoc.Sections(2).Headers(wdHeaderFooterPrimary).Range.Font.Position = 0
newDoc.Sections(2).Headers(wdHeaderFooterPrimary).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify

Selection.Find.ClearFormatting

ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument


スポンサーサイト

テーマ : テイルズウィーバー
ジャンル : オンラインゲーム

コメントの投稿

非公開コメント

No title

暇やねw

No title

>硫酸で流産
お前もなw

著作権

Copyrights (C) NEXON Corporation and NEXON Co., Ltd.
All Rights Reserved.
乱数試行機

乱数試行機

成功率 %
試行回数 回

成功    :0 回
失敗    :0 回
成功率結果 :0 %
試行回数結果:0 回
簡易MRシミュレータ

簡易MRシミュレータ
by †真・ブリニクルディメンションスレイヤー

S:64 
H:136 
F:17 
I:16 
M:14 
X:16 
A:11 
Q:10 
C:9 
アンチ無
MR費用:0
MR券込:0
回した回数:0

※ステがMAXになると
 黄色文字になります
 ステ自体違う場合はコメントくだs
※ラジオボタンを押下すると
 アンチマジックを使った状態に
なります

個人リンク
みんなの呟き

   



サイト説明
BloodyRosary は
テイルズウィーバーなブログです。
レコ…霧鯖で活動してるってばよ。
TwitterID:yoinagiTW

このブログはリンクフリーです。
+50000
しかしなぜか東方カウンター
自己紹介

宵凪(テチ) Lv:290
3次覚醒済


江戸川ドイル(アナイス) Lv290
2次覚醒済


竜崎シオン(イソ) Lv290
2次覚醒済


ラストセラフィ(ベンヤ) Lv290
2次覚醒済


シルフィアス(ナヤ) Lv:290
2次覚醒済


ジールラファル(マキシ) Lv:255
覚醒済


レスヴィリア(ミラ) Lv:255
覚醒済


聖王リヴァイア(シベ) Lv:255
覚醒済


セレス(クロエ) Lv265
覚醒済


月千夜(ジョシュ) Lv255
覚醒済


雪千夜(ランジエ) Lv255
覚醒済


超社長(イサック) Lv255
覚醒済


ナズナ(ボリ) Lv255
覚醒済


シルベイン(ピン) Lv:255
覚醒済


ディシディア(ルシ) Lv255
覚醒済


メルブレイズ(ロアミニ) Lv255
覚醒済


ルヴァリオ(ノクターン) Lv255
覚醒済


臼いネコ(テチ) Lv290


x音葉x(テチ) Lv199

他のキャラ
セリカ様(アナイス) Lv290
黒銀シア(ピン) Lv274
全キャラレコ…霧鯖で適当に活動中
今までの絵
右下に行くほど新
左上に行くほど古
リンクにマウスをあわせると
縮小画像表示

ちなみに読み込み遅いです。
最新コメント
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
リンク
テスト
クリックすると
シナリオ開始 
 
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。