• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:他のmdbファイルのform,macro,reportsをテキスト化し)

Accessのmdbファイルをテキスト化するツールを作成したい

このQ&Aのポイント
  • Accessのmdbファイルに含まれるform, macro, reportをテキスト化するツールを作成したい。
  • asSaveTextを使用して、全てのmdbファイルを指定のフォルダにあるテキストファイルに自動出力する。
  • 現在エラーが発生していて、問題を特定できないため、解決策を教えてほしい。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

よく見たら、 appAccess も変数宣言されていません。この場合は たぶん、 Dim appAccess As Access.Application にでもなるのかと思いますが。 それで、エラー番号とエラー内容は?

bebestplay
質問者

補足

会社でaccessVBAをコーディングしているんですが、エラー内容を控えるのを忘れてしまいました。 上記のソースを一度忘れて頂いて、本当にやりたい事だけを書くと a.mdbとb.mdbの2つのファイルがあったとして、 a.mdbの標準モジュールにソースAを書いて、それを実行すると b.mdb内に記述されているVBAソース(macro,form,report)を テキスト化して任意の場所に出力してくれるというソースAを作りたいのです。 実現方法はある程度分かっていて、"saveastext"を使えば良いと 思うのですが、他のmdbファイルの情報を"saveastext"を 使って出力させる方法が分からないのです。 仕事で使いたくて、とても困っています。 どうすれば良いのか教えて頂けないでしょうか。

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

その他の回答 (3)

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

ほかファイルにあるからエラーでダメ、ならばインポートさせてからと思います。 参考 mdb同士のコンペアツールをmdbで作ってあるのを社内システムでみたことありますがそのときはファイルをダイアログで選んで比較オブジェクトも選んで実行でした。このコマンドも使われてました。アクセスがもっている隠しテーブルも使用。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

追加ですが、習慣として End Sub の前にいらなくなった オブジェクトはすべて閉じて、破棄するように。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>For Each d In souce.Documents まず、ここでdは変数宣言されていない。 Dim d As Document エラーの番号と内容がわからないと 何ともいえません。

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

