VBAで会社名をWord文書に挿入する方法

このQ&Aのポイント
  • ACCESS VBAで、フォーム上の会社名をWord文書に挿入する方法を教えてください。
  • 他のテキストボックス(部署名、担当者名など)も同じようにWordに挿入したい場合は、どのようにすればよいでしょうか。
  • 初心者ですが、お手数をおかけしますが、教えていただければ幸いです。
回答を見る
  • ベストアンサー

ACCESS VBA を勉強中のものです。

勉強のため購入した本(※VBA逆引き大全)からサンプルがダウンロードできたので,下記の構文で実行したところ,フォーム上の会社名を,Wordに「~様」と挿入することができました。 Private Sub cmd実行_Click() Dim Appwo As Word.Application Dim doc As Word.Document Dim stPath As String Dim stName As String stName = Me.txt会社名 stPath = "C:\Users\pigo\Desktop\納品書.docx" Set Appwo = CreateObject("Word.Application") Set doc = Appwo.Documents.Open(stPath) Appwo.Visible = True With Appwo.Selection .Find.Text = "様" .Find.Execute .InsertBefore stName .Font.Size = 12 .Font.Bold = True End With Set Appwo = Nothing Set doc = Nothing End Sub ここで質問なのですが,フォーム上には会社名に加え,そのほかにもWordへと挿入したいテキストボックス(※部署名,担当者名など)が複数存在します。そのような場合には,上記の構文はどのようにすればよいのでしょうか。 教えていただければ幸いです。 初心者で言葉足らずかも知れませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

ahoai09さん こんにちは。 会社名は「様」を検索して「様」前に入力した会社名を入れています。 部署名,担当者名も何かの文字を検索して「その前に入力した文字」を設定するのでしょうか? 多分、部署名は「様」とか敬称を付けないので、違う方法にするのだと思います。 今回は「様」「部署名」「担当者名」を探して入力した文字を置き換えるようにプログラミングをしてみました。 本来は置き換える処理部分は共通モジュール(サブルーチン)にした方が良いと思いますが、単純に作成しています。 ヒントだけなので、ahoai09さん自身でわかりやすく修正してください。 Private Sub cmd実行_Click() Dim Appwo As Word.Application Dim doc As Word.Document Dim stPath As String stPath = "C:\Users\pigo\Desktop\納品書.docx" Set Appwo = CreateObject("Word.Application") Set doc = Appwo.Documents.Open(stPath) Appwo.Visible = True With Appwo.Selection  .Find.Text = "様"  .Find.Replacement.Text = Me.txt会社名 & "様"  .Find.Execute Replace:=wdReplaceAll End With With Appwo.Selection  .Find.Text = "部署名"  .Find.Replacement.Text = Me.txt部署名  .Find.Execute Replace:=wdReplaceAll End With With Appwo.Selection  .Find.Text = "担当者名"  .Find.Replacement.Text = Me.txt担当者名  .Find.Execute Replace:=wdReplaceAll End With Set Appwo = Nothing Set doc = Nothing End Sub

ahoai09
質問者

お礼

この度はご回答いただきありがとうございました。まわりに教えてくれる人もおらず,初めて質問してみましたが予想以上の回答内容で驚いてます。本日,ご回答いただいたとおりに実行したところうまくいきました。本当に助かりました。ありがとうございました。

その他の回答 (1)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

勉強なので、 部署だけ、担当者だけ、はできませんか?。 それで3つを見比べて変更箇所を突き止める。それでもダメなのか。 答えとなる構文聞いてから解析は、機能要件からどう記述したら?、の力はなかなかつきません。命令はどういう意味?はつくでしょうがー。両方必要です。 『プログラミング』しましょう。 INSERTBEFORE 会社名 が『様』の前に『会社名』だろうことは想像できますね?。 今の構文でわからない部分を聞く。 実行できた=理解した、でないですから。

