Word VBA質問箱 IV

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

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


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

【77】Re:コードのバックアップ
回答  ichinose  - 04/1/31(土) 9:35 -

引用なし
パスワード
   ▼こるぎ さん:
おはようございます。ichinoseと申します。
普段、WORD VBAの掲示板は、あまり閲覧していないのですが、気になる内容だったので
投稿しました。
時間が経ってしまったので、ご覧になってもらえないかもしれませんが・・。
>私は、コードを書き換えるために、エクスポートして、そのファイルを
>外付けHDD等に定期的に保存していますが、時々、エクスポート自体を忘れています。
>もし、その間にPCがクラッシュしたら・・・と不安です。
>そこで、コードが格納されているフォルダが分かれば教えていただけないでしょうか。
>そのフォルダごと定期的にバックアップすれば安全ですので。
以下に示すコードの仕様です。

機能: 

指定されたフォルダ内にあるWordのDocファイルに含まれるモジュールを指定された
フォルダ内にエクスポートします。
エクスポートファイルは、指定されたフォルダ内に
Docファイル名(拡張子なし)+"exp"という名前のフォルダを
作成し、その中に作成します。
2度、フォルダ選択ダイアログが表示されます。
最初にエクスポート対象のWordDocumentファイルが入っているフォルダ選択
次がエクスポート先フォルダ選択です。

では、コードです。Thisdocumentのモジュールに
'==================================================================
Sub Document_Open()
  Dim r_fld
  Dim w_fld
  Application.ActiveWindow.WindowState = wdWindowStateMinimize
  AppActivate Application.Caption
  r_fld = get_folder_path("一括エクスポートするWordドキュメントの存在するフォルダを選択して下さい")
  If VarType(r_fld) <> vbBoolean Then
   w_fld = get_folder_path("エクスポート先フォルダを選択して下さい")
   If VarType(w_fld) <> vbBoolean Then
     ans = MsgBox("「" & r_fld & "」に存在するワードファイルのVBAコードを「" & w_fld & "」内に作成します。" & vbLf _
       & "  ・ワードファイル名と同じ名前に「exp」が付いたフォルダが「" & w_fld & "」内に作成されます。" & vbLf _
       & "  ・このフォルダにエクスポートファイルとログファイルが作成されます", vbOKCancel)
     If ans = 1 Then
      WordBasic.DisableAutoMacros 1
      Call export_proc(r_fld, w_fld)
      WordBasic.DisableAutoMacros 0
      End If
     End If
   End If
  Application.ActiveWindow.WindowState = wdWindowStateMaximize
 
