Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
WebアプリケーションからのExcel操作について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30483#CommentId83918
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るきお
 (社会人)
投稿日時
2020/4/12 12:50:30
Webフォームでしょうか?
>Dim _xlsFile As String = Server.MapPath("~/prt/表.xlsx")
最後の x が全角文字になっていますので半角に修正して現象が再現するかご確認ください。
解決しない場合は、アプリケーションルートパス( ~ )の使い方が間違っている可能性を疑います。
その疑いを確認するためにServer.MapPathではなく、フルパスを指定することで解決するかご確認ください。
例
Dim _xlsFile As String = "C:\inetpub\wwwroot\プロジェクト名\prt\表.xlsx"
なお、投稿の内容からWebアプリケーションのデプロイについて理解されていないような印象をうけました。
詳しくない場合は、Webアプリで使用するファイルはすべてVisual Studioのプロジェクトに追加してください。(動的に作成されるものはこれができないですがフォルダーくらいは追加できるはずです。)
こうすることでアプリケーションルートから見たパスが固定になるのでやりやすいです。
~は、アプリケーションルートパスを表しており、Webアプリケーションの実行方法により異なる場合があります。
※そのため、パスが何かおかしいと感じたら生成されたパス(_xlsFile)をLabelに表示するなどして実際に確認してみることをお勧めします。
そして、プロジェクトを右クリックして「発行」を使って、Webアプリケーションをデプロイしてください。
たくみさんが管理しているIIS(Webサーバー)で動作させるには発行先をフォルダーにし、IISのアプリケーションとして指定されているフォルダーに直接発行するとすぐにIISからアクセスできるようになります。
無料で使えるAzureにデプロイすると、世界中どこからでもすぐにアクセスできるので便利です。
http://rucio.o.oo7.jp/Note/Note002AzureFreeAppService.htm
※Webアプリケーションを動作させる方法は他にもあります。
今回の件とは関係ありませんが、Webアプリケーション内でExcel.ApplicationをCreateObjectすることは禁じ手です。Webアプリケーションは複数の人が同時にアクセスしてマルチスレッドで実行される場合があるのに対し、Excel.Applicationはマルチスレッドをサポートしていなかったと思います。また、ライセンス上もこのような手段で多人数が使う使い方は許可されていなかったと思います。
(もし、Webアプリケーションであるにもかかわらず使用する人がたくみさんだけであればもしかしてOKかもしれません)
一般的にはWebアプリケーションでExcelを操作したい場合は、別のライブラリを使用します。本家Excelではないので機能や使い方が違うのですが、xlsxファイルを読み書きすることはできます。
有名どころはClosedXMLです。
https://www.atmarkit.co.jp/ait/articles/1810/24/news016.html
それから、コードが抜粋されているのでわかりませんが、ExcelをCOMで操作する場合、開放処理などがいろいろ面倒ですのでこの点もお気をつけください。