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

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

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Q&A

解決済

2回答

3595閲覧

他のEXCELファイルデータを取り込む際のシート名(文字列)の指定ができません。

yokoazu

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

integer

integerは、一般的に整数を表します。プラスやマイナス、ゼロもなりうる全ての数です。(例 : -2, -1, 0, 1, 2...)

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

0グッド

0クリップ

投稿2022/04/11 05:59

編集2022/04/11 15:21

下記URLを参考にしています。
リンク内容https://excel.kuuneruch.com/vba-excel-read/

リンク先のコードは、他のEXCELファイルデータを取り込む際のシート名が整数になっており整数型(Integer型)を使用しマクロを作成しています。
私がやりたい事は、シート名を文字列(String)にして実行可能にしたいです。

ですが、IntegerをStringに書き換えても型が一致しないというエラーになってしまいます。リンク先のコードをどのように修正したらよいのでしょうか。
初心者のため説明が下手で申し訳ありませんがご教示頂けますと幸いです。

’「取り込むEXCELファイルのパス」と「取り込むEXCELファイルのデータが存在するシートNO」を引数に持つEXCEL関数を作成 Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As Integer) As Variant Dim wb As Workbook Dim ws As Worksheet 'ワークブックを開く Set wb = Workbooks.Open(FilePath) 'シートを取得 Set ws = wb.Worksheets(SheetNo) 'データ入力されている範囲を取得する GetExcelData = ws.UsedRange 'ワークブックを閉じる wb.Close 'メモリー開放 Set ws = Nothing Set wb = Nothing End Function
’EXCELデータ取り込み関数を利用する関数を作成 Public Sub Test1() Dim var As Variant Dim FilePath As String Dim InSheetNo As Integer Dim OutSheetNo As Integer Dim OutCell As String With ThisWorkbook.Sheets(1) FilePath = .Range("B1") InSheetNo = .Range("B2") OutSheetNo = .Range("B3") OutCell = .Range("B4") End With '他のEXCELファイルデータを取り込む var = GetExcelData(FilePath, InSheetNo) Dim MaxRow As Long Dim MaxCol As Long '最大行数を取得する MaxRow = UBound(var, 1) '最大列数を取得する MaxCol = UBound(var, 2) '自ワークブックの1番目のシートのセルA1を基点に取り込んだデータを出力する ThisWorkbook.Sheets(OutSheetNo).Range(OutCell).Resize(MaxRow, MaxCol).Value = var End Sub

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

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

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

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

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

yokoazu

2022/04/11 06:04

コードは下記です。 IntegerをStringに書き換えてもうまくできませんでした。 Public Sub Test1() Dim var As Variant Dim FilePath As String Dim InSheetNo As Integer← ここをStringに書き換えました Dim OutSheetNo As Integer← ここをStringに書き換えました Dim OutCell As String With ThisWorkbook.Sheets(1) FilePath = .Range("B1") InSheetNo = .Range("B2")← 文字列でシート名を指定できず OutSheetNo = .Range("B3")← 文字列でシート名を指定できず OutCell = .Range("B4") End With '他のEXCELファイルデータを取り込む var = GetExcelData(FilePath, InSheetNo) Dim MaxRow As Long Dim MaxCol As Long '最大行数を取得する MaxRow = UBound(var, 1) '最大列数を取得する MaxCol = UBound(var, 2) '自ワークブックの1番目のシートのセルA1を基点に取り込んだデータを出力する ThisWorkbook.Sheets(OutSheetNo).Range(OutCell).Resize(MaxRow, MaxCol).Value = var End Sub
y_waiwai

2022/04/11 06:05

あなたのその実行できないというコードを提示しよう
y_waiwai

2022/04/11 06:06

コードは質問文を編集して追記してください コードは、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
bebebe_

2022/04/11 07:05

Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As Integer) As Variant 参考サイトのこの部分を Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As String) As Variant にはしていますか?
meg_

2022/04/11 10:31

VBAですか? 質問タグに「VBA」を追加した方が回答が付きやすくなるかと思います。
yokoazu

2022/04/11 15:24

皆さん、ご回答ありがとうございました。 初めて質問したため質問へのコード記載等わからず、ご指摘頂きありがとうございました。 また、bebebe_様にご回答いただいた内容で解決しました。回答をくださった皆様、こんな初歩的な質問にご回答くださり感謝いたします。ありがとうございました。
guest

回答2

0

自己解決

自己解決にて締めさせていただきます。
ありがとうございました!

投稿2022/04/11 15:27

yokoazu

総合スコア9

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

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

0

bebebe_様にご指摘頂いた以下修正で解決いたしました。
回答くださった皆様、ありがとうございました!

Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As Integer) As Variant

参考サイトのこの部分を

Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As String) As Variant

に修正し解決しました。

投稿2022/04/11 15:26

yokoazu

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問