Q.会社の会計ソフトから出力されるテキストファイルをExcelに自動で取り込みたいのですがVBAで可能なのでしょうか?
もちろんVBAを使って可能です。
テキストファイルを開いていちいちコピー&ペーストですと手間なケースがありますので是非VBAのやり方を覚えてみましょう。
題材として、簡単な電話帳を取り上げてみます。
下記の内容のファイルを、c:\tmp フォルダに 電話帳.txt として作成します。
=== ファイル始まり
鈴木一郎,080-1111-2222,03-3333-4444
田中次郎,080-5555-6666,042-777-8888
佐藤花子,050-9999-1234,06-5678-9012
=== ファイル終わり
このようなカンマ「,」でデータを区切ったファイルの形式を”CSV形式”と呼びます。
さてファイルの準備ができたら、ExcelからVisual Basic Editorを開き、下記のプログラムを入力します。
そのさい、プログラムで FileSystemObject というオブジェクト(プログラム中★の部分)を使うために、「ツール」メニューの「参照設定」で「Microsoft Scripting Runtime」を参照設定しておきます。
Sub ReadTelephoneData()
Dim fso As New FileSystemObject ‘★
Dim file As file
Dim stream As TextStream
Dim lineData As Variant
Dim row As Integer: row = 1
Set file = fso.GetFile(“c:\tmp\電話帳.txt”)
Set stream = file.OpenAsTextStream
With stream
Do Until .AtEndOfStream = True
lineData = Split(.ReadLine, “,”)
Cells(row, 1).Value = lineData(0)
Cells(row, 2).Value = lineData(1)
Cells(row, 3).Value = lineData(2)
row = row + 1
Loop
.Close
End With
End Sub
プログラムが完成したら、「デバッグ」メニューの「VBAProjectのコンパイル」をして、エラーが出ないことを確認します。
シートの画面に戻り、「開発」リボン※の「マクロ」で、上記のプログラムの名称「ReadTelephoneData」を実行すると、シート上にテキストファイルの内容が出力されます。
とても簡単な作りですが、テキストファイルの列を増やしてみたり、Excelシート上の出力位置を変えてみたり(Cellsのところ)、いろいろ変えてみることで日常の作業に活かせるものが他にも意外にあるかも知れませんね。
※「開発」リボンが見えない場合は、下記の記事を参考にしてください。
https://www.office-kaiketsu.com/excel%ef%bc%88%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab%ef%bc%89%e3%83%9e%e3%82%af%e3%83%ad%e3%83%bbvba/%e3%83%9e%e3%82%af%e3%83%ad%e9%96%8b%e7%99%ba%e3%82%bf%e3%83%96%e8%a1%a8%e7%a4%ba%ef%bd%9c%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab2007/
Q.Excelの「マクロの記録」で行う処理を、VBAの処理で行うことはできますか。
可能です。なぜなら、Excelの「マクロの記録」で行った処理は、実はVBAのモジュールで保存されているからです。「マクロの実行」は、実際にはVBAを実行していることになります。この様子を実際に見てみましょう。
新しいブックを開き、「開発」リボン(※)から「マクロの記録」を実行し、以下のような操作を行ってください。(マクロ名は「Macro1」としてすすめます)
(1)セルA1を選択
(2)右クリックメニューから「コメントの挿入」を選択
(3)コメントの内容に「テスト」を記入
以上で「開発リボン」の「記録の終了」で終了させます。
VBAを開き、先ほどマク
ロを記録したブックの標準モジュール内に下記のようなVBAが出力されています。
Sub Macro1()
‘
‘ Macro1 Macro
‘
Range(“A1″).Select
Range(“A1″).AddComment
Range(“A1″).Comment.Visible = False
Range(“A1″).Comment.Text Text:=”テスト”
End Sub
セルにコメントを追加するVBAは「AddComment」であることがわかりますね。
したがってこのVBAコードを、別のVBAコードにコピー&ペーストすれば、コメントの追加処理を別のVBAで実行することができるようになります。
※「開発」リボンが表示されていない場合は、「リボンのユーザー設定」から表示させるように設定してください。
zp8497586rq
Q.VBAで行ごとの繰り返し処理などを行っていると処理が遅くて待ち時間が長くなることがあります。処理を速くする方法を教えてください。
VBAで処理が遅くなる場合、画面表示に時間がかかっている場合があります。
処理の途中経過の表示が必要でない場合、VBAでは、処理中に画面の表示をストップする命令があり、これを使用すると処理が早くなる可能性があります。
例えば、新規シートにコマンドボタンを貼り付け、以下のようなVBAを記述してください。
Private Sub CommandButton1_Click()
For i = 1 To 10000
Me.Range(“A1″).Value = i
Me.Range(“A1″).Font.ColorIndex = (i Mod 12)
Next
End Sub
これを実行すると、A1セルの表示が1~10000までカラフルにカウントアップされます。
このような大量の表示処理は、途中の表示過程を停止させることで、処理時間を短くできます。これを行うVBA命令が、Application.ScreenUpdatingです。
以下のようにコードを付
け足して実行し直してください。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False ‘←追加部分(画面表示の停止)
For i = 1 To 10000
Me.Range(“A1″).Value = i
Me.Range(“A1″).Font.ColorIndex = (i Mod 12)
Next
Application.ScreenUpdating = True ‘←追加部分(画面表示の停止解除)
End Sub
実行して頂けるとわかりますが、カウントアップの過程は見えず、最終結果の10000のみが表示されます。途中の表示にかかる処理時間が短縮されたため、処理時間が短くなったのがおわかり頂けると思います。
※最後に「Application.ScreenUpdating = True」として元の状態に戻してあげましょう。
ただし、画面表示以外で時間がかかっている場合は効果がありませんので、処理の内容を確認した上でお試しください。
zp8497586rq
Q.グラフアリアに書いた矢印などの図形を、グラフを移動したり、サイズ変更した場合に、連動して移動、サイズ変更する方法を教えてください。
グラフと書いた図形などをCtrlキーを押しながら全て選択、右クリックしてグループ化してみてください。
追随・連動して移動又はサイズ変更などできるようになると思います。
またグラフに図形を描画する場合は、グラフを選択後に、図形を
描画すると敢えてグループ化しなくても追随・連動して移動又はサイズ変更できるようになります。 cheap viagra
zp8497586rq
Q.Excel(エクセル)で、複数のセルに同じコメントを入れたいので、コメントだけをコピーする方法を教えてください。
Excelのコメント機能は、セルに付箋をつけてメモを残すようなイメージで利用できて、とてもニーズの高い機能です。
パソコン研修会の現場では、
「私たちの仕事(実務)では複数のセルに同じコメントを入れたいということもあり、コメントだけをコピーしたいのですがどうすればいいでしょうか?」
または
「同じコメントを複数のセルに挿入するにはどうすればいいのでしょうか?」
というようなご質問をいただくことが頻繁にあります。
例えば、右クリックしてコピーと右クリックして貼り付けなどでコピーアンドペーストすると、勿論コメントも一緒にコピーできますが、これではセルそのものがコピーされてしまいます。
コメント(のみ)をコピーするのは、下記の方法をご参照ください。
1. cheap viagra online コメントの挿入されているセルを選択
2.メニュー[編集]−[コピー]をクリック
3.コメントをコピーしたい先のセルを選択
4.メニュー[編集]−[形式を選択して貼り付け]をクリック
5.[形式を選択して貼り付け]ダイアログボックス内[貼り付け]欄の[コメント]オプションをチェック
6.[形式を選択して貼り付け]ダイアログボックスの[OK]ボタンをクリック
以上の操作でコメントだけをコピーすることができます。
しかし、貼り付けたい箇所(セル)多数ある場合には、少し手間がかかってしまいます。
コピーしたい先のセルがたくさんある場合は、とりあえず1つのセルに上記の操作でコピーをして、あとは同じ操作を繰り返す【F4】キーを使ってコピーするのがベストです。
皆さまも是非お試しください。
zp8497586rq