• 締切済み

「Wordの表のセルの結合情報」をVBAで取得する

「Wordの表のセルの結合情報」をVBAで取得する方法 EXCELのVBAであれば、下記サイトの下記マクロで判断できるようなのですが、 Word VBAには、「MergeCellsプロパティ」が無くて、駄目でした。 別の方法で判定出来ない物でしょうか? http://officetanaka.net/excel/vba/tips/tips50.htm ---------------------------------------------------------------------- Sub Sample2() Dim i As Long, buf As String For i = 2 To 9 If Cells(i, 1).MergeCells Then buf = buf & Cells(i, 1).Address(0, 0) & "-->結合されています" & vbCrLf Else buf = buf & Cells(i, 1).Address(0, 0) & "-->結合されていません" & vbCrLf End If Next i MsgBox buf End Sub ヘルプを調べましたが、ざっと見たところ載っていないように思います。 経験あるかた居たらご教授頂けると助かります。

みんなの回答

  • kcskato
  • ベストアンサー率0% (0/0)
回答No.2

セルが結合されているとき、セルのheigtプロパティは9999999になるので、結合されているかを調べるには以下のようにheightを求めれば判断できます。 msgbox Selection.Cells(1).height 値が9999999であれば結合さているセルです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

Wordの場合、セルを結合した場合には1つの大きなセルに作り替えられます。 例えば、横並びのセル2つを結合すると、セルの1つの幅が変更されて、もう1つのセルは削除されます。 なので、結合しているという状態ではないので、判断できません。

VBScriptingMan
質問者

お礼

