- 締切済み
Accessの入力データをWordへ取り込む
Accessに入力したデータをWordにとりだしているのですが,Wordを立ち上げるまでにとても時間がかかります。 Dim woApp As Word.Application Dim woDoc As Word.Document Dim strPath As String 'ファイルのパス Dim strTXT As String 'フィールドデータ strPath = Application.CurrentProject.Path 'Current Path Set woApp = CreateObject("Word.Application") Set woDoc = woApp.Documents.Open(strPath & "\" & “ファイル名”) 'TemplateとなるWORDファイル woApp.Visible = False として,テンプレートとして前もって作ってあるWordファイルを開き,バックグラウンドでAccessのデータをWordへ貼り付けていっています。 この(Set woDoc = woApp.Documents.Open(strPath & "\" & “ファイル名”)の部分がとても時間がかかってしまいます。 他のアプリケーションを立ち上げるのにはどうしても時間がかかってしまうのかもしれませんが,少しでも早くする方法はないでしょうか? 宜しくお願いいたします。
- WhitoMaron
- お礼率0% (0/1)
- オフィス系ソフト
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- takana_
- ベストアンサー率44% (21/47)
CreateObjectをGetObjectにかえてみてはどうでしょうか? Dim woApp As Word.Application Dim woDoc As Word.Document Set woDoc = GetObject("ファイル名") 'TemplateとなるWORDファイル Set woApp = woDoc.Application woApp.Visible = False 'あってもなくても同じかな?
関連するQ&A
- Wordテンプレート一括変更でのサブフォルダ検索
ワードに使用されているテンプレートを一括でnormalに戻したいと考えています。 テンプレートを使用したファイルは、かなりの量があるため、Microsoftが公開している方法を用いて一括変更を試みましが、この方法では、1個づつフォルダを指定する必要があります。 そこで、指定したフォルダから下のサブフォルダも含めて変更できるようにするには、どのようにコードを書き換えればよろしいでしょうか? コードは、ワードのVBEに貼り付けて実行しています。 よろしくお願いいたします。 Dim strFilePath As String Dim strPath As String Dim intCounter As Integer Dim strFileName As String Dim OldServer As String Dim objDoc As Document Dim objTemplate As Template Dim dlgTemplate As Dialog Dim nServer As Integer OldServer = "enter the name of the Old Server" nServer = Len(OldServer) strFilePath = InputBox("What is the folder location that you want to use?") If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\" strFileName = Dir(strFilePath & "*.doc") Do While strFileName <> "" Set objDoc = Documents.Open(strFilePath & strFileName) Set objTemplate = objDoc.AttachedTemplate Set dlgTemplate = Dialogs(wdDialogToolsTemplates) strPath = dlgTemplate.Template If LCase(Left(strPath, nServer)) = LCase(OldServer) Then objDoc.AttachedTemplate = NormalTemplate End If strFileName = Dir() objDoc.Save objDoc.Close Loop Set objDoc = Nothing Set objTemplate = Nothing Set dlgTemplate = Nothing
- 締切済み
- Visual Basic
- 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
- ベストアンサー
- オフィス系ソフト
- AccessVBAからWordのマクロを実行するには
[環境]Access2000,Word2000 AccessVBAでWordのオブジェクトをつくりファイルを開くところまでは たどり着いたのですが、開いたWordファイルにあるマクロを実行させる ことが出来ずに困っています。 WordオブジェクトのApplicationとDocumentsオブジェクトの関係も把握 しきれていないため、おかしなソースになっているかも知れません。 よろしくお願いします。 sub DoMacro() Dim oWrd as Word.Application Dim oDoc as Word.Document Set oWrd = New Word.Application With oWrd Set oDoc = oWrd.Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With End Sub
- ベストアンサー
- オフィス系ソフト
- アクセスからアクセスファイルを開くには?
アクセスからアクセスファイルを開きたいのですがうまく出来ないので教えてください。 Option Compare Database Option Explicit Sub test() Dim App As Access.Application Dim MyFileName As String Set App = CreateObject("Access.Application") MyFileName = CurrentProject.Path & "\アクセスファイル名.mdb" With App .Visible = True End With Set App = Nothing End Sub で、 .Visible = True でアプリケーションは開きますが Set App = Nothing を通過すると開いたアプリケーションが閉じてしまいます。 それにアプリケーションが開くだけで肝心のファイルが開かれません。 なので「.ファイルを開くVBAコード」が必要だと思うのですがそのコードがわかりません。
- ベストアンサー
- オフィス系ソフト
- 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
- 締切済み
- Visual Basic
- VBA 新規にエクセルを開き既存のファイルを開く
VBAで新規にエクセルのアプリケーションを起動し、 その中に既存のファイルを起動する方法は有りますか? Sub Sample() Dim appExcel As Excel.Application Dim WSH As Variant Dim strPath As String Set appExcel = New Excel.Application Set WSH = CreateObject("Wscript.Shell") strPath = ActiveWorkbook.Path With appExcel .Visible = True .Workbooks.Add .ActiveWorkbook.SaveAs (strPath & "\ test.xls") End With Set WSH = Nothing End Sub このコードは、ネットから拾ったサンプルコードなのですが 新しいアプリケーションでエクセルを立ち上げることはできたのですが 新規のブックが開いてしまい、 更に、開きたいファイルに上書き保存してしまいそうです。 新規のブックが開く原因は .Workbooks.Addで、 上書き保存する原因は .ActiveWorkbook.SaveAs だとわかってるのですが、 この部分を同変更すればいいのかがわかりません。 Workbooks.Open?Filename:="C:\Users\test.xlsx" だと、現在実行しているvbaファイルを同じ枠内で 該当のファイルが開いてしまいます。
- ベストアンサー
- オフィス系ソフト
- 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 で既に起動しているエクセルに追加でアプリが表示されます。
- 締切済み
- その他(データベース)
- ACCESSでExcelにデータ出力、高速化
ACCESSのVBAを使ってテーブルのデータを 既存ブックに出力し、別名で保存をしたいのですが、 どうも、処理が遅くて困っています。 改善点がありましたら教えてくださいお願いいたします。 Dim objExcel As Excel.Application Dim xlWrkbk As Excel.Workbook Dim xlWrksh As Excel.Worksheet Dim rs As DAO.Recordset Dim strFilename As String strFilename = CurrentProject.Path & "既存ブック名.XLS" Set objExcel = New Excel.Application Set xlWrkbk = objExcel.Workbooks.Open(Filename:=strFilename, ReadOnly:=True) Set xlWrksh = xlWrkbk.Worksheets("シート名") Set rs = CurrentDb.OpenRecordset("テーブル名", dbOpenSnapshot) With objExcel xlWrksh.Range("A:N").Clear xlWrksh.Range("A2").CopyFromRecordset rs xlWrkbk.SaveAs Filename:=CurrentProject.Path & "新しいブック名.xls" xlWrkbk.Close .Quit rs.Close End With Set rs = Nothing Set objExcel = Nothing Set xlWrkbk = Nothing Set xlWrksh = Nothing
- ベストアンサー
- その他(プログラミング・開発)
- ExcelからWordの差込印刷を実行したい
WordのFAX送信表にExcelのデータ(宛先)を差込印刷で設定していて、 Excelの方では各行にチェックボックスと一つの印刷ボタンを 配置しています。 ExcelのVBAでチェックがついていたら、A列の値を1として Wordを開き印刷したいのですが、Wordの起動に時間がかかってしまいます。 Wordの方にはクエリオプションでA列=1と設定してあります。 データはExcelでなくても構わないのですが、 何かよい方法はないでしょうか? コードは以下の通りです。 If CheckBox1.Value = True Then Range("A2").Select ActiveCell.FormulaR1C1 = "1" End If Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "C:\Fax送信表.doc" 'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動する ワード.Visible = True 'Wordを表示する Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く
- 締切済み
- オフィス系ソフト
- ActiveWorkbook.Path取得できない
ActiveWorkbook.Pathでパス名を取得して、 同じフォルダ内の別のエクセルシートを開きたいのですが、 見つかりませんと、エラーになります。 ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると 取得できるようになるのですが、 すべて閉じて、再度実行すると、また取得できなくなるという現象が起こっているのですが 毎回上書き保存するわけにいかない為 何かよい方法はありますでしょうか? ----------------------------------- Dim strPath As String Dim strBookName As String strPath = ActiveWorkbook.Path strBookName = Dir(strPath & "\管理簿.xlsm") 'ファイル名取得 On Error GoTo myError Workbooks.Open FileName:=strBookName
- 締切済み
- Visual Basic