• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA/HTML連携について困っております)

VBA/HTML連携でエクセルデータをCSV形式で保存し、WEB上に表示する方法

このQ&Aのポイント
  • VBAを使用してエクセルデータの必要な部分をCSV形式で保存する方法を完了しました。しかし、サーバーフォルダ内のCSVデータを読み込んでWEB上に表示する方法がわかりません。
  • エクセルデータをCSV形式で保存するVBAの作業は終わりましたが、サーバーフォルダ内のCSVデータをWEB上に表示する方法についてわからないことがあります。
  • VBAを使ってエクセルデータをCSV形式で保存する方法はできましたが、サーバーフォルダ内のCSVデータをWEB上で表示する方法がわかりません。

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (776/5747)
回答No.3

回答No.1です。 WEB上に表示、とのことでしたが、単純にWEBブラウザで表示できるようにするとの解釈でHTMLファイルを作ればすむと思って回答したのですが、それでよかったでしょうか。 それとも、組織内だけで見えるWEBサーバーを立ち上げておいて閲覧してもらう、あるいは組織外からも見えるWEBサーバーで世界中からも閲覧してもらうようにするのでしょうか。WEBサーバーがあるのでしたらそれようのプログラム言語を使って表示するようなこともできます。 WEBサーバーになると話しが大きくなるのでそこまでではないと思って、サーバーの共有フォルダからHTMLファイルを開いてもらえばWEBブラウザ表示はできると思っていました。 でもそれだとCSVファイルも共有フォルダからコピーしてもらえばすむ話しかなと思ったりしています。 CSVデータはフォルダ内の全CSVファイルを読み込むとのことですが、WEBに表示するのと同じようにひとつのCSVファイルに保存することはできますか。あるいはひとつのエクセルシートにまとめることができますか。 回答No.2さまのような方法でひとつのCSVファイルに保存していただけれると思います。 ひとつにまとまっていれば、HTMLファイルの作成は簡単に作成することができそうです。 先の回答ではHTMLタグをテキスト出力してHTMLファイルを作る提案をしましたが、それよりも、ひとつになったCSVファイルかエクセルファイルを開いて、名前を付けて保存でWebページ(*.htm,*.html)を選ぶとHTMLファイルとして保存できます。 VBAで書くとこんな感じです。 ---- ActiveWorkbook.SaveAs Filename:="保存先フォルダ名\保存ファイル名.htm", FileFormat:=xlHtml ---- ちなみに、CSVの保存も、ひとつのエクセルシートにまとめられていれば、こんな感じでできます。 ---- ActiveWorkbook.SaveAs Filename:="保存先フォルダ名\保存ファイル名.csv", FileFormat:=xlCSV ---- できあがった、HTMLファイルをWEBブラウザで開いていただければ、それなりに見えるものになっているかと思います。 ダウンロード用のリンクについては以下のような手順です。 保存ファイル名.filesというフォルダも作成されているので、その中のsheet001.htmをテキストエディタで開く。 もしかしたらsheet001.htmの名前ではないかも知れませんが、見覚えのあるシート名か何かだと思います。 開いたら<body link="~" vlink="~">こんな行があるので探す。 その下に<a href="../保存ファイル名.csv">ダウンロード</a>を追加する。 とは言ったものの、一回きりの手作業ならこれでいいのですが、ある程度の自動化を考えられているのでしたら、この作業もVBAで作るとか、全然違う方法でやっていくか検討する必要があるのかも知れません。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

質問には、3つの課題が挙げられている、と解した。 (1)エクセルデータの必要な部分を切り出してCSV形式で保存する    質問者で完成済み,とか。 >必要な部分を切り出して、はどういう風にしたのですか、個人的興味で。 操作者に、セル範囲を選ばせた? (2)そこからフォルダ内の全CSVファイルを読み込み(吸い上げ) 「そこから」とはフォルダ名は決まっていて、そのフォルダ名はプログラムの なかで指定し、その指定フォルダ名の中のファイルを対象とする、でよいのか。 (3)WEB上に表示するといったことが、どうしてもわかりません(※2番、3番 >※2番、3番とはどのことを言っている?質問文は、箇条書きにしてないじゃない? (3)は面倒。 == (2)について、参考になれば、と挙げてみる。ややこしければ後免。スルーされたい。 下記は、数千の多数のエクセルファイルがあり、を念頭に組んだもの。 CSVファイル向けに修正してください。 下記は、個人的に、昨日たまたま、やってみた例があるので下記に挙げる。 参考になればよいが。 FSO利用法の例です。For Each Next利用法です。他にDir関数を使う方法が別にあり。 下記はエクセルファイルのシート名を書き出すコードです。 本件では、拡張子を、CSVにして、関連の場所を修正すれば、参考になるかも。 コメント行は、理解後は、不要分は削除してください。 ===== Sub test01() 'シート名リストVBA.xlsm  <====小生が昨日別課題で作ったVBAコード例の名 n = 1 shnm = "" '-------- Set objFSO = CreateObject("Scripting.FileSystemObject") '--- Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set tso = objFSO.OpenTextFile("シート名1.csv", ForWriting, True) 'アウトプットファイル。CSVファイルです。 '---- objStartFolder = "C:\Users\XXX\Documents" '最後\不要 Set objFolder = objFSO.GetFolder(objStartFolder) '---フォルダー内のファイル1つ1つを見に行って For Each objfile In objFolder.Files ' MsgBox objfile strExt = objFSO.GetExtensionName(objfile) '拡張子を調べる 'MsgBox strExt If strExt = "xlsx" Or strExt = "xlsm" Then '拡張子がxlsx、xlsmのファイルに付いて '<===CSVに変える 'MsgBox "Excell " & strExt 'If n > 5 Then GoTo p1 ' MsgBox objfile.Name 'Wscript.Echo objFile.Name '--- 'ファイルを開く ' filepath = objfile ' MsgBox filepath ' CreateObject("Shell.Application").ShellExecute filepath ' MsgBox "AA" '---ファイルを開く Set bk = Workbooks.Open(Filename:=objfile, ReadOnly:=True) <===CSVファイルの中身を見るなら、そのテキストファイルのOpenに変える Application.ScreenUpdating = False ActiveWindow.Visible = False '---ファイル名書き出し shnm = "" shnm = shnm & objfile.Name & "," '---シート名の探索 ’For Each sh In Worksheets '---シート名データを追加、書き出し ’ shnm = shnm & sh.Name & "," ’Next '----- 'shnm = shnm & vbCrLf tso.WriteLine (shnm)    ==テキストファイル名の書き出しだけになっている '----開いていたブックを保存せずに閉じる 省時間のため。 ’Workbooks(bk.Name).Close SaveChanges:=False <===テキストファイルを開いた場合は、Closeに変える End If p1: n = n + 1 ’ If n = 20 Then Exit For ’途中で止められるように。テスト時用。 Next '---- tso.Close MsgBox "処理終了" End Sub

  • dell_OK
  • ベストアンサー率13% (776/5747)
回答No.1

2のWEBに表示と言うのは、サーバーフォルダ内にHTMLファイルを作成しておき、クライアントからはそのHTMLファイルをブラウザで見る、と言うことでしょうか。 それでしたら、保存したCSVはダウンロード用ファイルにするとして、CSVの保存と同時かその処理の後で表示用のHTMLファイルも作成されたらいいと思います。 <table>タグで表示用のHTMLファイルを作り、加えて、その前か後にダウンロード用の<a>タグでリンクをつければできそうです。 3はそのリンクをクリックすればダウンロードできるようになります。

関連するQ&A