ご回答ありがとうございます。 関数が無いようなので、自作で何らかの条件を判定してセルの結合を判定出来ないものか考えてみます。 何か情報やアイデアがでたら、またよろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAショートカットキー セルの結合・解除

    VBAでエクセルで使用するショートカットキーを作成しております。 エクセルは2007を使用しています。 Ctrl+Shift+F で 選択したセルが、結合していたら解除、解除されていたら結合  という命令を作成しました。(ネットから拝借ですが、、、) 選択した範囲のセルに何も書かれていないときは良いのですが、何かが入力された範囲を 選択して、実行するとエクセル上で 【選択範囲には複数のデータ値があります。1つのセルとして結合すると、選択したセル範囲になるもっとも左上端になるデータのみが保持されます(空白セルは無視されます)】 という警告(?)ウインドウが表示されます。 その後「 OK 」 を押すと問題ないのですが「 キャンセル 」を選択すると VBAで ”実行時エラー’1004” RangeクラスのMergeCells プロパティを設定できません。 と エラーになってしまいます。 「キャンセル」を選択した際に、エラーにならないようにするには、どのように修正すれば良いか 教えて頂きたいです。 以下、作成したマクロです。 デバッグを確認すると[ .MergeCells = True ]の部分が黄色くなります。 ---------------------------------------------------------------------- Sub auto_open() Application.OnKey "+^F", "セルの結合解除" End Sub ’------------------------------ Sub セルの結合解除() With Selection If .MergeCells = False Then .MergeCells = True .HorizontalAlignment = xlCenter Else .MergeCells = False End If End With End Sub ---------------------------------------------------------------------- 何卒宜しくお願い致します。

  • VBAでセルの結合と分割(解除)をお願いします

    宜しくお願いいたします。 H5とH6のどちらかに数字か記号が入っています以下30個のセルも同様です、H6にデータを入れH5とH6を結合するとセルの認識はH5を認識するのでH6のデータは他へコピー出来ないので結合したセルを再度分割して一行に並び変えているのに下記の構文で実行しているのですが結合にかなりの時間がかかっています。分割は瞬時にできています。 お願いしたい件は即時もしくはなるべく早い方法がありましたらお願いいたします。 こんな感じで作りました Sub 結合() For a = 8 To 38 Range(Cells(5, a), Cells(6, a)).Select Selection.Merge Range(Cells(7, a), Cells(8, a)).Select Selection.MergeSub 以降29個    ・    ・    ・ Next a End Sub 分割() Dim range1 As Range Set range1 = Range("H5:AL5") range1.MergeCells = False Set range1 = Range("H7:AL7") range1.MergeCells = False 以降29個   ・   ・    ・ End Sub 良い方法をご伝授宜しくお願いいたします

  • VBA - セル解除

    コピーA列結合セルを解除して、解除した行にすべてに「OK」と入れたいのですがうまくいきません。 アドバイスをお願い致します。 Dim i, Addr Worksheets("Sheet1").Range("A:A").Copy With Worksheets("Sheet2") .Range("A1").PasteSpecial . . If .Cells(i, 1).MergeCells Then Addr = .Cells(i, 1).MergeArea.Address .Cells(i, 1).UnMerge .Cells(i, 1)(Addr) = "OK" '←ここがダメです。 End If . .

  • 結合セル解除

    補足情報の追加書き込みがわかりませんので何度もトビを起こしいます。 申し訳ございません。 ↓例で、 G列結合セルを解除して、解除した行にすべてに"●"と入れたいのですがコピーできません。。 ご意見をいただけませんか? ------------ Option Explicit Sub Sample() Dim nRow, i, Addr, tmp Worksheets("Sheet1").Range("D:E,K:K,V:Y,AF:AM").Copy With Worksheets("sheet2") 'Y列も"sheet2"にコピー(G列) .Range("A1").PasteSpecial Paste:=xlPasteValues nRow = .Cells(Rows.Count, 1).End(xlUp).Row 'データのある最終行 For i = 5 To nRow If .Cells(i, 2) = "" Then .Cells(i, 2) = .Cells(i - 1, 2) 'B列 If .Cells(i, 4) = "" Then .Cells(i, 4) = .Cells(i - 1, 4) 'D列 Next i 'Y列("sheet2"のG列)のデータ分行を追加 For i = nRow To 4 Step -1 'Y列("sheet2"のG列)にデータがあるか If .Cells(i, 7) <> "" Then tmp = .Cells(i, 7) '-------------ここがうまくいきません。 'G列結合セルを解除して対象行にすべて「OK」と入れる。 If .Cells(i, 7).MergeCells Then Addr = .Cells(i, 7).MergeArea.Address .Cells(i, 7).UnMerge .Range(Addr) = "●" End If '------------ここがうまくいきません。 .Rows(i).Copy .Rows(i).Insert .Cells(i + 1, 3) = "-" .Cells(i + 1, 6) = tmp '.Cells(i, 7) = "●" .Cells(i + 1, 7) = "★" End If Next i 'Y列("sheet2"のG列)の最後尾列(Q列)への移動 .Columns(7).Cut .Columns(17).Insert End With End Sub

  • VBA どこでもセル選択

    教えて頂いたVBAなのですがもう一つ Sub Macro1() Dim Ws01 As Worksheet Dim Counter As Long, i As Long, j As Long Dim INP As String Set wS = Worksheets("Sheet4") wS.Cells.ClearContents For i = 3 To ActiveSheet.UsedRange.Rows.Count INP = "" For j = Selection(1).Column To Selection(Selection.Count).Column If Cells(i, j) = 1 Then INP = INP & Cells(2, j) & "," End If Next j Counter = Counter + 1 If INP <> "" Then wS.Cells(Counter, "A") = Left(INP, Len(INP) - 1) End If Next i End Sub -------------------------------------------------------------- For i = 3 のところを3としないでどのセル(行)にも対応させたいのですが どうすればいいでしょうか?

  • ワード vba

    ワードの文書内に、文字があるかどうかをvbaで確認したいのですが エクセルのコードを張り付けてみましたが、 もちろんエラーになります。 Sub Macro() If Not Cells.Find(What:="test", MatchByte:=False) Is Nothing Then Debug.Print "testはあります" End If End Sub Cellsで、エラーになります。 このようなコードをワードで使う場合はどう書き換えればいいでしょうか? よろしくお願いします。

  • Excelで複数セルからの文字の結合

    B列からF列までのセルの内容を結合してH列に表示させるため、 以下のVBAを使用したのですが、結果が上手くいきません 原因など分かりましたら、指摘をお願いします マクロの内容 Sub test01() Dim c As Range Dim i As Long With ActiveSheet i = 1 Do While .Cells(i, "A") <> "" If .Cells(i, "A") <> "" Then For Each c In .Range(.Cells(i, "B"), .Cells(i, "B").Cells(i, "F")) .Cells(i, "H") = IIf(.Cells(i, "H") = "", c, .Cells(i, "H") & "/" & c) Next c Else .Cells(i, "H") = .Cells(i, "B") End If i = i + 1 Loop End With End Sub シートの内容  ABCDEFGH 1 1あいうえお 2 2か くけこ 3 3さし せそ 実行の結果 あ/い/う/え/お/ か/き/く/け/こ//さ/し//せ/そ/ さ/し//せ/そ///////////// 上記のようになってしまいます 2行目の「か/き/く/け/こ」の後に1行下の「さ/し//せ/そ」 が入っている状態です よろしくお願いします

  • セルが何行なのかをVBAで取得したい

    セルが何行なのかをVBAで取得したいのですが どういうコードにすればいいですか? 例えば、A1セルに a b c と入ってる場合、3行ですが それをVBAで取得するにはどうすればいいですか? Sub test() Dim r As Range Set r = Cells(1, 1) If r.Value Like "*" & Chr(10) & "*" Then MsgBox "改行があります" End If End Sub というコードで改行が有ることは取得できたのですが 何行かまでは取得する方法がわかりません。

  • Excel VBA セル選択

    Sub 全角() Dim i As Long, buf As String For i = 1 To Len(ActiveCell.Value) If Mid(ActiveCell.Value, i, 1) Like "[ア-ン]" Then buf = buf & StrConv(Mid(ActiveCell.Value, i, 1), vbWide) Else buf = buf & Mid(ActiveCell.Value, i, 1) End If Next i ActiveCell.Value = buf End Sub このコードだと一つのセルしか変換できません。 選択した範囲全部を変換できるようにしたいです。

  • 結合セルが連続して複数存在する場合。

    結合セルが連続して複数存在する場合。 vbaでどのようにしたら単体の結合セルが抽出できるでしょうか? 環境はexcel2003です。(写真は2010ですが) よろしくお願い致します。 以下ソース Dim MergeArray(1000),Mergecount '配列 複数のセルを格納したい。,添え字 Dim i,j'while文で使用する。 Dim m, n '行,列 m = 1'行だけ動かす。 n = 2'列は固定する。 i = 1 j = 1 mergecount = 1 while i <= 1000 If Range(Cells(m,n),Cells(m + j,n).mergecells = True then while j <= 1000 If Range(Cells(m,n),Cells(m + j,n)).mergecells = false then MergeArray(mergecount)=Range(Cells(m,n),Cells(m + j,n))'->ここでエラーがでました。 MsgBox MergeArray(mergecount) mergecount = mergecount + 1 m = m + j End If j = j + 1 wend End If m = m + 1 i = i + 1 Wend

このQ&Aのポイント
  • 大阪府大阪市の天王寺駅から、沖縄本島の中で、天王寺駅からの直線距離が最も短くなる、沖縄本島の中の場所までの直線距離は、何キロメートルになるでしょうか?
  • 大阪府大阪市の天王寺駅から、沖縄本島の中の天王寺駅から一番近い場所(沖縄本島の中で、天王寺駅からの直線距離が最も短くなる場所)までの、直線距離は、何キロメートルでしょうか?
  • 大阪府大阪市の天王寺駅から、沖縄本島の中で天王寺駅から一番近い場所(沖縄本島の中で、天王寺駅からの直線距離が一番短くなる、沖縄本島の中の場所)までの直線距離は、何キロメートルになるのかを教えてください。
回答を見る