Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8 / 45 ページ ←次へ | 前へ→

【778】Re:マクロ作動で「検索/置換」コマンドで...
発言  マナ  - 13/6/1(土) 13:39 -

引用なし
パスワード
   私も勉強中で、間違ってるかもしれませんが、回答してみます。
あとは、ヘルプなりネットで調べてみてください。

Selection.Find.ClearFormatting
とか
Selection.Find.Replacement.ClearFormatting
で書式を解除できます。
マクロの記録でもわかりますし、検索・置換のマクロはサンプルが多いのでネットで簡単に調べることができます

Sub test()
  With Selection.Find
    .ClearFormatting
    .Text = "^13"
    .Replacement.ClearFormatting
    .Replacement.Text = ""
    .Wrap = wdFindStop
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub

また、SelectionオブジェクトではなくRangeオブジェクトを使う方法があります。

>その際、「取消線の削除」のフォント情報が、「検索/置換」の画面を見ると、引き継がれてしまっています。

Rangeオブジェクトの場合、「検索/置換」の設定とは関係なく実行できるらしいです。

Sub test2()
  Dim myRng As Range
  
  Set myRng = Selection.Range
  
  With myRng.Find
    .Text = "^13"
    .Replacement.Text = ""
  End With
  myRng.Find.Execute Replace:=wdReplaceAll
End Sub
・ツリー全体表示

【777】マクロ作動で「検索/置換」コマンドでフォ...
質問  ひさっぷ  - 13/6/1(土) 11:05 -

引用なし
パスワード
   当方、置換マクロを中心にWordマクロを使っています。

校正作業をする際に、「取消線の削除」→「改行の削除」というプロセスをマクロを使ってよく行います。

その際、「取消線の削除」のフォント情報が、「検索/置換」の画面を見ると、引き継がれてしまっています。

具体的に言うと、「編集/置換」で現れる、「検索する文字列」の下の「オプション」の欄が、

「書式」:取り消し線、二重取り消し線(なし)

となってしまっています。

それが原因で、「改行の削除」のマクロが効くのは、取消線が入っている部分のみになってしまいます。

「取消線の削除」を自作で簡単なのを作っているので、参考に挙げさせていただいています。
ここから、書式をデフォルトに戻すプログラムを足せばいいのは分かるのですが、どうすればできるのか分からないので、困っています。

true, falseといった情報を解除するためのコマンドを調べる方法が分からないので、そうした知識がない場合に、調べる方法というのもあわせて教えてくださると、賢くなるので非常に助かります。

●取り消し線を削除するマクロ
Sub 取消線削除()
  With Selection.Find
    .Font.StrikeThrough = True
    .Font.DoubleStrikeThrough = False
    .Text = "*"
    .Replacement.Text = ""
    .Wrap = wdFindStop
    .MatchFuzzy = False
    .MatchWildcards = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub

●改行を削除するマクロ
Sub 改行削除()
  With Selection.Find
    .Text = "^13"
    .Replacement.Text = ""
    .Wrap = wdFindStop
    .MatchFuzzy = False
    .MatchWildcards = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub
・ツリー全体表示

【776】Re:ページ削除について
発言  マナ  - 13/5/27(月) 20:57 -

引用なし
パスワード
   検索してみたら、こういうのがありました

VBA code to delete a page in a Word doc
ht tp://us.generation-nt.com/answer/vba-code-delete-page-word-doc-help-113277822.html

↑のリンク先から、さらにリンク
Word Doesn't Know What a Page Is
ht tp://daiya.mvps.org/wordpages.htm
・ツリー全体表示

【775】Re:ページ削除について
発言  マナ  - 13/5/26(日) 19:30 -

引用なし
パスワード
   1行でも大丈夫かも?

Selection.GoTo(what:=wdGoToPage, which:=wdGoToAbsolute, Count:=myPage).Bookmarks("\page").Range.Delete
・ツリー全体表示

