質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

9818閲覧

vb.netでのエラー 名前空間では有効ではないステートメントです

banianizm

総合スコア92

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/09/15 12:43

前提・実現したいこと

vb.netでエクセルを出力するプログラムを作成しています。
ネット上のコードをコピーしてそのまま使っているのですが、エラーになります。
解決方法、考え方を教えていただきたいです。
なお、VBに関しては初めて扱う言語ですので、専門用語をあまり使わずに教えていただければと思います。
以上、よろしくお願い致します。

発生している問題・エラーメッセージ

4行目で

名前空間では有効ではないステートメントです

該当のソースコード

vb.net

1Imports Microsoft.Office.Interop 2Imports System.Runtime.InteropServices 3 4Protected Sub ExcelCreate() 5 6 '定義 7 Dim app As Excel.Application = Nothing 8 Dim book As Excel.Workbook = Nothing 9 Dim sheet As Excel.Worksheet = Nothing 10 11 Try 12 'シートの作成 13 app = New Excel.Application() 14 app.Workbooks.Add() 15 book = app.Workbooks(1) 16 sheet = CType(book.Worksheets(1), Excel.Worksheet) 17 18 'シート名を設定する 19 sheet.Name = "シート1" 20 21 'セルに値をセットする(セル名で指定する場合) 22 sheet.Range("A1").Value = "ABC" 23 24 'セルに値をセットする(番号で指定する場合) 25 sheet.Cells(2, 1) = "DEF" '2行・1列目(A2セル) 26 27 '保存する 28 book.SaveAs("C:\sample.xlsx") 29 30 Catch ex As Exception 31 Throw ex 32 33 Finally 34 'オブジェクト解放 35 app.Quit() 36 Marshal.ReleaseComObject(sheet) 37 Marshal.ReleaseComObject(book) 38 Marshal.ReleaseComObject(app) 39 40 End Try 41End Sub

試したこと

エラーの意味が」良くわからないので試すことができません

補足情報(FW/ツールのバージョンなど)

vb2019でのエラーです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenshirou

2019/09/18 02:11

「ネット上のコードをコピーして」とのことですが、コピー元のサイトをご教示頂けますか。 どのような掲載内容かは分かりませんが、そのコードを活用するためには、ある程度のスキルが必要かも知れません。
banianizm

2019/09/22 13:07

ありがとうございます。 自己解決できました。
guest

回答1

0

ベストアンサー

SubやFunctionはモジュールの中やクラスの中等に記述しなければなりません。
Protectedとなっているのでクラス内での記述になるかと思いますが、そのコードのサイトには解説はなかったのでしょうか?

投稿2019/09/15 13:01

YAmaGNZ

総合スコア10258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

banianizm

2019/09/15 13:18

ありがとうございます。 解説はありませんでした。 そうすると、クラスを作り、これらをクラスの中に入れればよいということですか?
YAmaGNZ

2019/09/15 15:56

どのように実装するかについては貴方次第です。 分からないのであれば、Protecedにせずモジュール内に書くのがいいでしょう。 今後ここからどのような処理を作成されるのか分かりませんがMicrosoft.Office.Interop.Excelを使用する場合は解放漏れがあるとExcelのプロセスが残りますので注意してください。 ただエクセルファイルを作成したいだけなのであれば、他のライブラリを使用する方法のほうがいいかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問