• 締切済み

ノーツでのファイル処理

お世話になります。 sinsuke-_- です。 ノーツでのファイル処理に関して教えてください。 ◆実行したいこと  ノーツにてCSVファイルを作成し、あるサーバのディレクトリに保存する処理を行いたいのです。 今実装されているScriptで保存先を、\\XXX.X.X.XXX\D$\print\ファイル名(XXX.X.X.XXX=IPアドレス)としています。 あるクライアントPCだと上手く上記の箇所に保存できるのですが、あるクライアントPCだと上手く保存できません。(U0001 ファイルを開くことができません。) 任意のサーバの場所へクライアントからファイルを保存するためには、どのようなScriptとどのような環境が必要でしょうか? 今実装されているScriptを載せさせていただきます。 ----------------------------------------------------------- Dim OutPath As String 'ファイル保存先 Dim FileName As String 'ファイル名 Dim WData As String 'ファイル書込み内容 FileName = Year(Now()) & Month(Now()) & Day(Now()) & Hour(Now()) &_ Minute(Now()) & Second(Now()) & ".csv" Outfile = "\\XX.X.X.XXX\D$\Print\" & FileName Filenum% = Freefile() Open Outfile For Output As Filenum% '========================= 'csvファイル書出し '========================= While Not doc Is Nothing '書出し処理 Wend Close Filenum%

みんなの回答

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.2

ノーツからサーバにファイルを書き出すようなことは特別なことでもありませんが、 ご質問の場合、ノーツからというのは関係無く、クライアントでの処理であれば、 そのノーツを使用しているユーザーアカウントに与えられた権限の問題だと思います。 こういう用途では「D$」というようなデフォルトの管理共有はあまり使いません。 新たに共有フォルダを設定してどのユーザーでも書き込みができるように設定するのが 一般的な手続きかと思います。 もちろん、共有フォルダを使用せずFTPを使用するのも良いですが、その場合、 処理の同期/非同期の問題、転送に失敗したときの判断も考慮する必要があると思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

エラーになるPCで「ファイル名を指定して実行」から 「\\XXX.X.X.XXX\D$\print\」としてフォルダが開けますか? Windowsの種類によって、参照の仕方が微妙にちがうのと、 パスワードやドメインなどセキュリティ上の問題などで 単にアクセスできないのではないかと思います。 どうしてもネットワークにファイルを保存するのであれば、 みな同じ環境にするためにドライブ名を当ててx:ドライブ のprintフォルダ・・・とかオーソライズした方がよいでしょうね

sinsuke-_-
質問者

お礼

回答ありがとうございます。 >エラーになるPCで「ファイル名を指定して実行」から >「\\XXX.X.X.XXX\D$\print\」としてフォルダが開けますか? フォルダ展開する前に、ユーザとパスワードを聞かれます。 おそくら、ユーザとパスワードを聞かれるのでファイルが保存できないと思います。 昨日考えたのは、クライアントにバッチを仕掛けてみようかと思います。 バッチの機能は、FTPでファイル転送です。 ファイル転送終了後、バッチファイルをクライアントから削除すれば問題ないかと考えています。 もしよろしければ、同じように他PC(サーバ)へファイル保存を行ったことがある方がいらっしゃれば、その時の考え方や実装したプログラム内容に関して教えて頂ければと思います。 よろしくお願い致します。