【774】Re:ページ削除について
発言  マナ  - 13/5/26(日) 19:25 -

引用なし
パスワード
   今更ですが書いてみました。

Sub test()
  Dim myPage As Long
  
  myPage = 2 '★ページ指定
  Selection.GoTo what:=wdGoToPage, which:=wdGoToAbsolute, Count:=myPage
  Selection.Bookmarks("\page").Range.Delete

End Sub
・ツリー全体表示

【773】Re:縦横の識別方法、セクションの連続の識...
発言  マナ  - 13/5/26(日) 16:51 -

引用なし
パスワード
   今更ですが、やりたかったであろうことは、こんな感じでしょうか。

Sub test()
  Dim s As Section
  
  For Each s In ActiveDocument.Sections
    With s.Headers(wdHeaderFooterPrimary)
      .LinkToPrevious = False
      If s.PageSetup.Orientation = wdOrientLandscape Then
        NormalTemplate.AutoTextEntries("横用H").Insert where:=.Range
      Else
        NormalTemplate.AutoTextEntries("縦用H").Insert where:=.Range
      End If
    End With
  Next

End Sub
・ツリー全体表示

【772】Re:セルの入れ替え
発言  マナ  - 13/5/25(土) 22:51 -

引用なし
パスワード
   >たとえば3列5行の表があり、
>すべての行に文字が入ってるとします。
>その中の、3列目の2行目と3行目を入れ替える方法、

今更ですが

Sub test()
  Dim tmp1 As String
  Dim tmp2 As String
  
  With ActiveDocument.Tables(1)
    tmp1 = .Cell(2, 3).Range.Text
    tmp2 = .Cell(3, 3).Range.Text
    .Cell(2, 3).Range.Text = Left(tmp2, Len(tmp2) - 2)
    .Cell(3, 3).Range.Text = Left(tmp1, Len(tmp1) - 2)
  End With
  
End Sub
・ツリー全体表示

【771】Re:ExcelでいうSaveCopyAs
発言  マナ  - 13/5/24(金) 22:03 -

引用なし
パスワード
   最近、覗いている掲示板でこんなのありました。
ht tp://www.vbaexpress.com/forum/showthread.php?t=14639

There is no...savecopyas for word as there is in Excel so you have to use a workaround. Make a copy of the file and then saveas the copy...then close the copy.

だそうです。

Application.Documents.Add ActiveDocument.FullName

こんな使い方できるのですね。
・ツリー全体表示

【770】Re:Word-xml形式(2003)⇔Word(2003)自...
発言  マナ  - 13/5/22(水) 19:36 -

引用なし
パスワード
   XML→DOCバージョン
こっちも全然自信なし

Sub test2()
  Dim i As Long
  Const myFld = "C:\Documents and Settings\user\デスクトップ\test2" '★

  With Application.FileSearch
    .LookIn = myFld
    .FileName = "*.xml"
    .SearchSubFolders = True
    If .Execute Then
      For i = 1 To .FoundFiles.Count
        Documents.Open .FoundFiles(i)
      '★ここから---------------マクロの記録の結果を参考に
        With ActiveDocument
          .SaveAs FileName:=Left(.FullName, Len(.FullName) - 3) & "doc", _
            FileFormat:=wdFormatDocument
          .Close
        End With
      '★ここまで--------------------
      Next
    End If
  End With

End Sub
・ツリー全体表示

【769】Re:Word-xml形式(2003)⇔Word(2003)自...
発言  マナ  - 13/5/22(水) 18:55 -

引用なし
パスワード
   わからないなりに書いてみました。(全然自信なし)
DOCと同じフォルダにXMLで保存します。
時間がかかりすぎて使い物にならないかも。

DOC→XMLに変換する部分はマクロの記録を試してみてください。

私にはわからなかったこともあり、
下の例では、必要な部分も、捨ててしまったかもしれません。
適当に修正して下さい。