End Sub
'==================================================================
Sub export_proc(infld, outfld)
  Dim docnm
  Dim ex_doc As Document
  Dim result
  docnm = Dir(infld & "\*.doc")
  Do While docnm <> ""
   If UCase(infld & "\" & docnm) <> UCase(ThisDocument.FullName) Then
     Set ex_doc = doc_open(infld & "\" & docnm)
     If Not ex_doc Is Nothing Then
      result = export_comp(ex_doc, outfld & "\" & Mid(ex_doc.Name, 1, Len(ex_doc.Name) - 4) & "exp")
      If VarType(result) <> vbBoolean Then
        Call mk_log(outfld & "\" & Mid(ex_doc.Name, 1, Len(ex_doc.Name) - 4) & "exp", ex_doc, result)
        End If
      Call doc_close(ex_doc)
      DoEvents
      End If
     End If
   docnm = Dir()
   Loop
End Sub
'==================================================================
Sub mk_log(foldnm, ex_doc As Document, log_mes)
  If open_txt(foldnm & "\" & Mid(ex_doc.Name, 1, Len(ex_doc.Name) - 4) & ".txt") = 0 Then
   Call put_txt("エクスポート対象ワードファイル : " & ex_doc.FullName)
   For idx = LBound(log_mes) To UBound(log_mes)
     Call put_txt(log_mes(idx))
     Next idx
   Call close_txt
   End If
End Sub


'次に標準モジュール(Module1)
'==============================================================
Function doc_open(flnm) As Document
'ドキュメントを開く
'input   : flnm   ----  オープンするファイルのフルパス
'output   : doc_open -----  Documentオブジェクト
  On Error Resume Next
  Set doc_open = Nothing
  Set doc_open = Documents.Open(flnm)
  On Error GoTo 0
End Function
'==============================================================

Sub doc_close(doc As Document)
'ドキュメントのクローズ
  On Error Resume Next
  doc.Close savechanges:=False
  On Error GoTo 0
End Sub
'==============================================================
Function mk_folder(foldernm) As Long
'フォルダの作成
  On Error Resume Next
  mk_folder = 0
  MkDir foldernm
  mk_folder = Err.Number
  On Error GoTo 0
End Function
'==============================================================

Function get_folder_path(mes)
'フォルダ選択処理
'input   :  mes  : 表示メッセージ
  Dim fld
  Set fld = CreateObject("Shell.Application").BrowseForFolder(0, mes, 2, 17)
  On Error Resume Next
  If Not fld Is Nothing Then
    get_folder_path = fld.items.Item.Path
    If Err.Number <> 0 Then
     get_folder_path = False
     End If
  Else
    get_folder_path = False
    End If
  Set fld = Nothing
End Function
'==============================================================
Function export_comp(docu, foldnm)
'指定されたドキュメントのモジュールをエクスポートする
'input : docu     : モジュールをエクスポートするDocumentオブジェクト
'    foldnm    : エクスポートするフォルダ名
'output: export_comp : エクスポートのログメッセージ
'            メッセージがないときは、Falseを返す
  Dim stt_flg As Boolean
  Dim tp As Long
  Dim comp As Object
  Dim exe As Boolean
  Dim log_mes()
  Dim retcode As Long
  export_comp = False
  idx = 1
  On Error Resume Next
  With docu.VBProject
    stt_flg = True
    For Each comp In .VBComponents
     exe = True
     tp = comp.Type
     If tp = 100 Then tp = 4
     If tp = 4 Then
      If comp.CodeModule.CountOfLines <= 0 Then
        exe = False
        End If
      End If
     Err.Clear
     If exe = True Then
      If stt_flg = True Then
        retcode = mk_folder(foldnm)
        If retcode = 0 Or retcode = 75 Then
         stt_flg = False
        Else
         Exit For
         End If
        End If
      comp.Export foldnm & "\" & comp.Name & Choose(tp, ".bas", ".cls", ".frm", ".cls")
      If Err.Number <> 0 Then
        mes = comp.Name & ":" & Error(Err.Number)
      Else
        mes = comp.Name & "エクスポート完了"
        End If
      ReDim Preserve log_mes(1 To idx)
      log_mes(idx) = mes
      idx = idx + 1
      End If
     Next
    End With
  If idx > 1 Then
    export_comp = log_mes()
    End If
  On Error GoTo 0
End Function


'標準モジュール(Module2)に
'==============================================================
Private fno As Long
'==============================================================
Function open_txt(flnm) As Long
  On Error Resume Next
  open_txt = 0
  fno = FreeFile()
  Open flnm For Output As #fno
  open_txt = Err.Number
  On Error GoTo 0
End Function
'==============================================================
Function put_txt(txt) As Long
  On Error Resume Next
  put_txt = 0
  Print #fno, txt
  put_txt = Err.Number
  On Error GoTo 0
End Function
'==============================================================
Function close_txt()
  On Error Resume Next
  Close #fno
  On Error GoTo 0
End Function

以上です。自動実行するようになっています。
よかったら、確認してみて下さい。
・ツリー全体表示

【76】コードのバックアップ
質問  こるぎ  - 04/1/23(金) 9:53 -

引用なし
パスワード
   お尋ねします。
PCクラッシュ等に備えて、皆さんは、コードのバックアップはどうされて
いるのでしょうか?

私は、コードを書き換えるために、エクスポートして、そのファイルを
外付けHDD等に定期的に保存していますが、時々、エクスポート自体を忘れています。
もし、その間にPCがクラッシュしたら・・・と不安です。

そこで、コードが格納されているフォルダが分かれば教えていただけないでしょうか。
そのフォルダごと定期的にバックアップすれば安全ですので。

よろしくお願い致します。
・ツリー全体表示

【75】Re:ページ番号を任意のページから
お礼  とら  - 04/1/14(水) 14:37 -

引用なし
パスワード
   ▼H. C. Shinopy さん:
ありがとうございます。
細かいご指導でうまくクリアすることができました。
あとは、多数の文書をマクロの記録で処理することにしました、
また、問題がありましたらお願いします。
・ツリー全体表示

【74】Re:ページ番号を任意のページから
回答  H. C. Shinopy  - 04/1/9(金) 22:33 -

引用なし
パスワード
   手作業上の問題ですね。
セクション区切りを使って下さい。

その前に、次の設定をして下さい。
メニューバーの[ツール]-[オプション...]をクリックし、
[表示]タブの「編集記号の表示」の[すべて]チェックボックスをオンにする。
これで、下記の作業で設定した「セクション区切り」が、
文書上に表示されるようになります。

さて、御質問の件ですが、次のようになります。

メニューバーの[挿入]-[改ページ...]をクリックし、
「セクション区切り」の[次のページから開始]ラジオボタンをオンにして、
[OK]をクリックする。
([改ページ]で改ページするのではなく、セクション区切りで改ページするのです。)

(御質問では、ページの表示・非表示の設定ということですので、)
その後、メニューバーの[表示]-[ヘッダーとフッター]をクリックし、
[ヘッダーとフッター]ツールバーが表示されるので、
(例えば、1ページ目に)ヘッダーまたはフッターにページ番号を挿入する
(あるいはしない)。[閉じる]ボタンを押して次へ…
(ここまでの作業で、一旦全ページのヘッダー・フッターに同じものが設定される。)

次にセクション区切りをした次のページ(例えば、2ページ目以降)に
カーソルを移動し、
メニューバーの[表示]-[ヘッダーとフッター]をクリックすると、
[ヘッダーとフッター]ツールバーが表示される。

前のページと違う設定をしたい場合、
[ヘッダーとフッター]ツールバー上の[前と同じ]ボタンをオフにする。
(アイコンしか表示されていませんが、マウスカーソルを持っていくと、
「前と同じ」というコメントが表示されます。)

そして、前のページと違う設定をする。
これで、そのページ以降のヘッダー・フッターに違うものが設定される。
・ツリー全体表示

【73】ページ番号を任意のページから
質問  とら  - 04/1/6(火) 17:00 -

引用なし
パスワード
   初歩的な質問ですみません!

ページ番号を任意のページから振りたいのですが
どうしたら良いのでしょうか?
(表紙や目次・背表紙にページ番号を振らないよ
うにしたいのです)

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

【72】簡単な事だと思いますが
質問  nori  - 03/12/12(金) 13:46 -

引用なし
パスワード
   簡単な事だと思いますが、どなたかお教え下さい。

OfficeXPを使用中です。
ワードの文書を開いた時に、最初文字入力のバー(縦の)が出てきません。
その為、すぐに印刷したり出来ません。
開いた文書のどこかをクリックすると、バーが出現します。
ただし、クリックしたところではなくて、一番最初(文書の左上)に出てきます。
今までは、文書を開くとバーが出て、すぐに印刷も出来たのですが…

どなたか教えてください。宜しくお願い致します。
・ツリー全体表示

【71】Re:Word終了時にマクロを実行
お礼  オックン  - 03/12/1(月) 9:55 -

引用なし
パスワード
   H. C. Shinopyさん、回答ありがとうございました。

期待通りの動作をしてくれています。
・ツリー全体表示

【70】Re:Word終了時にマクロを実行
回答  H. C. Shinopy  - 03/11/30(日) 22:58 -

引用なし
パスワード
   これは、自動実行マクロの件ですね。
使い勝手は、Excelと同じなのですが、
微妙に違うようです。

マクロの名前を「AutoClose」として下さい。

その他詳細についてはVBE画面からヘルプを起動し、
「自動実行マクロ」と入力して下さい。
御質問の例ですと、下のようになります。

Sub AutoClose()
 MsgBox "作業中の文書を閉じます。"
End Sub
・ツリー全体表示

【69】Word終了時にマクロを実行
質問  オックン  - 03/11/29(土) 11:18 -

引用なし
パスワード
   いつも参考にさせていただいています。
Word質問箱には初めて投稿させていただきます。

Word(特定ファイル)を閉じるときに、
別プログラムを起動するマクロを実行したいのです。

Excelだとauto_closeで、
実行できているのですが、
Wordだと勝手が違うのですか?

初心者的な質問かもしれませんが、
回答のほうをよろしくお願いします。
・ツリー全体表示

【68】Re:フッダーの頁について
回答  H. C. Shinopy  - 03/10/24(金) 21:55 -

引用なし
パスワード
   手作業ですか?
私が知っている方法は以下の通りです。

作業前に、メニューバーの[ツール]から[オプション]を選び、[表示]タブの「編集記号の表示」にある[すべて]チェックボックスをオンにしておく。
(以下の作業でセクション区切りを挿入した所に「セクション区切り・・・」が透かし表示されるので迷わなくて済むため。)

1.各ページにセクション区切りを挿入しておく。(これは、メニューバーの[挿入]から[改ページ…]を選び、「セクション区切り」の[次のページから開始]ラジオボタンを選んで、[OK]を押すことです。
説明上「各ページ」としましたが、御質問の場合、5ページ目の最終行の右端に挿入することになるでしょう。)

2.前のページと違う設定をしたい「フッター」領域にカーソルを移動し、メニューバーの[表示]から[ヘッダーとフッター]をクリックすると、「ヘッダーとフッター」ツールバーが表示される。

3.「ヘッダーとフッター」ツールバーの[前と同じ]ボタンをクリックしオフにして、
フッターを編集する。(御質問の場合、ページ番号を削除します。)

4.「ヘッダーとフッター」ツールバーの[閉じる]ボタンをクリックすると、
そのページ以降が前ページと異なるフッターの設定になる。
[End]
・ツリー全体表示

【67】フッダーの頁について
発言   E-MAIL  - 03/10/18(土) 9:19 -

引用なし
パスワード
   フッダーに頁番号を
うちたいのですが。
ワードで10頁程文章を作成しましたが
頁番号を打ちたいのは
前から5頁までで
それ以降は番号はいらないとき
どうすればよいのでしょうか。
何か章を分けるみたいですが。
・ツリー全体表示

【66】Re:現在、選択しているWordの表を、全て選択...
お礼  ピクルス  - 03/9/11(木) 17:44 -

引用なし
パスワード
   地風&火さん、ご返答ありがとうございました。
すみません、SelectionとActiveDocumentによって、表の扱いが変わってくる事を
知りませんでした…初心者でお恥ずかしい限りです。
お陰様で、目的が達成できました。
ありがとうございました!
・ツリー全体表示

【65】Re:現在、選択しているWordの表を、全て選択...
回答  地風&火  - 03/9/9(火) 15:14 -

引用なし
パスワード
   ▼ピクルス さん:
>はじめまして、ピクルスと申します。
>皆様のお力添えを、何とぞよろしくお願い致します。
>実は、Word上で、カーソルがある表を全て選択するVBAを作成しているのですが、
>動作してくれません。
>表に関してはRowIndex等のIndex番号取得プロパティが見当たらず、Bookmarksを付けて
>みようとも試みましたが、どうしてもダメでした。
>能力不足で誠にお恥ずかしい限りですが、ご教授下さいますよう、お願い申し上げます。

こういうことですか?
Selection.Tables(1).Range.Select
・ツリー全体表示

【64】現在、選択しているWordの表を、全て選択す...
質問  ピクルス  - 03/9/8(月) 17:15 -

引用なし
パスワード
   はじめまして、ピクルスと申します。
皆様のお力添えを、何とぞよろしくお願い致します。
実は、Word上で、カーソルがある表を全て選択するVBAを作成しているのですが、
動作してくれません。
表に関してはRowIndex等のIndex番号取得プロパティが見当たらず、Bookmarksを付けて
みようとも試みましたが、どうしてもダメでした。
能力不足で誠にお恥ずかしい限りですが、ご教授下さいますよう、お願い申し上げます。
・ツリー全体表示

【63】Re:WORDで今日の日付をヘッダーに自動表示さ...
お礼  あっち E-MAIL  - 03/7/10(木) 21:30 -

引用なし
パスワード
   有り難うございます
早速試してみます

なんとなく、理解できました
Excelだったらこうなのに・・・から脱出がすこしあって
戸惑いもありますが、がんばって見ます

又くるかもしれません
・ツリー全体表示

【62】Re:WORDで今日の日付をヘッダーに自動表示さ...
回答  H. C. Shinopy E-MAIL  - 03/7/10(木) 21:06 -

引用なし
パスワード
   お話しの件は、日記のようなものでしょうか?
次の条件で以下のようなマクロになります。

1.日付を文書の右側に書き込むとします。
(Wordのヘッダー・フッターには、
Excelのような左側・中央部・右側はありませんので、
タブで区切って間に合わせます。)

2.ファイル名を日付にして(ここでは「C:…\date\日付」とします)、
そのまま、ファイルを保存するものとします。
処理後に、何も本文に書き込まず終了してもファイルは残ります。

3.続けて2度実行すると、
ヘッダーの内容が二重になった上でファイル保存になります。
(対策は別途考えて頂ければと存じます。)


Sub DiaryFile()
 Dim myDate As String
 Dim myFolder As String
 Dim myFileName As String
 ' 保存先フォルダの設定
 myFolder = "C:\Documents and Settings\User\My Documents"
 ' ヘッダーへの書き込み
 ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
 myDate = Format(Now(), "Long Date")
 Selection.TypeText Text:=vbTab & vbTab & myDate
 ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
 ' 日付をファイル名用に小細工
 myDate = Replace(Format(myDate, "yyyy/MM/dd"), "/", "")
 ' ファイルを保存
 ActiveDocument.SaveAs FileName:=myFolder & "\date" & myDate
End Sub
・ツリー全体表示

【61】WORDで今日の日付をヘッダーに自動表示させ...
質問  あっち E-MAIL  - 03/7/5(土) 11:58 -

引用なし
パスワード
   実はドクターシンプラーなのですが、
テンプレート作成して、ヘッダーに日付表示をさせ、
その日付でファイルの保存のマクロを組み、ボタンでツールバーに
入れたいのですが
可能でしょうか?
Excelのマクロはなんとか作れるのですが、WORDだと
ヘッダーになんと入れればよいのか、ここも、マクロを書くのか
Excelでは、考えられるのですが
いまいち想像が付きません
どなたか教えて頂けますか
・ツリー全体表示

【60】Re:画像の貼り付けについて
発言  らいでん  - 03/6/7(土) 1:07 -

引用なし
パスワード
   ▼奥山 さんへ:
投稿先を間違われたのでしょうか?
ここVBA掲示板なのです。
では。
・ツリー全体表示

【59】Re:WORDマクロの解説本について教えてくださ...
回答  H. C. Shinopy  - 03/6/6(金) 22:38 -

引用なし
パスワード
   西上原裕明 著「Wordで実践! 編集レイアウトの基本と本格テクニック」
 技術評論社 価格2780円+税
 (第11章 Wordマクロ超入門 文字列検索、オートシェイプのコピーの記事)

[以上]
・ツリー全体表示

【58】画像の貼り付けについて
質問  奥山  - 03/6/5(木) 13:45 -

引用なし
パスワード
   初歩的な質問ですいません。
ワードにjpg形式のデジカメの写真を貼り付けると容量が大きくなりすぎて困ってます。
(一つの文書に写真は、約30枚はりつけます。)
容量を小さくして貼り付ける方法はあるのでしょうか?
・ツリー全体表示

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