関連するQ&A

  • ACCESS どなたか教えてください。

    現在,以下の構文を記載している状態です。 Private Sub コマンド62_Click() Dim Appwo As Word.Application Dim doc As Word.Document Dim stPath As String stPath = "C:\Users\pigo\Desktop\納品書.docx" Set Appwo = CreateObject("Word.Application") Set doc = Appwo.Documents.Open(stPath) Appwo.Visible = True With Appwo.Selection .Find.Text = "明細" .Find.Replacement.Text = Me.txt明細 .Find.Execute Replace:=wdReplaceAll End With With Appwo.Selection .Find.Text = "納品日" .Find.Replacement.Text = Me.txt納品日 .Find.Execute Replace:=wdReplaceAll End With Set Appwo = Nothing Set doc = Nothing End Sub ここで質問なのですが,フォーム上には,納品日として「平成16年4月12日」と記載されているのです(フォームプロパティの書式は,[ggge\年m\月d\日])が,コマンド62を実行した結果のWord上では,「納品日」の部分の置き換えとして「2004/04/12」との表示となってしまいます。 Word上でもそのまま「平成16年4月12日」と表示させたいのですが,どうすればよいのか分かりません。 どなたかお教えいただければ幸いです。よろしくお願いいたします。

  • Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く

    以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc"          'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub

  • excel VBAを利用し、テンプレートとなるワードファイルの一部分を

    excel VBAを利用し、テンプレートとなるワードファイルの一部分をエクセルデータで 置換を行い、新しいワードファイルとして保存するという処理を作成しています。 [環境] Windows Vista Office 2007 差し込み文書ではなく個別にファイルを作りたいという条件があります。 処理としては、 テンプレートを開く→置換を実施→別名で保存→テンプレートを変更せず閉じる を繰り返し実施しています。 ただ、このやり方ですと最後の閉じる処理を行った際に、 「wordは、動作を停止しました」というエラーメッセージが頻繁に出てしまいます。 出来上がったファイル自体は問題なく読めているんですが。 処理自体に問題があるんでしょうか? VBA自体初心者であり、他に良い方法などありましたらご教示いただけたら助かります。 #処理内容はだいぶ簡略化しています。 Public Function output_word2()   Dim word        As New word.Application   Dim document      As word.document   Dim file_name      As String   Dim output       As String   Dim path        As String   Dim row        As Integer      Sheets(CALC_SHEET).Select 'データ取得用シート   path = Application.ActiveWorkbook.path   file_name = path & "\xxxxxx.doc"          '元の文書   row = 3   Do     If Range("B" & row).Value = "" Then       Exit Do     End If          With word       .Documents.Open Filename:=file_name       Set document = .ActiveDocument     End With          word.Selection.Find.Text = "{置換対象文字}"     word.Selection.Find.Forward = True     word.Selection.Find.Replacement.Text = Range("C" & row).Value     word.Selection.Find.Execute , , , , , , , , , , wdReplaceAll          output = path & "\output\" & Range("C" & row).Value  & ".doc"          document.SaveAs Filename:=output   '置換後のword文書を別名で保存     document.Close SaveChanges:=False     word.Quit     row = row + 1     Set word = Nothing     Set document = Nothing   Loop End Function

  • ACCESSのCSV出力に関して

    教えて下さい。 ACCESSであるテーブルのデータをCSV出力しようとして、以下のような記述をしました。 結果、問題なく出力されましたが、データだけでなく、項目も出力しようと考えています。 その際にはどのような記述をすれば良いでしょうか? 初歩的な質問で申し訳ありません。 教えて下さい。 《内容》 Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim stSQL As String Dim stTBL As String Dim myWSH As Object 'WScript Dim myDesktopPath As String Dim stPath As String 'フルパス Dim objFSO As Object 'FileSystemObject Dim fsoTS As Object 'TextStream Dim tmp As Variant 'データ Dim re As Variant 'データ件数 Dim stDocName As String Const ForAppending = 8 stTBL = "t_合算" 'テーブル名 '開始メッセージ stDocName = "「" & stTBL & ".CSV」 ファイルをデスクトップに作成します" If MsgBox(stDocName, vbYesNo) = vbNo Then Exit Sub 'デスクトップパス取得 Set myWSH = CreateObject("WScript.Shell") myDesktopPath = myWSH.SpecialFolders("Desktop") Set myWSH = Nothing 'フルパス stPath = myDesktopPath & "\" & stTBL & ".CSV" '読み取り専用でセット Set cnn = CurrentProject.Connection stSQL = "SELECT * FROM " & stTBL Set rst = cnn.Execute(stSQL) If rst.EOF Then stDocName = "出力するデータがありませんでした" Else '文字列データ格納 (全データ出力、カンマ区切り) tmp = rst.GetString(adClipString, , ",", vbNewLine) '出力 Set objFSO = CreateObject("Scripting.FileSystemObject") With objFSO If .FileExists(stPath) Then '既存ファイル削除 Call .DeleteFile(stPath) End If Set fsoTS = .OpenTextFile(stPath, ForAppending, True) '文字列一括書き出し fsoTS.WriteLine tmp re = fsoTS.Line - 2 End With Set fsoTS = Nothing: Set objFSO = Nothing stDocName = re & " 件の CSVデータを出力しました。" End If MsgBox stDocName, vbOKOnly

  • ACCESS VBA からのワードファイルの起動

    ACCESS97を(未だに!)使用しています。 これから、VBAでワードの既存ファイルを起動したいと考えています。その際、ワードを新規に立ち上げることなく、表示して編集したいわけですが、どうしても新規に起動してしまします。 これまで試したのは、 Dim oApp As Object Set oApp = GetObject("", "word.Application") oApp.Visible = True oApp.Documents.Open FileName:="C:\filename.doc" および Dim oApp As Object Set oApp = CreatObject("word.Application") oApp.Visible = True oApp.Documents.Open FileName:="C:\filename.doc" などです。 しかし、すでにワードが起動していても、どうしても、新たにワードを立ち上げてしまいます。 解決策はあるでしょうか? ちなみにエクセルだと、GetObject で既に起動しているエクセルに追加でアプリが表示されます。

  • アクセス VBAのエラー

    以下のコードをwindowsXPで問題なく使っていましたが、windows7で使ったところ 「保存できません」というエラーメッセージが出ます。ただ全く同じコードを(だと思うのですが)リストボックスのダブルクリックで実行すると作動します。参考に二つのコードを書いておきます。 何か原因に心当たりのある方よろしくお願いします。 (コマンドボタン) Private Sub コマンド選択_Click() Dim namecode As String namecode = リスト会員 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "MT_会員", cn, adOpenKeyset, adLockOptimistic rs.Find "会員IDkai = " & namecode rs!Selectedkai = True '-1 rs.Save Me!リスト会員.Requery リスト印刷会員.Requery rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub (ダブルクリック) Private Sub リスト会員_DblClick(Cancel As Integer) Dim namecode As String namecode = リスト会員 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "MT_会員", cn, adOpenKeyset, adLockOptimistic rs.Find "会員IDkai = " & namecode rs!Selectedkai = True '-1 rs.Save Me!リスト会員.Requery リスト印刷会員.Requery rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub

  • VBA 保存

    保存ボタンを作成してファイルに飛ぶように させていますが…どうしてもエラーになります! エラー表示内容> 実行時エラー1004 シートの名前を他のシート、Visual Basicで参照される オブジェクト ライブラリまたは ワークシートと同じ名前に変更することはできません。 下記は実際の記述です。 Private Sub 保存_Click() Dim FileName As String Dim FileExt As String Dim BkName As String Dim OldWkbook As Workbook Dim NewWkbook As Workbook Const StName1 As String = "計画 グラフ" Const StName2 As String = "ケア一覧" ' Application.DisplayAlerts = False Set OldWkbook = ActiveWorkbook ' 'ファイル名を取得 BkName = OldWkbook.Sheets(StName1).Range("D1").Value FileName = BkName & Format(Now, "yyyy-mm-dd") & ".XLS" ' FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName) If FileName = "" Then Exit Sub Else If Right(FileName, 4) <> ".XLS" Then MsgBox "ファイル名が異常です。" Exit Sub End If End If ' OldWkbook.Sheets(Array(StName1, StName2)).Copy Set NewWkbook = ActiveWorkbook For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count NewWkbook.Sheets(1).Shapes(1).Delete '←シート1のボタンを削除 Next NewWkbook.Sheets(1).Name = StName1 NewWkbook.Sheets(2).Name = StName2 ' FileName = "D:\看護計画保存\" & FileName ' If Dir(FileName) <> "" Then '##ファイルが既に存在する If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then NewWkbook.Close savechanges:=False '##保存せずに終了 Exit Sub End If '##指定ファイル置き換え保存 NewWkbook.SaveAs FileName:=FileName Else '##ファイルを新規保存 NewWkbook.SaveAs FileName:=FileName End If ' NewWkbook.Close savechanges:=False Application.DisplayAlerts = True End Sub

  • アクセスVBAです

    Sub test() Dim DB As Database Dim T As TableDef Dim myTable As String myTable = "Table1" Set DB = OpenDatabase(CurrentProject.FullName) For Each T In DB.TableDefs If T.Name = myTable Then DoCmd.DeleteObject acTable, myTable Exit For End If Next DB.Close Set DB = Nothing End Sub これを実行しようとすると Dim DB As Database の部分で コンパイルエラー プロジェクトではなく、ユーザ定義型を指定してください。 と言うエラーになります。 Dim DB As Objectにすればエラーにならずに進みますが 何が原因なのでしょうか?

  • WORDのアドイン

    先日、以下のように教えて頂き試したのです、できませんでした。 ご回答が頂けないので再投稿をしました。 教えて下さい。 ------------------------------------------------ お世話になっております。 QNo.4228197で質問させて頂きました。 その節はありがとうございました。 WORDでも同様な事をやりたいのです。 ドキュメントを開いた際のイベントは、 Dim WithEvents oWord as Word.Application Private Sub oWorf_DocumentOpen(ByVal Doc As Word.Document) end sub でいいのでしょうか?? ------------------------------------------------------------ やり方は同じですよ IDTExtensibility2_OnStartupCompleteイベントの最後の方で if oHostApp.Name = "Microsoft Word" then   Set oWord = oHostApp End if IDTExtensibility2_OnBeginShutdownの最後に Set oWord = Nothing を追加 Private Sub oWord_DocumentOpen(ByVal Doc As Word.Document)   If oWord.Documents(1).CustomDocumentProperties.Count Then     MsgBox oWord.Documents(1).CustomDocumentProperties("文書番号").Value   End If end sub といった具合です ------------------------------------------------------------------- 下記のようにしてテストしてみたのですが、うまく行きません。 宣言部 Dim WithEvents objWord As Word.Application IDTExtensibility2_OnConnectionイベント Set objWord = objHostApp IDTExtensibility2_OnBeginShutdownイベント Set objWord = Nothing Private Sub objWord_DocumentOpen(ByVal Doc As Word.Document) MsgBox "word Open" End Sub Private Sub objWord_DocumentActivate(ByVal Doc As Word.Document) MsgBox "word Activate" End Sub どこか違うのでしょうか。 宜しくお願い致します。 ----------------------------------------------------------------

  • EXCEL/VBAで、自分のPCだけエラーが出ます

    下記は、wordの「@一覧表」文字の部分をExcelで作成した表(B3:E9)に置き換えるマクロですが、自分のPCだけ「Executeメソッドは失敗しました:Findオブジェクト」のエラーが出ます。 何が原因なのでしょうか、対処方法を教えて下さい。 ちなみに自分のPCは、EXCEL2003です。他のPCのEXCEL2003や自宅のEXCEL2007ではエラーは出ません。 Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\ひな型用ドキュメント.doc") (途中略) Set wordRange = wordDoc.Content wordRange.Find.Execute "@一覧表", Forward:=True ←エラー Range("B3:E9").Copy wordRange.Paste