質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2674閲覧

VBAにてxmlファイルのステップカウンタ作成

matikadokadosan

総合スコア15

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/02/22 05:20

お世話になっております。
今回VBAにてxmlファイルのステップカウンタを作りたいと思って途中まで作ったのですが複数コメントを除去したステップ数を出したいのですが自分で考えても正解にたどり着けなかったので投稿させていただきます。
尚、ソースコードはとある理由にてそのまま投稿できないので手書きでの書き込みとなりますがよろしくお願いいたします。
また、ツールなどを使うことに関しては考えてません。

手書きソース

ファイル取り込みオブジェクトにて取り込み後での処理…↓↓↓

Do While .AtEndOfstream <> true
If Trim(line) <> "" Then

If Left(.line , 2) <> "<!" And Right(line , 2) <> "->" Then If Left(.line , 2) ="<!" And Right(line , 2) <> "->" Then 'ここからわかりません... Else count = count + 1

End If

'ここからわかりません
の記述があるブロック内にて
どのようにしたら複数行コメントを無視できる処理がかけるか全くわかりません。

すみません、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unz.hori

2018/02/22 06:01

自作にこだわらないのであればツールを探した方が良いのでは?コメント判定はネストした場合など奥が深いですよ。
matikadokadosan

2018/02/22 08:22

ツールがDLできない環境なので自作するしか…。 考えているのは<!をトリガーにfor文で回しカウントし->までのカウント-実数というのを考えてます…。
guest

回答2

0

<tag>value<!tag>の数をカウントするのであれば、
「<!」が幾つあるか数えればいいかと。

文字のカウント方法は、以下の3つくらいかな。
1.Split :配列要素でカウント
2.Replace:対象文字を消して、前後の文字長からカウント
3.Instr :Hit時に開始位置をずらしてLoopしつつカウント

3は処理が少し面倒ですが、
小メモリ&高速、という点でメリットがあります。

投稿2018/02/22 09:20

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

サンプルデータがなく、動作テストできませんが
下記のようなコードを参考にしていただいたらできませんか?

VBA

1Dim strLine as String 2Dim blnCountStop As Boolean 'カウントストップフラグ 3 4blnCountStop=False 5Do While .AtEndOfstream <> true 6 strLine = Trim(.line) 7 If strLine <> "" Then 8 If blnCountStop Then 9 '条件を満たしたら'カウントストップフラグOFF 10 If Right(strLine , 2) = "->" Then blnCountStop = False 11 Else 12 If Left(strLine , 2) <> "<!" And Right(strLine, 2) <> "->" Then 13 'カウントする 14 count = count + 1 15 ElseIf Left(strLine , 2) = "<!" And Right(strLine , 2) = "->" Then 16 'カウントしない 17 ElseIf Left(strLine , 2) = "<!" And Right(strLine , 2) <> "->" Then 18 'カウントストップフラグON 19 blnCountStop=True 20 End If 21 End If 22 End If 23Loop

投稿2018/02/22 08:54

Mustang32861341

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問