Sub test()
  Dim i As Long
  Const myFld = "C:\Documents and Settings\user\デスクトップ\test" '★実際のフォルダに

  With Application.FileSearch
    .LookIn = myFld
    .FileName = "*.doc"
    .SearchSubFolders = True
    If .Execute Then
      For i = 1 To .FoundFiles.Count
        Documents.Open .FoundFiles(i)
      '★ここから-----マクロの記録の結果を参考に修正必要
        With ActiveDocument
          .SaveAs FileName:=Left(.FullName, Len(.FullName) - 3) & "xml", _
            FileFormat:=wdFormatXML
          .Close
        End With
      '★ここまで--------------------
      Next
    End If
  End With

End Sub
・ツリー全体表示

【768】Re:Word-xml形式(2003)⇔Word(2003)自...
発言  PPNNOOPP  - 13/5/21(火) 22:50 -

引用なし
パスワード
   >全くわかっていませんが、WordML形式を選んで保存でよいのでしょうか。
→その通りでございます。

フォルダ内(サブフォルダを含む)に複数のファイル(3000前後)存在しているので、VBAで処理できないか考えておりましたが、VBAの知識が乏しいもので、投稿させていただいた次第です。

どうぞよろしくお願いいたします。
・ツリー全体表示

【767】Re:Word-xml形式(2003)⇔Word(2003)自...
発言  マナ  - 13/5/21(火) 22:27 -

引用なし
パスワード
   全くわかっていませんが、WordML形式を選んで保存でよいのでしょうか。

1)もしそうならば、まず一つのファイルを変換する操作について「マクロの記録」を実行し、期待通り動くコードが得られるか確認してみてはでうでしょうか。

2)うまく動くようなら、それを複数ファイルに対して実行出来るようにすることを考えるとよいと思います。
・ツリー全体表示

【766】Word-xml形式(2003)⇔Word(2003)自動変...
質問  PPNNOOPP  - 13/5/21(火) 15:07 -

引用なし
パスワード
   お世話になっております。

Word-xml形式(2003)⇔Word(2003)変換の自動置換ツールを探しておりますが、なかなか見つからないので、VBAで自動処理できないかと思い投稿させていただきました。

やりたいことは下記のとおりです。

1.特定のフォルダ内(サブフォルダを含む)の複数のWord-xml形式(2003)ファイルをWord2003形式に変換する。


上記とは逆に
2.特定のフォルダ内(サブフォルダを含む)の複数のWord2003形式ファイルをWord-xml形式(2003)に変換する。


1.、2.それぞれ別々に処理したいので、ご検討の程よろしくお願いいたします。
・ツリー全体表示

【765】Re:基本的なwordのVBAの操作法
発言  マナ  - 13/5/19(日) 21:50 -

引用なし
パスワード
   ここなどはどうでしょうか。

ht tp://makoto-watanabe.main.jp/WordVba.html#start
ht tp://www.beagle-hc.com/It_program/Word0.html
・ツリー全体表示

【764】Re:セクション区切りのファイルにページを...
発言  マナ  - 13/5/19(日) 11:24 -

引用なし
パスワード
   ときどき意図しないページが印刷されることがありましたが、これでしたか。
参考になりました。

ちなみに、マクロでは、こんな感じみたいです。

ActiveDocument.PrintOut Range:=wdPrintFromTo, From:="p5s3", To:="p2s4"
ActiveDocument.PrintOut Range:=wdPrintRangeOfPages, Pages:="p5s3-p2s4"
・ツリー全体表示

【763】Re:Wordファイル1ページ目選択?
発言  マナ  - 13/5/19(日) 10:01 -

引用なし
パスワード
   今更ですが、勉強のために試してみました。
こういうことでしょうか。
ActiveDocument.Bookmarks("\page").Range.Copy

