• 締切済み

ファイルサイズ

ASP.NETです 以下のファンクションでファイルサイズを取得しようといるのですが、実行するとアプリケーションエラーが発生します。 function GetFileSize( Path as String) as double dim FileSize as long = 0 if len(Path) > 0 then FileSize=filelen(Path) End If return math.Round(FileSize/1024,0) end function どうしたらいのですか?

みんなの回答

回答No.1

Aspで戻り値を返すのって、returnではなくて GetFileSize = math.Round(FileSize/1024,0) こうじゃなかったですかね? .NETは触った事無いのでそんなに自信はありませんが…

関連するQ&A

  • 処理を別ファイルに書きたいんですが。

    ASPのコード部分で、 いろんなファイル共通の処理(更新日付を表示用に編集する等)をまとめて一つの別ファイルに記述し、 各ファイルの処理内で、呼び出して使用したいのですが。 ◎呼び出し側 <!--#include file="abc.asp"> として、aspコード内で、 call Change_Ymdhms(w_Tymd,w_Thms) と書いてます。 ◎呼び出される側 abc.aspの中では、 function Change_Ymdhms(w_Ymd,w_Hms) dim w_Len dim R_Ymdhms w_Len = len(w_Tymd) if w_len < 8 then w_Ymd = string((8 - w_Len),"0") & w_Tymd end if w_Len = len(w_Hms) if w_len < 6 then w_Thms = string((6 - w_Len),"0") & w_Thms end if R_Ymdhms = mid(w_Ymd,1,4) & "/" & mid (w_Ymd,5,2) & "/" & mid(w_Ymd,7,2) & " " & _ mid(w_Yms,1,2) & ":" & mid(w_Yms,3,2) & ":" & mid(w_Yms,5,2) end function とファンクションが書いてあります。 呼び出し側のaspファイルを実行すると、 「ページを表示できません」となり、 「Subプロシージャを呼び出すときに括弧を使うことはできません」というエラータイプが表示されます。 本で探しても見つけられず、「こうすればどうか・・・」 と思い、書いてみましたが、上手くいきません。 (当たり前ですが・・・) どなたかご存知でしたら、どうか教えてください。 よろしくお願いします。

  • VB 2008: Do Whie...Loop文について

    Function FileGetChar(ByVal f As String, ByVal p As Integer) As String   Dim i As Integer = 1   Dim j As Integer = 0   Dim l As Integer   Dim n As Integer = FreeFile()   Dim c As Char   If File.Exists(f) Then     FileOpen(n, f, OpenMode.Random, OpenAccess.Read, , 1)     l = FileLen(f)     Do While (i + j <= l)       FileGet(n, c, i + j)       j = j - (Math.Abs(Asc(c)) > 255)       i = i + 1       If i > p Then         Exit Do       Else         c = ""       End If     Loop     FileClose(n)   End If   Return c End Function [イミディエイトウインドウ] ? FileGetChar("D:\Temp\Test.txt",1) "1" ? FileGetChar("D:\Temp\Test.txt",2) "2" と、一応は動作しています。 l------->ファイル長 i+j----->読み込みのカレントポジション p------->読み込み指示ポジション 今、悩んでいるのはDo...Loop文中のIf Else End If の追放。 何か妙手があれば教えて頂きたい。

  • コマンドプロンプトで実行したら・・・

    Function SpaceDelete(dt As String) As String Dim tmp As String Dim Aftr As String Dim i As Integer For i = 1 To Len(dt) tmp = Mid(dt, i, 1) If tmp <> " " And tmp <> " " Then Aftr = Aftr & tmp End If Next i SpaceDelete = Aftr End Function test.vbs(1,25) Microsoft VBScript コンパイル エラー: ')'がありません。とエラーがでます。 どこが問題かわかりません。 どなたか教えて頂けないでしょうか。 宜しくお願いします。

  • 複数ファイルを1つにまとめる コード添削願い

    複数のファイルを1つのファイルにまとめようとがんばっています。 リストボックスを用意し、ファイル一覧をつくり、 そこからアドレスを取得して、まとめていくという手順です。 ただ、最後のWriteFile関数の部分で、書き込みが出来ずエラーが返ります。 なぜかが分かりません。 ご教授お願いします。 Dim num As Long Dim buf As BytePtr Dim hFile As HANDLE Dim n As Long Dim LastFileSize As Long num=SendDlgItemMessage(hMainWnd,ListBox1,LB_GETCOUNT,0,0) For n=0 to num-1 Step 1 'ファイル名を取得 Dim name As BytePtr Dim len As Long Dim s As String Dim path As String Dim FileSize As Long Dim dwAccessByte As DWord len=SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXTLEN,n,0)+1 name=malloc(len) SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXT,n,name) s=MakeStr(name) free(name) 'ファイルパスを連結し、読み込む path=str+"\"+s 'ファイルハンドルの作成 hFile=CreateFile(path,GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,ByVal 0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0) If hFile=INVALID_HANDLE_VALUE Then MessageBox(hMainWnd,Ex"ファイルハンドル作成時にエラーが発生しました!","Error File Number Is "+Str$(n)+" .",MB_OK or MB_ICONWARNING) Exit Sub End If 'ファイルのサイズの取得 FileSize=GetFileSize(hFile,0) LastFileSize=LastFileSize+FileSize '領域確保 If n=0 Then buf=malloc(FileSize+1) Else buf=realloc(buf,FileSize+1) End If 'ファイルの読み込み If ReadFile(hFile,buf,FileSize,VarPtr(dwAccessByte),ByVal 0)=0 Then MessageBox(hMainWnd,"ファイル読み込み時にエラーが発生しました!!","Error "+Str$(n),MB_OK or MB_ICONWARNING) MessageBox(hMainWnd,Ex"FileSize="+Str$(FileSize)+Ex"\r\ndwAccessByte="+Str$(dwAccessByte),"",MB_OK or MB_ICONWARNING) End If 'ファイル名とサイズを記録 Open dir+"\FileInfo.txt" For Append As #1 Print #1,s+"="+Str$(FileSize) Close #1 CloseHandle(hFile) Next hFile=CreateFile(dir+"\game.test",GENERIC_WRITE,0,ByVal 0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0) If hFile=INVALID_HANDLE_VALUE Then MessageBox(hMainWnd,Ex"ファイルハンドル作成時にエラーが発生しました!","Error File Number Is At Last",MB_OK or MB_ICONWARNING) Exit Sub End If If WriteFile(hFile,buf,LastFileSize,VarPtr(dwAccessByte),ByVal 0)=FALSE Then MessageBox(hMainWnd,"ファイル作成時にエラーが発生しました!!","Last Error",MB_OK or MB_ICONWARNING) MessageBox(hMainWnd,Str$(LastFileSize)+","+Str$(dwAccessByte),0,0) End If CloseHandle(hFile) free(buf) MessageBox(hMainWnd,"処理終了","End",MB_OK or MB_ICONINFORMATION)

  • メールの送信について

    ASPを使ってwebアプリ見たいなのを作ろうとしています。 データの登録時に予め登録されてているユーザに登録された旨を伝える メールを送信したいです。 いろいろ試した結果、直でbsap21を呼び出すのではなく、bsmtp.dllを 呼び出して送信するほうが動きがいい(というか、basp21のほうはSMTPサーバに接続しない)ので、その方向で行きたいのですが。。。 見つけたコードが以下です。 ------------------------------------------------------------ Private Declare Function SendMail Lib "bsmtp"_ (strServer As String, strTo As String, strFrom As String, _ strSubject As String, strBody As String, strFile As String) As String Public Function SendViaBASP() As String Dim strMailServer As String: strMailServer = "***.***" Dim strFrom As String: strFrom = "hoge@hoge.com" Dim strTo As String: strTo = "hoge@hoge.com" Dim strBcc As String: strBcc = "" Dim strToBcc As String: strToBcc = "" Dim fHTML As Boolean: fHTML = False Dim strSubject As String Dim strBody As String Dim strAttachments As String: strAttachments = "" Dim strRet As String strSubject = "BASP21" strBody = "このメールは、BASP21経由で送信しました." If Len(strTo) Then strToBcc = strTo Else strToBcc = strBcc End If If fHTML Then strToBcc = ">Content-Type: text/html; charset=iso-2022-jp" _ & vbTab & strToBcc End If strRet = SendMail(strMailServer, _ strToBcc, strFrom, strSubject, strBody, _ strAttachments) SendViaBASP = strRet End Function --------------------------------------------------------------- で、これをACCESSのモジュールに登録し、実行したところ問題なく 動くのですが、これをASPに組み込む方法がわかりません。 ACCESSはデータの登録先ではありますが、常に起動しているわけでは ないので、おそらくモジュールとした場合、動かないですよね? ASPから上記のコードを動かすには、どうしたらいいでしょうか。 普通にASPの中(<%~%>)に入れると「ステートメントの末尾が不正」 とのメッセージがでてしまいます。 どうかよろしくお願いします。

  • VB2008 2バイト文字の化け字は当然! Yes or No?

    Function FileGetChar(ByVal f As String, ByVal p As Integer) As String   Dim n As Integer = FreeFile()   Dim c As Char = “”   If File.Exists(f) Then     FileOpen(n, f, OpenMode.Random, OpenAccess.Read, , 1)     Seek(n, p)     If Not EOF(n) Then       FileGet(n, c)     End If     FileClose(n)   End If   Return c End Function このようにSeek関数とFileGet関数を利用する限りでは2バイト文字の化け字は避けられない! 一体、この私の判断は正しいのでしょうか? VB2008 Express Edition

  • ファイル名を合成すると検索できないのでしょうか?

    下記のような式がありまして、一度作成したファイルは上書きされないはずですが何回やっても上書きされてしまいます。 これはファイルを検索していないのでしょうか? 既にファイルがあったら終了するはずですが何か間違えていますか? 'ファイル作成 Sub MakeCopyFile(newfile As String, orgfile As String) If SearchFile(newfile) Then Exit Sub End If Set fs = CreateObject("Scripting.FileSystemObject") fs.CopyFile orgfile, newfile End Sub ' ファイル検索 Function SearchFile(fname As String) As Boolean SearchFile = False Set fs = Application.FileSearch With fs .Filename = fname If .Execute() > 0 Then SearchFile = True End If End With End Function Sub Macro1() Dim name As String '名前 Dim fname As String 'ファイル名 Dim directory As String '作成先ディレクトリ Dim fullpath As String 'フルパス Dim orgfile As String '雛形のファイル名 Dim editbook As Workbook '個人データブック Dim id As String '番号 directory = "H:\test\" orgfile = "H:\test\雛形.xls" For i = 1 To 100 name = ThisWorkbook.Worksheets("Sheet2").Cells(i, 10).Value id = ThisWorkbook.Worksheets("Sheet2").Cells(i, 12).Value If name = "" Then Exit For End If 'コピーしたファイルを作成する fname = name + id + ".xls" 'ファイル名合成 fullpath = directory + fname 'フルパス合成 Call MakeCopyFile(fullpath, orgfile) 'ファイル作成 Workbooks.Open Filename:=fullpath Set editbook = Workbooks(fname) editbook.Worksheets("Sheet3").Cells(8, 14).Value = name editbook.Worksheets("Sheet3").Cells(8, 10).Value = id '※(その他必要な処理があれば追加してください) editbook.Close (True) Next i End Sub

  • エクセルVBAで場所の指定

    また質問させていただきます。先日Wendy02さんに以下のコードを お教えいただきました。 少し内容を変更したくまた質問をさせていただきます。 移動前のフォルダ名をあらかじめフルパスで指定してある セルがあるのですが、そのセルには C:\Documents and Settings\user\デスクトップ\Test1Fold とあるとして、そのパスを取得して SourceDir = SourceFolder & "Test1Fold\" '末尾に\ は付けなくてよい の部分は移動前のフォルダが変わっても対応できるようにしたいのですが、どのようにするのかわかりません。どのように記述すればいいでしょうか?よろしくお願いします。 Sub MoveDirectries()   Dim SourceFolder As String   Dim SourceDir As String   Dim DestFolder As String   Dim DestDir As String   Dim ArDirs() As String   Dim FOLname As String   Dim i As Integer   Dim v As Variant   Dim ret As Integer      'Win 2000以上   Const MYCMD1 As String = "CMD /C MOVE " '末尾は半角スペースを開ける      SourceFolder = ActiveWorkbook.Path & "\" 'ベースのフォルダ(元)\ は必ず付ける   DestFolder = ActiveWorkbook.Path & "\" 'ベースのフォルダ(先)\ は必ず付ける      SourceDir = SourceFolder & "Test1Fold\" '末尾に\ は付けなくてよい   DestDir = DestFolder & "Test1AFold\"      '最終フォルダに \ があったら省く   If Right(SourceDir, 1) = "\" Then SourceDir = Mid$(SourceDir, 1, Len(SourceDir) - 1)   If Right(DestDir, 1) = "\" Then DestDir = Mid$(DestDir, 1, Len(DestDir) - 1)      ReDim Preserve ArDirs(i)   FOLname = Dir(SourceDir & "\", vbDirectory)   Do While FOLname <> ""     If FOLname <> "." And FOLname <> ".." Then       If (GetAttr(SourceDir & "\" & FOLname) And vbDirectory) = vbDirectory Then         ReDim Preserve ArDirs(i)         ArDirs(i) = FOLname         i = i + 1       End If     End If     FOLname = Dir   Loop   'フォルダの下のフォルダを作るのは一回のみ   For Each v In ArDirs()     If Dir(DestDir & "\" & v, vbDirectory) = "" Then      ret = Shell(MYCMD1 & """" & SourceDir & "\" & v & """" & " " & """" & DestDir & """")           ElseIf Dir(DestDir & "\" & v & "\" & v, vbDirectory) = "" Then       ret = Shell(MYCMD1 & """" & SourceDir & "\" & v & """" & " " & """" & DestDir & "\" & v & """")     End If   Next v End Sub

  • 現在ファイルを開いている全てのユーザー名を取得

    パソコン1に入っているアクセスファイル(accdb)に パソコン1とパソコン2で同時に開いています。 共有している状態です。 その際、現在ファイルを開いている全てのユーザー名を取得したいのですが http://okwave.jp/qa/q3589812.html を参考に ' // 標準モジュール Private Declare Function GetUserName Lib "ADVAPI32.dll" Alias "GetUserNameA" ( _     ByVal lpBuffer As String, _     ByRef nSize As Long _ ) As Long Private Const MAX_PATH As Long = 256 ' // Windows のログインユーザー名を取得する Public Function GetLoginUserName() As String   Dim sBuffer As String   sBuffer = String$(MAX_PATH, vbNullChar)   If CBool(GetUserName(sBuffer, MAX_PATH) > 0) Then     GetLoginUserName = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)   End If End Function Sub 使い方サンプル()   Dim sUserName As String      sUserName = GetLoginUserName()   MsgBox "USER: " & sUserName, vbInformation    End Sub を実行してみたのですが、それぞれ自分のユーザー名しか取得されません。 http://billyboy.blog81.fc2.com/blog-entry-157.html の Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _ (ByVal lpBuffer As String, _ nSize As Long) As Long Function GetLoginName() Dim strBuffer As String * 255, retValue As Long retValue = GetUserName(strBuffer, 255) GetLoginName = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1) End Function Sub sample() MsgBox GetLoginName() End Sub を実行しても同じです。 http://www.tsware.jp/tips/tips_013.htm も自分のユーザー名しか取得できません。 どれも標準モジュールに貼り付けました。 現在ファイルを開いているユーザー名を取得するにはどうすればいいでしょうか?

  • インプットボックスからファイルを開くようにしました。しかし、すでに開い

    インプットボックスからファイルを開くようにしました。しかし、すでに開いているか確認する項目がうまく作動しません。どのように記述するか教えて頂けませんでしょうか。 Sub Macro1() Dim wb As Workbook Dim psw As Boolean Dim fil As String fil = InputBox("ファイル名入力") For Each wb In Workbooks ’すでに開いているか確認。二重に開くのを防止 If wb.Name = "fil.xls" Then ’ここの部分がうまく作動してくれません。 psw = True Exit For End If Next wb If psw = False Then Workbooks.Open Path & "C:¥" & fil End If End Sub

専門家に質問してみよう