下記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
コードは下記です。
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
あなたのその実行できないというコードを提示しよう
コードは質問文を編集して追記してください
コードは、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
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
にはしていますか?
VBAですか? 質問タグに「VBA」を追加した方が回答が付きやすくなるかと思います。
皆さん、ご回答ありがとうございました。
初めて質問したため質問へのコード記載等わからず、ご指摘頂きありがとうございました。
また、bebebe_様にご回答いただいた内容で解決しました。回答をくださった皆様、こんな初歩的な質問にご回答くださり感謝いたします。ありがとうございました。
回答2件
あなたの回答
tips
プレビュー