関連するQ&A

  • VB2005でのファイル操作について

        Dim filedata As String Dim fileNum As Integer Dim fileName As String Dim i As Integer fileName = "C:\Paradata.txt" fileNum = FreeFile() FileOpen(fileNum, fileName, OpenMode.Output) For i = 0 To 9 filedata = data(i, 0) & "," & data(i, 1)・・・・・ PrintLine(fileNum, filedata) Next FileClose あるボタンを押しますと上記のようにテキストファイルにデータを保存しようとしているのですが、1回目のボタンクリックではエラーが無いのですが2回目以降は"別のプロセスで使用されているため、プロセスはファイル 'C:\Paradata.txt' にアクセスできません。"のエラーが発生してしまいます。いろいろと調べているのですがまだわからないのでどこがおかしいか教えてください。よろしくお願い致します。

  • 日本語混じりのファイルをランダムアクセスで読みこむ場合

    ファイルを1024バイトずつ読みこみ、その内容をソケットでホストへ送るというアプリがあります。 ファイルを「1024バイト読んで→送信」を繰り返すのですが、ファイルを読みこむところ(Get)で日本語が混じったときにエラーを生じます。 「レコード長が一致しません」というエラーメッセージです。 日本語がはいる桁数だけバイト数は減るためだと思いますが、ランダムアクセスで読みこむと場合の記述の仕方で、何とかならないものかと思案しています。 どなたかご教授ください。よろしくお願いします。 <プログラム記述例>   Dim filenum As Integer   Dim filename As String   Dim buffer As String * 1024   filename = "e:\tmp\file.txt"   filenum = FreeFile   Open filename For Random Access Read As #filenum Len = 1024   Do While Not EOF(filenum)     Get #filenum, , buffer   Loop   Close #filenum

  • エクセルファイル(book)のシートの内容をCSVファイルにおとしたい

    こんにちは。 VB初心者です。 実はVBではなく、Excel VBAで行なっているのですが。 ここに質問していいかもよく分かってないのですが。 プログラムの処理としては、あるBookのシートの内容を 別のCSVファイルとして生成したいのです。マクロを組んだのですが、一つ問題があって困っています。 問題: 生成したCSVファイルが一度Window上に表示されて (それはいいのですが、あとで閉じますから) 以下の確認メッセージがでてしまいます。 「outFile.csvはExcel97のファイル形式では、ありません。変更を保存しますか?」 要はプログラムがここで、一旦ユーザアクションを要求してしまうのです。 アクションなしに普通に終了させたいのですが。 マクロではなくVBだったらこんなことはならないのでしょうか? 初心なのでよく分かりません。 もしくはもっとほかの簡単なコードできるのでしょうか。 以下にコードを記述します。 Sub OutFile() Dim myWBpath As String myWBpath = ActiveWorkbook.Path Workbooks.Open FileName:=myWBpath & "\testData1.xls" Sheets("sheet1").Select ActiveWorkbook.SaveAs FileName:="C:\outFile.csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close End Sub

  • wgetを使ってデータをサーバに送ったら0ファイルが作成される

    クライアントからWGETを使ってデータを送信し サーバのASP.NETで受け取りファイルを作成したら 中身のないファイルが作成されました。 何とかWGET→ASP.NETの連携でクライアントにある CSVデータをサーバにコピーしたいのですが、 詰まってしまったので、アドバイスをお願いします。 クライアント os: windowsXP WGET ------------------------------------------------------ wget --post-data="name_csv=utf8.csv" --post-file="filename=c:\\wget\utf8.csv" http://IPアドレス/printdata/catchcsv.aspx?name_csv=utf8.csv ------------------------------------------------------ サーバ os: windows server 2003 webserver: iis asp.net ---------------------------------------------------- <%@Language="VBScript" Debug="true"%> <% Dim name_csv As String Dim strCreateFile As String Dim data_csv Dim stm name_csv = Request.Form("name_csv") data_csv = Request.Form("filename") strCreateFile = "c:\inetpub\wwwroot\AA\" + name_csv stm = CreateObject("ADODB.Stream") stm.Type = 2 stm.Open stm.WriteText(data_csv) stm.SaveToFile(strCreateFile, 2) Response.end() %> ----------------------------------------------

  • ノーツのファイル→Outlookのファイル

    クライアントに保存しておりますノーツのファイル (拡張子.nsf)をOutlookのファイル(拡張子.pst)に変換をしたいのですが、何か方法をご存知でしょうか? ノーツのバージョンは、4.5で、アウトルックのバージョンは、2000もしくは2002です。 OSは、win98,win2000,winXP pro or Homeいずれも用意できます。 よろしくお願いします。

  • CSV形式で編集された項目をEXCELへ編集する方法

    CSV形式で編集された(7項目,300行)をEXCELファイルへ編集し、印刷する方法を教えて下さい。簡単なサンプルがあれば助かります。 CSV形式のテキストは、以下のような内容です。 Dim Filenum As Integer Dim i As Integer Dim Datatable(7, 300) As Integer Dim Maxrec As Integer Const datafile As String = "c:\編集データ.txt" Maxrec = 300 MsgBox "[" & datafile & "] で保存します。" Filenum = FreeFile Open datafile For Output As #Filenum For i = 1 To Maxrec Datatable(1, i) = i Datatable(2, i) = 100 + i Datatable(3, i) = 10 + i Write #Filenum, Datatable(1, i), _ Val(Datatable(2, i)), _ Datatable(3, i), _ Val(Datatable(4, i)), _ Val(Datatable(5, i)), _ Val(Datatable(6, i)), _ Val(Datatable(7, i)) Next i

  • 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 ---------------------------------- 以上、情報をお持ちの方がいらっしゃいましたらよろしくお願いいたします。

  • ActiveWorkBook VBA

    Sub test() Dim myCSV As String Dim Fname As Variant Dim Aname As String Dim Fullp As String Application.ScreenUpdating = False Fullp = ActiveWorkbook.FullName Pos = InStrRev(Fullp, "\") Fname = Left(Fullp, Pos) myCSV = Dir(Fname & "*.csv") Do Until myCSV = "" Workbooks.Open Fname & myCSV Aname = Left(Fullp, InStr(1, Fullp, ".") - 1) ActiveWorkbook.SaveAs filename:=Aname & ".xls", FileFormat:=xlExcel9795 ActiveWorkbook.Close myCSV = Dir() Loop Kill Fname & "*.csv" End Sub あるフォルダにあるcsvファイルをxlsで保存したいと思いましたが、アクティブになるBOOKがバラバラ? で、うまくいきません。csvファイルを開いたときに そのファイルがアクティブになり、うまくloopできないでしょうか?

  • ファイルを開く時間測定のスクリプトについて

    お世話になります 会社でログ監視ツールを導入するにあたりどの程度負荷がかかるのか 計測することになりました。 まず、ファイルを開くのにかかる時間をログに記録するための スクリプトを作成しました。 プログラムの最初と最後に時間を出力するというものです。 しかし、やってみたところ前後でまったく同じ時間が記録されていました。(秒まで) Runメソッドを使用し、ファイルが開き終わってから時間を記録するように するにはどういったロジックが必要なのか教えてください。 よろしくお願いします。 【現在のスクリプト】 Option Explicit Dim objWShell Dim objFs Dim outFile Dim vbNormalFocus Dim myData Set objFs = CreateObject("Scripting.FileSystemObject") Set outFile = objFs.CreateTextFile("ログファイルのパス", True) 'Trueは上書き可 Set objWShell = CreateObject("WScript.Shell") OutFile.WriteLine Now() objWShell.Run "rundll32.exe url.dll" & _ ",FileProtocolHandler 資料のパス", 1, TRUE OutFile.WriteLine Now() OutFile.WriteLine "終了" OutFile.Close

  • CSV取込みで最終行を取り込まない方法

    CSVの取込みで1行目のヘッダーと最終行のフッターを取り込まず 2行目~最終行の前までの中身だけを取り込みたいのですが、 1行目をスキップする方法は、下記を参照にしてなんとかできましたが、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1230200277 ここに最終行をはぶくという処理をいれるにはどういたらいいでしょうか? ---------------- Private Sub コマンド0_Click() Dim FSO As Object Dim InFile As Object Dim Outfile As Object Dim CsvPath As String Dim WorkPath As String Dim i As Long Const skipRow = 1 ''1行読み飛ばしの1 ''元のCSVファイルのフルパスに変更して! CsvPath = "C\JPデータ取込CSV.csv" ''新しく作るCSVファイル。このMDBがあるフォルダにWork.csv 名で作られます。 WorkPath = CurrentProject.Path & "\Work.csv" '' FileSystemObjectのセット Set FSO = CreateObject("scripting.FileSystemObject") Set InFile = FSO.OpenTextFile(CsvPath, 1) Set Outfile = FSO.createTextFile(WorkPath) '' 読み飛ばし設定 For i = i To skipRow InFile.SkipLine Next i ''新しいCSVファイル作成 Outfile.Write InFile.ReadAll ''CSVファイルの終了と解放処理 Outfile.Close InFile.Close Set Outfile = Nothing Set InFile = Nothing ''Work.CSVファイルのインポート(今のDocmd以下をコピーし、ファイル名等を変更!) 'DoCmd.TransferText ・・・・・・ DoCmd.TransferText acImportDelim, "JPご清算書インポート定義", "T01_JPご精算書", WorkPath, True ''使用済みのWork.CSVを削除 FSO.DeleteFile WorkPath ''FileSystemObjectの解放 Set FSO = Nothing MsgBox "取り込み完了" End Sub

専門家に質問してみよう