関連するQ&A

  • CSVファイルをMDBに取り込む

    お世話になります。 現在、在庫管理の簡易システムを作成しています。 環境は、下記の通りです。 言語:VB2005 DB:Access2003 AccessのテーブルにCSVの在庫データの取り込みを作成中ですが、下記のエラーが発生します。 「ファイル 'C:\Temp\HAS4PJ\HZaiko20090319160646.mdb' が見つかりませんでした。」 デバッグをすると、CSVのファイル名は確かに「ファイル名.csv」なのですが、 エラーで表示されるファイル名は、「ファイル名.mdb」と表示されます。 因みにソースは下記の通りです。 ------------------------------------ Dim csvNm As String Dim fbd As New FolderBrowserDialog Dim ofd As New OpenFileDialog With ofd .Title = "本社在庫取込" .FileName = "HZaiko*.csv" .FilterIndex = 1 .Filter = "CSVファイル(*.csv)|*.csv|すべてのファイル(*.*)|*.*" .Multiselect = False .InitialDirectory = Application.StartupPath & "\CSV\" If .ShowDialog = Windows.Forms.DialogResult.OK Then csvNm = .FileName Dim tfp As New FileIO.TextFieldParser(csvNm, System.Text.Encoding.GetEncoding(932)) MsgBox(csvNm) tfp.Delimiters = New String() {","} Dim Cnn As New OleDb.OleDbConnection(My.Settings.HAS4DBConnectionString) Dim Cmd As OleDb.OleDbCommand = Cnn.CreateCommand() Cnn.Open() Dim sSQL As String = "SELECT * FROM " & csvNm Dim dt As New DataTable Dim Da As New OleDb.OleDbDataAdapter(sSQL, Cnn) Da.Fill(dt) <--ここでエラー発生! 'objDa.SelectCommand = objCmd Da.Update(Me.HaS4DBDataSet1.t_wrkZaiko) End If End With ---------------------------------- 以上、情報をお持ちの方がいらっしゃいましたらよろしくお願いいたします。

  • 配列をテキストファイルに書き込むことは不可能でしょうか?

    Sub Macro1() Dim No As Long No = FreeFile 文字列 = "1234" Open "D:\Test.txt" For Output As #No Print #No, 文字列 Close #No End Sub 上記のMacro1の文字列の書き込みは可能なのですが Sub Macro2() Dim No As Long Dim 配列 As Variant Range("a1").Value = "1☆2☆3☆4☆" No = FreeFile 配列 = Split(Range("A1").Value, "☆") Open "D:\Test.txt" For Output As #No Print #No, 配列 Close #No End Sub だと「Print #No, 配列」で「型が一致しません」とエラーになってしまいます。 テキストファイルに配列を書き込みたいのですがどうすればいいのでしょうか? よろしくお願い致します。

  • エクセルに二つのテキストファイルをインポートしたい

    エクセルのsheet1の1行目にタイトルがあります。 ボタンのクリックイベントで、テキストファイル2つをインポートしたいのですが。 ・テキストファイルの名前は、固定ではありません ・テキストファイルの保存先は、デスクトップで、ファイルの選択は自分でしたい ・テキストファイルの一行目は、タイトル行なので、二行目以降をインポートしたい 行数は固定ではありません ・タブ区切りです 複数選択はできなく、1ファイルでタイトル行も含めるのであれば下記コードできたのですが。 どなたか、ご教示いただけますでしょうか・・・・ よろしくお願いいたします。 ----------------------------------------------------- Sub ReadTextFile() 'タブ区切りファイルを全て文字列として読み込む Dim FileName As String Dim i As Long Dim Cnt As Long Dim Buf As Variant Dim FileNo As Integer Dim SplitString As Variant 'ファイルダイアログを表示 FileName = Application.GetOpenFilename("テキストファイル,*.txt") If FileName <> "False" Then '全セル選択して書式を文字列にセットする Cells.Select Selection.NumberFormatLocal = "@" Cells(1, 6).Select '空いているファイル番号を取得 FileNo = FreeFile() Buf = Space(FileLen(FileName)) 'ファイルを開いてbufに1行読み込み ' → タブで配列に分割 ' → セルに書き出し Open FileName For Input As #FileNo Do Until EOF(FileNo) Line Input #FileNo, Buf Cnt = Cnt + 1 SplitString = Split(Buf, vbTab) For i = 0 To UBound(SplitString) Cells(Cnt, i + 1) = SplitString(i) Next i Loop Close #FileNo Else End If End Sub -----------------------------------------------------

  • テキストファイルとして開くVBA

    フォルダC:\Users\USER\Desktop\あいう において このダイアログを開いて そのなかのファイル(A.xml)を txtファイルとして開いて その名前を テキスト.txt として 同名で保存したいのですが Dim FileName As Variant Dim NewFile As TextFile FileName = Application.GetOpenFilename() Set NewFile = TextFile.Open(FileName) NewFile.SaveAs "テキスト.txt" Activetxtfile.SaveAs FileName:="C:\Users\PC\Desktop\あいう\テキスト.txt", FileFormat:=TextFile どうも違うようです 御教示ください

  • フォルダ内の全てのファイル開く時間短縮の方法

    Excelのマクロを使ってフォルダ内の全てのファイルを開く以下のコードを利用しているのですが(教えてgoo!で教えて頂いたコードです)、ファイル数が10個くらいあるため全部開くのに1分くらいかかってしまいます。 もっと時間を短縮することはできませんでしょうか? Sub OpenAllBook()   Dim FileName As String   Dim OpenedBook As Workbook   Dim IsBookOpen As Boolean   ChDir ("フォルダ名")   FileName = Dir("*.xls")   Do While FileName <> ""    If FileName <> ThisWorkbook.Name Then     IsBookOpen = False     For Each OpenedBook In Workbooks      If OpenedBook.Name = FileName Then       IsBookOpen = True       Exit For      End If     Next     If IsBookOpen = False Then      Workbooks.Open (FileName)     End If    End If    FileName = Dir()   Loop End Sub

  • EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテ

    EXCEL2007のVBAを使って、テキストファイルを読み込んで別のテキストファイルを作って書き込むというコードを書きましたが、新しく出来たテキストファイルの末尾に、もともとのファイルには無かったスペースが追加されてしまいます。 原因と対策を教えて頂きたいです。 ------------------------------------------------------- Dim FileName1 As String Dim FileName2 As String Dim FileNumber1 As Integer Dim FileNumber2 As Integer Dim Data As String FileName1 = Application.GetOpenFilename("Text Files (*.txt), *.txt") FileName2 = Application.GetSaveAsFilename(, "Text Files (*.txt), *.txt") Data = Space(FileLen(FileName1)) FileNumber1 = FreeFile Open FileName1 For Binary As #FileNumber1 Get #FileNumber1, , Data Close #FileNumber1 'この間に"Data"内容を処理するコードを入れる予定 FileNumber2 = FreeFile Open FileName2 For Binary As #FileNumber2 Put #FileNumber2, , Data Close #FileNumber2 ------------------------------------------------------- このコードで1284バイトのテキストを読み込ませると末尾にスペースが追加されて1918バイトになってしまいました。 "Data"の内容を表示させてもスペースはなく、Len関数で大きさを調べても1284バイトです。

  • ACCESS97で作成したmdbファイルに書き込む為の記述

     ADOを使用してExcelで作成したデータをACCESS97で作成したmdbファイルに書き込む処理を行いたいと思います。 書籍を見ながらコードを記述しているのですが、1,2,の項目については問題なく処理ができるのですが、最後のmdbファイルへの書き込み処理がどうしてもうまくいきません。 主に出力されるエラーは「現在のプロバイダはIndex機能に必要なインターフェイスをサポートしていません。」というものです。いろいろ試行錯誤したのですが解決できませんでした。 やはりACCESS97で作成したmdbファイルだからダメなのでしょうか? 原因と対処方法を教えていただければ幸いです。よろしくお願いします。以下はmdbファイルへの書き込みのサンプルコードです。 Dim myFile As String Dim myTbl As String Dim myRng As Range Dim myCon As New ADODB.Connection Dim myRS As New ADODB.Recordset Dim i As Integer myFile = ThisWorkbook.Path & "\sampleDB.mdb" myTbl = "社員" Set myRng = ThisWorkbook.Worksheets(1).Range("A1").CurrentRegion With myCon .Provider = "Microsoft.Jet.OLEDB.4.0" 'Access(Jet)用のOLE DBプロバイダを使用 .Open myFile End With myRS.Open myTbl, myCon, adOpenStatic, adLockPessimistic, adCmdTableDirect myRS.Index = "社員ID" For i = 2 To myRng.Rows.Count myRS.Seek myRng(i, 1).Value If myRS.EOF Then myRS.AddNew For j = 1 To myRng.Columns.Count myRS.Fields(myRng(1, j).Value).Value = myRng(i, j).Value Next Next myRS.Update myRS.Close Set myRS = Nothing myCon.Close Set myCon = Nothing

  • 相対パスで別MDBファイルを開きたい

    Accessでフォームにボタンを作り、別のmdbファイルのフォームを開く処理を書いてあります。 コードは次のような感じです。 Dim acMDB As Object Dim isOK isOK = Shell("MSACCESS.exe \\コンピュータ名\フォルダ名\ファイル名.mdb",vbMaximizedFocus) set acMDB = GetObject("\\コンピュータ名\フォルダ名\ファイル名.mdb") この度ファイルを他の人へ配布することになったのですが、パス名を相対パスで書くことは出来ないのでしょうか? 他の人のコンピュータ名も分からない為、 出来たら元ファイルと同じフォルダにある…というような指定が出来れば助かるのですが…。

  • VB2008でテキスト以外のファイルの開き方について

    現在VB2008環境でファイル操作ができるソフトを開発中です。 openfiledialogでファイルを選択して開く、といったことがしたいと思い、以下のようにやってみました。 Dim ofd As New OpenFileDialog() ofd.FileName = FN ofd.InitialDirectory = DN ofd.FilterIndex = 2 ofd.Title = "" ofd.RestoreDirectory = True ofd.CheckFileExists = True ofd.CheckPathExists = True If ofd.ShowDialog() = DialogResult.OK Then Dim FO As Object FO = Shell(ofd.InitialDirectory + ofd.FileName, vbNormalFocus) End If FN,DNは他で指定したファイル、ディレクトリの名前です。 これでデバック実行すると「FileNotFoundExceptionはハンドルされませんでした」というエラーが出て開けませんでした。 VBでのソフト開発自体はじめて間もない為理解していない部分も多く説明も至ってはいないと思いますが、どうかよろしくお願いします。

  • Excelのブック間の串刺し計算について

    Excelのブック間の串刺し計算について VBA超初心者です。同じフォルダ内にファイルがいくつかあり、同じ形式で、sheet1のB4のセルに計があったとして、それをブック間で串刺し集計したいのですが、うまくいきません。どこが悪いのかもわからず、困り果ててます。ご指導お願いします。 Sub BookShuukei() Dim FileName As String Dim Total As Integer Dim OpenedBook As Workbook Dim IsBookOpen As Boolean FileName = Dir("*.xls") Application.ScreenUpdating = False Do While FileName <> "" If FileName <> ThisWorkbook.Name Then IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) End If Total = Total + Workbooks(FileName).Sheets(1).Range("B4").Value If IsBookOpen = False Then Workbooks(FileName).Close End If End If FileName = Dir() Loop Application.ScreenUpdating = True MsgBox (Total) End Sub

専門家に質問してみよう