• 締切済み

XPバーチャルモードでACESSS2000使用

こんにちは、よろしかったら教えてください。 現在PCはWindows7ですが、WindowsXPバーチャルモードにACCESS2000をインストールし、サーバー(SQLServer2000)とでデータベースを運用しています。 そして上記ACCESSアプリで、レコードを表示した画面で、WORD、EXCEL、PDF等のファイルを取り込んで、あるフォルダに置き、画面上からこの添付ファイルを見られるようにしています。 ところが、バーチャルモードで運用するようになってから「取り込みに失敗」のエラーが 出るようになりました。 コードは以下のような記述です。 エラー処理等は省略 Function XLSFileOpen() Dim objXLS As New Excel.Application Dim varGetFile As Variant Dim filename As String Dim POS As Integer Dim fso, f1, f2, s Dim MyPath As Variant varGetFile = objXLS.GetOpenFilename("すべて (*.*),*.*", , "ファイル選択") POS = InStrRev(varGetFile, "\", , vbTextCompare) filename = Mid(varGetFile, POS + 1) Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.GetFile(varGetFile) Set objXLS = Nothing MyPath = "パス名\" '←サーバフォルダ f1.Copy (MyPath & filename & "") Set f2 = fso.GetFile(MyPath & filename & "") If (f2.Attributes And 1) = False Then f2.Attributes = f2.Attributes + 1 End If MsgBox "添付ファイルを取込みました。" End Function WindowsXPで運用していたときは、「取り込みに失敗」はなかったのですが・・。 原因が判る方、教えていただけると幸です。 よろしくお願いします。

みんなの回答

回答No.2

サーバーフォルダへのアクセス権。 あるいは、サーバーフォルダをイントラネット内ではなくインターネット上のものと誤認。 http://support.microsoft.com/default.aspx?scid=kb;ja;303650 ↑古いKBですが、IE10などでも同様です。 なので、一度XPモードPC内のフォルダを指定して試すのもよいかも。 すでに体験されたでしょうからお分かりのように XPモードはかなり遅いです。 VMware や VirtualBox の方がまだマシですが、似たり寄ったりかも。 メソッドや関数にXPモードが追随しきれていない可能性も? 以上、ご参考までということで。

kitagawasan
質問者

お礼

>サーバーフォルダへのアクセス権。 >あるいは、サーバーフォルダをイントラネット内ではなくインターネット上のものと誤認。  ・  ・ >なので、一度XPモードPC内のフォルダを指定して試すのもよいかも。 ご提案ありがとうございます。 正しく認識したり、時には誤認することもあり得るということでしょうか。 >XPモードはかなり遅いです。  ・ >メソッドや関数にXPモードが追随しきれていない可能性も? 当初は、Win98+メモリ32MBのマシンでこのシステムを開発しました。 それでも添付ファイルをサーバー上のフォルダに失敗なく置くことができました。 ただし、現在はマシン数も増え、社内ネットワーク上を日々多くのデータが行き交っていますので、マシンスペックが上がったといっても環境はより過酷になっているかもしれません。 ありがとうございました。

回答No.1

原因はわかりませんが、問題の切り分けとして。 >「取り込みに失敗」のエラーが からエラートラップを入れているようなので いったん外して VBAから出ている エラー番号と説明 & エラー行を確認してみてください。 あるいは、エラー処理中に、Debug.print Err.number,Err.descriotion を加えて イミディエイトウィンドウで確認を。 f1.Copy (MyPath & filename & "") のような気がしますけど・・・

kitagawasan
質問者

お礼

ご回答ありがとうございます。 エラー処理を外すと、これまで何度かやってみましたが、何故かエラーが出ずわかりませんでした。 大きなファイルを取り込むときに多いかと思えば、EXCELファイルの数百KBのファイルでも「取り込みに失敗」が出ることがあります。 ちなみにクライアントがWinXPで運用していたときは、数十MBのファイルでも取り込みに失敗することはありませんでした。 コードの記述は変わりありません。 再度エラー処理を外すや、仰せのイミディエイトウィンドウでの確認をしてみます。 それから、もしf1.Copy (MyPath & filename & "") が原因であれば、どんな対処を施せばよろしいでしょうか? 推測できるようであれば教えていただけると幸です。 いずれにしても少し様子を見て、またこの場で報告いたします。 ありがとうございました。

関連するQ&A

  • Notes 開発で、 excelファイルを読み込みデータを追加したい。

    現在notes7で開発を行っている(初心者)なのですが ビュー内の選択している文書からデータを取ってきて 読み込んだexcelファイルに書き足していきたいのですが、 任意のexcelを開くところまではネットを参考にして出来たのですが 詳細を理解していないため、そのファイルにデータを書き足していくことが出来ません。アドバイスをお願い致します。 現在作ってあるプログラムが以下です。 ' 既存のEXCELワークブックを開く Dim xlApp As Variant ' Excelオブジェクト ' マイドキュメントの指定ファイルを開く Dim wsh As Variant, fso As Variant Dim FilePath As String, FileName As String Set wsh = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") FilePath = wsh.SpecialFolders("MyDocuments") FileName = FilePath & "\sample.xls" If Not fso.FileExists(FileName) Then Msgbox "ファイルがありません。" & Chr(13) & FileName, 16 Exit Sub End If Set xlApp = CreateObject("Excel.Application") ' Excel OLE起動 xlApp.Workbooks.Open FileName xlApp.Visible = True これで、ファイルは開けます。ちなみにビュー内の選択文書の取り込みは出来てます。後は、そのデータをエクセルに書き出すだけなのですが そこが解りません。 それと、現在マイドキュメント内のファイルを読み込んでますが 同じデータを共有リソースの中に保存してあるので、そっちから開きたいのですが、パスをどのように設定すればいいのか解りません。 すみませんが、アドバイスをお願い致します。

  • macのofficeのVBAでファイルを検索する

    現在iMac 1.9GHz(isight内蔵) PowerPC G5 でoffice 2004 for macを使用しています。 以下のような複数のフォルダを含む任意のフォルダ(AA)内から任意のファイル名(aa or dd)のファイルが存在するかどうかを検索し、 ファイルが存在すればファイル名を、無ければ無いことを返すプログラムを作成しようと考えています。 AA---BB---aa.xls | --CC---bb.xls | | | --cc.xls ---------dd.xls そのために以下のプログラムを用意しました。(他のサイトのマル写しですが) ーーーーー Sub Sample() Dim f, buf As String, cnt As Long, FSO Set FSO = CreateObject("Scripting.FileSystemObject") With Application.FileSearch .NewSearch buf = InputBox("検索するファイル名を指定してください") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf buf = GetFolder("検索を開始するフォルダを指定してください") If buf = "" Then Exit Sub .LookIn = buf .SearchSubFolders = True ''サブフォルダも検索する If .Execute() > 0 Then For Each f In .FoundFiles cnt = cnt + 1 Cells(cnt, 1) = f ''パス+ファイル名 Cells(cnt, 2) = FSO.GetFile(f).Name ''ファイル名 Cells(cnt, 3) = FSO.GetFile(f).ParentFolder ''パス Next f Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing End Sub Function GetFolder(msg As String) Dim Shell, myPath Set Shell = CreateObject("Shell.Application") Set myPath = Shell.BrowseForFolder(&O0, msg, &H1 + &H10) If Not myPath Is Nothing Then GetFolder = myPath.Items.Item.Path Else GetFolder = "" End If Set Shell = Nothing Set myPath = Nothing End Function ーーーーー このプログラムをexcel2004上のマクロとして実行すると、 実行時エラー’429’: ActiveX コンポーネントはオブジェクトを作成できません。 とエラーが表示されます。 そこで、デバッグとして一行ずつステップインさせると、二行目の Set FSO = CreateObject("Scripting.FileSystemObject") の部分でエラーとなり、動作が停止します。 何故この様なエラーが発生するのか判りません。 このエラーが発生する理由と解決策をお教えいただきたいと思います。 宜しくお願いいたします。

    • ベストアンサー
    • Mac
  • エクセルVBAがエラーが出て作動しません。

    以下のVBAコードを作成してみました。ところが、"Sub Sample1()"の部分が黄色く塗りつぶされ、"get folder"が選択された状態で”Subまたはfunctionが定義されていません”というエラーがでます。こちらですがどこを直せばうまくいくかご教示いただけないでしょうか?因みにファイルを探すコードを試している過程でたまたまネットでコードを見つけたので試ている段階です。 ーーーーーーーーーーーーーーーーーーーー Sub Sample1() Dim f As Variant, buf As String, cnt As Long, FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") With Application.FileSearch .NewSearch buf = InputBox("ZGBL_DLV_SOM_RP0442_SLS_ORD (39).xlsx") If buf = "" Or buf = "False" Then Exit Sub .Filename = buf buf = GetFolder("C:\Users\ytsuruok\Desktop\test") If buf = "" Then Exit Sub .LookIn = buf .SearchSubFolders = True ''サブフォルダも検索する If .Execute() > 0 Then For Each f In .FoundFiles cnt = cnt + 1 Cells(cnt, 1) = f ''パス+ファイル名 Cells(cnt, 2) = FSO.GetFile(f).Name ''ファイル名 Cells(cnt, 3) = FSO.GetFile(f).ParentFolder ''パス Next f Else MsgBox "見つかりませんでした" End If End With Set FSO = Nothing End Sub ーーーーーーーーーーーーーーーー

  • VB6・一括でファイル名の変更したいのですが

    VB6でファイルリネームツールを作成しています。 DriveListBox・DirListBox・FileListBox・TextBox*2・コマンドボタン*3を配置しています。 実行して、ドライブ・ディレクトリを選択して、FileListBoxに表示されいるファイルをコマンド2ボタンで全部Text2に表示させています。 そこで、text2からファイル名を直接編集して、コマンド3ボタンで編集したファイル名で保存したいのですが、どう記述すれば良いのでしょうか。 Text1とコマンド1の状態は、FileListboxでクリックしたファイルをText1に表示・編集して、コマンド1でファイル名変更できる状態です。 コマンド3のコードですと、 >Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName) の行が、実行エラー53、ファイルが見つかりません。となります。 宜しくお願いします。 現在のコードです。 Private Sub Command1_Click()   Dim fso As New FileSystemObject   Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName)   fsofile.Name = Text1.Text   File1.Refresh end sub Private Sub Command2_Click()   Text2.Text = Clear   Dim fso As New FileSystemObject   For Each myFile In fso.GetFolder(Dir1.Path & "\" & File1.FileName).Files     Text2.Text = Text2.Text & myFile.Name & vbCrLf   Next End Sub Private Sub Command3_Click()   Dim fso As New FileSystemObject   Set fsofile = fso.GetFile(Dir1.Path & "\" & File1.FileName)   fsofile.Name = Text2.Text   File1.Refresh End Sub Private Sub Dir1_Change()   File1.Path = Dir1.Path End Sub Private Sub Drive1_Change()   Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click()   Text1.SetFocus   Text1.Text = File1.FileName End Sub Private Sub Form_Load()   Text1.Text = ""   Text2.Text = ""   Dir1.Path = App.Path   Drive1.Drive = App.Path End Sub

  • エクセルファイル 行列入れ替えたもの同時作成VBA

    あるxmlファイルを一旦テキストファイルにして そこから数値をエクセルファイルに移行して ひとつはM.xlsxとし それに続いて行列を入れ替えた エクセルファイルR.xlsxを 作りたいのですが M.xlsx R.xlsxのそれぞれを作るコードを 単純に 合体させただけでは どうも できません M.xlsxだけ また R.xlsxだけの 作成するコードは 出来たのですが それぞれ別のマクロとして実行することになります ひとつのマクロでM.xlsx R.xlsx同時に 作成するVBAコードは可能でしょうか 宜しくお願い致します ちなみに該当コードを単純化して 合体したのが以下のものです win10 office10 Sub 783縦() Dim FileName As Variant ChDir "\\DESKTOP-O5\f" FileName = Application.GetOpenFilename(FileFilter:="xmlファイル,*.xml") If FileName = False Then MsgBox "キャンセルされました" Exit Sub End If FileCopy FileName, Left(FileName, InStrRev(FileName, "\")) & "テキスト.txt" Const MyFile = "\\DESKTOP-O5\f\テキスト.txt" Const Key1 = "<Name>" Const Key2 = "</Name>" Const Key3 = "<NameKana>" Const Key4 = "</NameKana>" Const PutBokName = "M.xlsx" Dim buf As String Dim Len1 As Long Dim Len2 As Long Dim Pos1 As Long Dim Pos2 As Long Dim Len3 As Long Dim Len4 As Long Dim Pos3 As Long Dim Pos4 As Long Dim PutBook As Workbook With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .LoadFromFile MyFile buf = .ReadText .Close End With Len1 = Len(Key1) Len2 = Len(Key2) Pos1 = InStr(buf, Key1) Pos2 = InStr(buf, Key2) Len3 = Len(Key3) Len4 = Len(Key4) Pos3 = InStr(buf, Key3) Pos4 = InStr(buf, Key4) Set PutBook = Workbooks.Add With PutBook.Sheets(1) .Cells(1, 1).Value = "氏名" .Cells(1, 2).Value = Mid(buf, Pos1 + Len1, Pos2 - (Pos1 + Len1)) .Cells(2, 1).Value = "氏名カナ" .Cells(2, 2).Value = Mid(buf, Pos3 + Len3, Pos4 - (Pos3 + Len3)) 'クリップボードをクリア Application.CutCopyMode = False PutBook.SaveAs ThisWorkbook.Path & "\" & PutBokName End With Const PutBokName = "R.xlsx" Dim buf As String Dim Len1 As Long Dim Len2 As Long Dim Pos1 As Long Dim Pos2 As Long Dim Len3 As Long Dim Len4 As Long Dim Pos3 As Long Dim Pos4 As Long Dim PutBook As Workbook With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .LoadFromFile MyFile buf = .ReadText .Close End With Len1 = Len(Key1) Len2 = Len(Key2) Pos1 = InStr(buf, Key1) Pos2 = InStr(buf, Key2) Len3 = Len(Key3) Len4 = Len(Key4) Pos3 = InStr(buf, Key3) Pos4 = InStr(buf, Key4) Set PutBook = Workbooks.Add With PutBook.Sheets(1) .Cells(1, 1).Value = "氏名" .Cells(2, 1).Value = Mid(buf, Pos1 + Len1, Pos2 - (Pos1 + Len1)) .Cells(1, 2).Value = "氏名カナ" .Cells(2, 2).Value = Mid(buf, Pos3 + Len3, Pos4 - (Pos3 + Len3)) 'クリップボードをクリア Application.CutCopyMode = False PutBook.SaveAs ThisWorkbook.Path & "\" & PutBokName End With End Sub -------------------------------

  • FileSystemObjectについて

    御観覧有難うございます。 基礎FSOなんですが、スパテクという本を買って、一から順に excelを学んでいるのですが、本の通りにやっても、 記述ミスになってしまうので、お聞きしたいんですけども、 記入して、ミスになるのは、 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile(ThisWorkbook.Path & "\" & ThisWorkbook.Name) MsgBox "最終更新日時=" & f.DateLastModified という文法の、Set f = fso.GetFile(ThisWorkbook.Path & "\" & ThisWorkbook.Name)の部分で¥マークの部分があやしい感じですが、 文法自体が記述ミスだそうで… excel2007なんですが、対応していて、本の通りにやって、 出来ない場合ってあるんでしょうか… ご回答よろしくお願いします。

  • マクロでファイル名(を含む)を検索しPDFを開く

    マクロでファイル名(セルの値)を含むPDFファイルを検索し、ファイルが存在していればそのファイルを開きたいのですがうまく行きません。 Sub を含むPDFファイルを開く() Dim keyword As Variant Dim myPath As Variant Dim fName Dim pname Set my = ActiveSheet keyword = my.Range("D2").Value '検索する値 myPath = my.Range("F1").Value  'フォルダパス fName = Dir(myPath & "*" & keyword & "*" & ".pdf") pName = (myPath & "*" & keyword & "*" & ".pdf")  '"*" & keyword & "*"が良くないのだと思います。 If fName = "" Then MsgBox ("該当するファイルが存在しません。") Exit Sub End If With CreateObject("Wscript.Shell")  .Run pname, 5  'ここでエラーが出ます。 End With End SUB 'pname内の"*" & keyword & "*"をkeywordのみにすると完全一致のファイルは開けるのですが部分一致で開きたいため”*”を使用したところエラーが出てしまいます。 また、検索するPDFファイルにスペースが含まれていても開けるようにしたいのです。 どうかご指導のほうをよろしくお願いします。

  • vba ファイルの移動について

    フォルダAの中にあるたくさんのpdfファイルの中から、 ファイル名の頭文字3つがE列に記載した「aaa」だったら フォルダBに移動させるという内容にしたいです。 ネット検索などで、近いものを作成しましたが(下に貼り付け)、 下から4行目、「fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName」で 「実行時エラー'53'  ファイルが見つかりません。」 とエラーが出てしまいます。 どの様に書き直せばよいのでしょうか? どなたかご存じでしたら、ぜひお教え下さい。 よろしくお願いします。 エクセル2010を使用しています。 Sub CheckAndMoveFiles() Dim FolderA As String Dim FolderB As String FolderA = Range("D1").Value FolderB = Range("B2").Value Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim ws As Worksheet Set ws = ActiveSheet Dim lastRow As Long lastRow = ws.Range("E" & Rows.Count).End(xlUp).Row Dim r As Long Dim fileName As String For r = 1 To lastRow If ws.Cells(r, "E").Value <> "" Then fileName = ws.Cells(r, "E").Value dFileName = Dir(FolderA & "\" & Left(fileName, 3) & "*.pdf") Do While dFileName <> "" dFileName = Dir() Loop fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName 'ここでストップ End If Next End Sub

  • PowerPointVBA複数ファイル一括について

    現在開いているpptと同フォルダ内の全てのpptファイルに対して、 1ページ目のサブタイトルに日付を一括で入れるマクロを作成したいのです。 下記のように作成してみたのですが、いちおう全ファイルに希望通りの個所に希望の文字列が入るのですが、実行にものすごく時間がかかりました。。 ステップインで確認すると、"Presentations.Open FileName:="の行で、Forループの繰り返し毎に、全ファイル開いてしまっているようで。。 一般の初心者で、見よう見まねでやっていまして、ヘルプやWeb検索でも、どうしても解決策を見いだせませんでした。 どなたか、ご教示いただけませんでしょうか。 よろしくお願いいたします。_(_ _)_ ------------------------------------------------------------ Sub AddDatetoAllPPT() Dim todaydate As String todaydate = Year(Now) & "年" & Month(Now) & "月" & Day(Now) & "日" Dim myShape As Shape Dim FSO As Object, Files As Variant Set FSO = CreateObject("Scripting.FileSystemObject") Set Files = FSO.GetFolder(ActivePresentation.Path).Files For Each File In FSO.GetFolder(ActivePresentation.Path).Files Presentations.Open FileName:=ActivePresentation.Path & "\" & File.Name Set myShape = ActivePresentation.Slides(1).Shapes("サブタイトル 2") myShape.TextFrame.TextRange.Text = todaydate ActivePresentation.Saved = True Next End Sub

  • VBS【特定のレコード長で件数取得】

    お世話になります。 下記VBSコードですが、あるファイルを特定のレコード長(340で1行)で割って件数を取得したいのですが、 どこを改良すればよいでしょうか? ------------------------------------------------------------- Option Explicit '********オブジェクト変数定義******** Dim FSO , f '********カウント変数宣言************ Dim CNT '********フォルダ変数宣言************ Dim TARGET_FOLDER '********ファイル変数宣言************ Dim TARGET_FILE , TARGET_FILENAME '********レコード長変数宣言************ Dim FILE_LENGTH '********時間変数定義******** Dim YYYYMMDD , HHMMSS , HH , MM , SS YYYYMMDD = Year(Date) * 10000 + MONTH(Date) * 100 + DAY(Date) HH = Hour(Time) MM = Minute(Time) SS = Second(Time) If MM < 10 then MM = "0" & MM End If If SS < 10 then SS = "0" & SS End If HHMMSS = HH & ":" & MM & ":" & SS '********その他変数定義******** Dim FILE_SIZE , FILE_DAY '初期設定 TARGET_FOLDER = "D:\test" TARGET_FILE = "test" TARGET_FILENAME = TARGET_FOLDER & "\" & TARGET_FILE FILE_LENGTH = 340 CNT = 0 'ファイルサイズ・ファイル更新日時取得処理 Set FSO = CreateObject("Scripting.FileSystemObject") Set f = FSO.GetFile(TARGET_FILENAME) FILE_SIZE = f.size FILE_DAY = f.DateLastModified 'レコード件数取得処理 With FSO.GetFile(TARGET_FILENAME).OpenAsTextStream(8) CNT = .Line .Close Msgbox CNT Msgbox FILE_SIZE Msgbox FILE_DAY End With ------------------------------------------------------------- 上記だとCNTはあくまで1改行につき1件でカウントしています。 ご存知の方がいらっしゃいましたら、お知恵を拝借させていただけませんでしょうか? 何卒宜しくお願い致します。