>  '一枚目、貼付頁選択、コピー
>  Selection.MoveDown Unit:=wdLine, Count:=10, Extend:=wdExtend
>  Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
>  Selection.MoveDown Unit:=wdLine, Count:=27, Extend:=wdExtend
>  Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
>  Selection.Copy
・ツリー全体表示

【762】Re:Word画像サイズ変更をマクロで登録したい
発言  マナ  - 13/5/19(日) 9:49 -

引用なし
パスワード
   今更ですが、勉強のために書いてみました。

Sub test()
  Dim myPath As String
  Dim myFile As String

  myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
  myFile = Dir(myPath & "*.jpg")
  Do While myFile <> ""
    With ActiveDocument.InlineShapes.AddPicture(myPath & myFile)
      .LockAspectRatio = True
      .Width = CentimetersToPoints(10)
    End With
    myFile = Dir()
    Selection.MoveRight
    Selection.TypeParagraph
  Loop

End Sub
・ツリー全体表示

【761】Re:選択した文字列から1文字ずつ削除する...
発言  マナ  - 13/5/19(日) 9:20 -

引用なし
パスワード
   今更ですが、自分の勉強のために書いてみました。

InStrだとワイルドカードが使えないので、Likeを使用しました。

Sub test()
  Dim myStr As String
  Dim s As String
  Dim i As Long
  Dim Yougo As String

  myStr = Selection.Text
  For i = 1 To Len(myStr)
    s = Mid(myStr, i, 1)
    If s Like "[A-z0-9]" Then
      Yougo = Mid(myStr, 1, i - 1)
      Exit For
    End If
  Next
  If Len(Yougo) > 0 Then
    MsgBox "「" & Yougo & "」が取り出されました"
  Else
    MsgBox "取り出しに失敗しました"
  End If
  
End Sub
・ツリー全体表示

【759】Re:Wordに挿入したExcelシート内のデータの取得
発言  マナ  - 13/5/14(火) 19:52 -

引用なし
パスワード
   あちこち探しまわったら、こんなのがありました。

Modify embedded Excel workbook in Word document via VBA
ht tp://stackoverflow.com/questions/483813/modify-embedded-excel-workbook-in-word-document-via-vba

>With Selection.Find
>  .ClearFormatting
>  .Text = "wiffleball"
>  .Execute Forward:=True
>End With

最後のコメント
>this problem was driving me crazy
その気持よくわかりました。

あと、こんなのも。

『MS word2003』でグラフを作成するVBAマクロの作成例
ht tp://bloodyrosary.blog8.fc2.com/blog-entry-1351.html

確かにConvertToShapeとかConvertToInlineShapeでうまくいきました。
・ツリー全体表示

【758】Re:Wordに挿入したExcelシート内のデータの取得
発言  マナ  - 13/5/12(日) 11:34 -

引用なし
パスワード
   本題とは違いますが。わからないことがります。

>1.Wordで『Excelシートの挿入』ボタンでExcelシートを挿入後、

この部分もVBAでと、試してみました。こんな感じです。
しかし、★の行でエラーになります。

実行時エラー1004
WorkbookクラスのCloseメソッドが失敗しました

調べてみたら、SendKeysを使っている例がありました。
これで、うまくいくときもあります。
ですが何回か実行すると、エクセル編集画面が開いたままで
ワード編集画面にもどってくれないときがあります。
どうしたらいいのでしょう?

Sub test()
  Dim myOle As OLEFormat
  Dim myStr As String

  Set myOle = ActiveDocument.Shapes.AddOLEObject(ClassType:="Excel.Sheet").OLEFormat
  
  With myOle.Object
      .Sheets("Sheet1").Range("A1").Value = "test入力"
      myStr = .Sheets("Sheet1").Range("A1").Value
'      .Close   '★ここでエラー
      SendKeys "{ESC}", True
      .Application.Quit
  End With
  
  MsgBox myStr

End Sub
・ツリー全体表示

8 / 45 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
207515
(SS)C-BOARD v3.8 is Free